• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

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

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

SaschaL

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

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

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

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


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

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

Стр - это по сути строка табличной части, нафига еще строки кода ваять?
 
;) В чем просматривается эта кривизна?
 
Можно так :
Для каждого Тек Из ТабСтр Цикл
Сообщить(Тек.Сотрудник);
КонецЦикла;

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

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

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

Курс AD