Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 09:05

Колекция - обход табличной части документа

Автор 1 Pers, 30 сен 2011, 18:43

0 Пользователей и 1 гость просматривают эту тему.

1 Pers

Ой, подскажите дилетанту. :wacko:
Вопрос: Как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным.

Я так понял, что это возможно с помощью объекта встроенного языка, который является коллекцией.

Что такое эта самая коллекция - я так понял, это набор стандартных команд для ситуаций.

А пользуется этой самой коллекцией Конструктор движений.

Так это или не так? :trhregerhg:

Андрей Федотов

Вы лучше скажите что вы хотите сделать с этой табличной частью.
Можно вытащить данные запросом, можно перебрать данные в процедуре.
Вариантов много

1 Pers

Мне просто на вопрос ответить надо: Как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным? :dfbbdrfb:
1С: ПРЕДПРИЯТИЕ 8.2 Практическое пособие разработчика Занятие 6 :befhbt:

Вот я бы и хотел этот момент прояснить.

В инете такой ответ:
Как обойти строки табличной части?

Обход строк табличной части проще всего реализуется с помощью цикла "Для Каждого СтрокаТЧ Из ТабЧасть Цикл". При этом переменной цикла будет являться не номер строки, а вся строка как объект. Если нужен еще номер строки, то можно использовать свойство НомерСтроки или добавить переменную и инкрементировать ее в теле цикла. Есть также возможность использовать обычный цикл "Для...По..Цикл", но необходимо помнить, что индекс 1-го элемента коллекции всегда равен 0 (нулю).


--------------------------------------------------------------------------------------------------------------------------

На сколько я понял, в свойствах документа, во вкладке движение, при выборе накопительного регистра, появляется возможность пользоваться Конструктором движения, и вот этот конструктор пользуется Коллекцией ;), что в свою очередь представляет собой готовые команды, настраиваемые мастером. Вообщем, вот что он делает:
Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   // регистр ОстаткиМатериалов Расход
   Движения.ОстаткиМатериалов.Записывать = Истина;
   Для Каждого ТекСтрокаПереченьНаменклатуры Из ПереченьНаменклатуры Цикл
      Движение = Движения.ОстаткиМатериалов.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.Материал = ТекСтрокаПереченьНаменклатуры.Номенклатура;
      Движение.Склад = Склад;
      Движение.Количество = ТекСтрокаПереченьНаменклатуры.Количество;
   КонецЦикла;

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
___________________________________________________________________________________________________________________

Я хотел бы прояснить для себя, что такое коллекция и с помощью ее ли, можно обойти табличную часть документа. :dfbbdrfb:

Андрей Федотов

За теорией не ко мне)
А так - табличная часть "ПереченьНоменклатуры" из вашего примера обходится в цикле. Причем "ТекСтрокаПереченьНаменклатуры" содержит как написано не номер строки, а набор значений (реквизиты табличной части), к которым вы можете обращаться через точку.
Т.к. обработка проведения у Вас находится в модуле объекта, в котором содержится данная ТЧ - это самый простой добраться к значениям табличной части

Dethmontt

Коллекция и есть табличная часть в вашем случае
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск