Доброго дня!

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

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

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

Как исправить?
---
почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.

Ну а так, как вариант:

```1c
    Для каждого ТабличнаяЧастьДокумента Из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
    Движения.ДоходПоНоменклатурам.Записывать = Истина;
    Для Каждого СтрокаТабЧасти Из ЭтотОбъект[ТабличнаяЧастьДокумента.Имя] Цикл
    ...
```
---
почему бы не обращаться к табличным частям документа напрямую, находясь в модуле объекта документа? Ведь имена их известны.

Ну а так, как вариант:

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

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

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

Можно было бы создать СписокЗначений, имеете в виду, с идентификаторами таб частей и перебрать его?
---
Можно было бы создать СписокЗначений, имеете в виду, с идентификаторами таб частей и перебрать его?
Да нет, просто обращаться к табличным частям напрямую:

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

Вместо НужноеИмяТабличнойЧасти подставить свое значение, как называется табличная часть. ЭтотОбъект так же можно опустить, но оставил для наглядности.
---
Мне так конструктор движений сделал. Тогда два цикла с повторяющимся кодом получается, вроде как не по стандартам.
---
это решается выносом дублируемого кода в отдельную процедуру/функцию. Но имена табличных частей нужно самим указывать, а то может получиться ситуация, когда добавится новая табличная часть, которую нужно обрабатывать отдельно. И в итоге можно получить проблемы.
---
а в отдельную процедуру/функцию. Но имена табличных частей нужно самим указывать, а то может получиться ситуация, когда добавится новая табличная часть, которую нужно обрабатывать отдельно. И в итоге можно получить проблемы. Понятно👍
---
По стандартам надо данные выбрать запросом. В данном случае два запроса к разным ТЧ с объединением в запросе. Результат загрузить в движения.