Как универсально перебирать табличные части документа? Ошибка Итератор для значения не определен

1. Rega 23.10.21 08:58 Сейчас в теме
Доброго дня!

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

"Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Итератор для значения не определен
{Документ.Продажа.МодульОбъекта(13)}: Для Каждого СтрокаТабЧасти Из ТабличнаяЧастьДокумента Цикл
"

Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
		Движения.ДоходПоНоменклатурам.Записывать = Истина;
		Для Каждого СтрокаТабЧасти Из ТабличнаяЧастьДокумента Цикл
			Движение = Движения.ДоходПоНоменклатурам.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
			Движение.Период = Дата;
			Движение.Номенклатура = СтрокаТабЧасти.Номенклатура;
			Если ВалютныйУчет=Истина Тогда
				Движение.Сумма =СтрокаТабЧасти.Сумма*ТекущийКурс; 
			Иначе
				Движение.Сумма = СтрокаТабЧасти.Сумма;
			КонецЕсли; 
		КонецЦикла;
	КонецЦикла; 
Показать


Как исправить?
Прикрепленные файлы:
Найденные решения
2. spacecraft 23.10.21 09:14 Сейчас в теме
(1) почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.

Ну а так, как вариант:
Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
        Движения.ДоходПоНоменклатурам.Записывать = Истина;
        Для Каждого СтрокаТабЧасти Из ЭтотОбъект[ТабличнаяЧастьДокумента.Имя] Цикл
...
shalupov61; t278; Rega; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 23.10.21 09:14 Сейчас в теме
(1) почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.

Ну а так, как вариант:
Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
        Движения.ДоходПоНоменклатурам.Записывать = Истина;
        Для Каждого СтрокаТабЧасти Из ЭтотОбъект[ТабличнаяЧастьДокумента.Имя] Цикл
...
shalupov61; t278; Rega; +3 Ответить
3. FatPanzer 23.10.21 09:30 Сейчас в теме
(2) Шаман! А я всегда думал, что строки документов хранятся прямо в Метаданных!!!
6. Rega 23.10.21 10:02 Сейчас в теме
(3) Ответ не мне, но позволю комментарий. Кажется вы намекаете что Метаданные дают доступ к структурированным идентификаторам таблиц и их реквизитов и не дают доступа к хранящимся данным. Да, наверное это было бы слишком просто или просто невозможно логически
10. FatPanzer 23.10.21 13:14 Сейчас в теме
(6) Нет, я намекаю на то, что если скушать ценник с надписью "Сыр" или (о, боже!) фотографию пармезана - вряд ли вы почувствуете вкус сыра.
11. Rega 23.10.21 18:25 Сейчас в теме
(10) боюсь моих познаний не хватит понять эту изысканную аллегорию. Хорошо что для вас это не главное было при написании, главное наверное показать на сколько вы интеллектуально развитее) Похоже мне повезло что вы вообще отвечаете в моей теме. Набраться вашей мудрости это так себе удовольствие конечно из-за злобы вашей, но горькая правда о моей умственной неполноценности все же дошла до меня.
FatPanzer; +1 Ответить
12. FatPanzer 23.10.21 18:27 Сейчас в теме
13. Rega 23.10.21 18:55 Сейчас в теме
(12) Чтож раз теперь у вас все прекрассно, тему можно закрывать)
4. Rega 23.10.21 09:56 Сейчас в теме
(2) Спасибо большое,

(2)
почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа


Захотелось попробовать что-то универсальное.

Можно было бы создать СписокЗначений, имеете в виду, с идентификаторами таб частей и перебрать его?
5. spacecraft 23.10.21 10:01 Сейчас в теме
(4)
Можно было бы создать СписокЗначений, имеете в виду, с идентификаторами таб частей и перебрать его?

Да нет, просто обращаться к табличным частям напрямую:

Для Каждого СтрТЧ Из ЭтотОбъект.НужноеИмяТабличнойЧасти Цикл


Вместо НужноеИмяТабличнойЧасти подставить свое значение, как называется табличная часть. ЭтотОбъект так же можно опустить, но оставил для наглядности.
7. Rega 23.10.21 10:08 Сейчас в теме
(5) Мне так конструктор движений сделал. Тогда два цикла с повторяющимся кодом получается, вроде как не по стандартам.
Прикрепленные файлы:
8. spacecraft 23.10.21 10:30 Сейчас в теме
(7) это решается выносом дублируемого кода в отдельную процедуру/функцию. Но имена табличных частей нужно самим указывать, а то может получиться ситуация, когда добавится новая табличная часть, которую нужно обрабатывать отдельно. И в итоге можно получить проблемы.
9. Rega 23.10.21 10:56 Сейчас в теме
(8)
а в отдельную процедуру/функцию. Но имена табличных частей нужно самим указывать, а то может получиться ситуация, когда добавится новая табличная часть, которую нужно обрабатывать отдельно. И в итоге можно получить проблемы.
Понятно👍
14. gybson 25.10.21 09:15 Сейчас в теме
(7)По стандартам надо данные выбрать запросом. В данном случае два запроса к разным ТЧ с объединением в запросе. Результат загрузить в движения.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот