Как универсально перебирать табличные части документа? Ошибка Итератор для значения не определен
Доброго дня!
Хочу обойти две табличные части в документе циклом для каждого, потом перебрать строки, но похоже неправильно обращаюсь, так как выходит ошибка
"Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Итератор для значения не определен
{Документ.Продажа.МодульОбъекта(13)}: Для Каждого СтрокаТабЧасти Из ТабличнаяЧастьДокумента Цикл
"
Как исправить?
Хочу обойти две табличные части в документе циклом для каждого, потом перебрать строки, но похоже неправильно обращаюсь, так как выходит ошибка
"Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Итератор для значения не определен
{Документ.Продажа.МодульОбъекта(13)}: Для Каждого СтрокаТабЧасти Из ТабличнаяЧастьДокумента Цикл
"
Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
Движения.ДоходПоНоменклатурам.Записывать = Истина;
Для Каждого СтрокаТабЧасти Из ТабличнаяЧастьДокумента Цикл
Движение = Движения.ДоходПоНоменклатурам.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = СтрокаТабЧасти.Номенклатура;
Если ВалютныйУчет=Истина Тогда
Движение.Сумма =СтрокаТабЧасти.Сумма*ТекущийКурс;
Иначе
Движение.Сумма = СтрокаТабЧасти.Сумма;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПоказатьКак исправить?
Прикрепленные файлы:


Найденные решения
(1) почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.
Ну а так, как вариант:
Ну а так, как вариант:
Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
Движения.ДоходПоНоменклатурам.Записывать = Истина;
Для Каждого СтрокаТабЧасти Из ЭтотОбъект[ТабличнаяЧастьДокумента.Имя] Цикл
...
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.
Ну а так, как вариант:
Ну а так, как вариант:
Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
Движения.ДоходПоНоменклатурам.Записывать = Истина;
Для Каждого СтрокаТабЧасти Из ЭтотОбъект[ТабличнаяЧастьДокумента.Имя] Цикл
...
(10) боюсь моих познаний не хватит понять эту изысканную аллегорию. Хорошо что для вас это не главное было при написании, главное наверное показать на сколько вы интеллектуально развитее) Похоже мне повезло что вы вообще отвечаете в моей теме. Набраться вашей мудрости это так себе удовольствие конечно из-за злобы вашей, но горькая правда о моей умственной неполноценности все же дошла до меня.
(4)
Да нет, просто обращаться к табличным частям напрямую:
Вместо НужноеИмяТабличнойЧасти подставить свое значение, как называется табличная часть. ЭтотОбъект так же можно опустить, но оставил для наглядности.
Можно было бы создать СписокЗначений, имеете в виду, с идентификаторами таб частей и перебрать его?
Да нет, просто обращаться к табличным частям напрямую:
Для Каждого СтрТЧ Из ЭтотОбъект.НужноеИмяТабличнойЧасти Цикл
Вместо НужноеИмяТабличнойЧасти подставить свое значение, как называется табличная часть. ЭтотОбъект так же можно опустить, но оставил для наглядности.
(7) это решается выносом дублируемого кода в отдельную процедуру/функцию. Но имена табличных частей нужно самим указывать, а то может получиться ситуация, когда добавится новая табличная часть, которую нужно обрабатывать отдельно. И в итоге можно получить проблемы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот