• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

1С 8.2, обход табличной части формы в цикле

  • Автор темы SaschaL
  • Дата начала
S

SaschaL

Добрый день!
Подскажите как обойти табличную часть формы обработки в цикле.
Объясняю подробно, есть форма обработки, на данной форме имеется табличная часть ТабСотр, я пытаюсь обойти данную табличную часть в цикле

Код:
Для Каждого Стр из ТабСотр цикл
ТекСтр = ЭлементыФормы.ТабСотр.ТекущиеДанные;
Сообщить(ТекСтр.Сотрудник);
КонецЦикла;

ТекСтр.Сотрудник - это поле таблично части ТабСотр
При этом выводиться сотрудник на котором стоит курсов в этой табличной части, но количество сообщений соответствует количеству строк в табличной части.
 
K

KiR

ну во первых - отладчик в помощь! посмотреть надо меняется ли значение ТекСтр.Сотрудник, да и вообще не одинаков ли он во всей Таблице? очень похоже что программа отрабатывает правильно
 
P

puh14

ЭлементыФормы.ТабСотр.ТекущиеДанные - всегда будет тебе возвращать текущую строчку. Подсказка - а зачем ты цикл делал и что такое переменная стр?
 
K

KiR

puh14, СТР - это по идее итератор. цикл - видимо автор хочет получить некое значение каждой строки. получается ошибка в ТекСтр = ЭлементыФормы.ТабСотр.ТекущиеДанные;
т.е. программа отрабатывает правильно, что и требовалось доказать :(
 
S

SaschaL

Всем спасибо решение проблемы нашел сам.

Вот код:
Код:
Для Каждого Стр из ТабСотр цикл			  // получаем в цикле строки табличной части
ТекСтр = ЭлементыФормы.ТабСотр.ДанныеСтроки(Стр);
Сообщить(ТекСтр.Сотрудник);
КонецЦикла;


А вот метод ЭлементыФормы.ТабСотр.ТекущиеДанные возвращает значение, только одно и тоже причем количество раз возвращаемого значения соответствует количеству строк в таблице. Причем значение которое программа возвращает он берет из строки в которой стоит курсор.

Всем спасибо, вопрос можно считать закрытым
 
P

puh14

Эхх, не догадался - достаточно было Сообщить(Стр.Сотрудник);

Стр - это по сути строка табличной части, нафига еще строки кода ваять?
 
S

SaschaL

;) В чем просматривается эта кривизна?
 
U

unknown181538

Можно так :
Для каждого Тек Из ТабСтр Цикл
Сообщить(Тек.Сотрудник);
КонецЦикла;

можно так:
Для каждого тек Из ЭлементыФормы.ТабСтр Цикл
Сообщить(Тек.ТекущиеДанные.Сотрудник);
КонецЦикла;
 
O

OlegVik

Код:
можно так:
Для каждого тек Из ЭлементыФормы.ТабСтр Цикл
Сообщить(Тек.ТекущиеДанные.Сотрудник);
КонецЦикла;

В данном случае будет ошибка инитиатор не определен
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!