Итератор для значения не определен

1. user2101303 18.12.24 16:59 Сейчас в теме
Добрый вечер, почему то выходит ошибка: Итератор для значения не определен
Для Каждого Товар Из ТаблицыПоСНО[СНО] Цикл

Понял что с типами где то ошибку допустил, понять не могу где(
Процедура РазделитьСно_Сервер()  
	
	МВТ = Новый МенеджерВременныхТаблиц;                                                                                        	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МВТ;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
		|	РеализацияТоваровУслугТовары.Количество КАК Количество,
		|	РеализацияТоваровУслугТовары.Цена КАК Цена
		|ПОМЕСТИТЬ ВТ_Товары
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары";
	
	РезультатЗапроса = Запрос.Выполнить();
	                                               	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МВТ;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Товары.Номенклатура КАК Товар, 
		|	Товары.Цена КАК Цена,
		|	Товары.Количество КАК Количество,
		|	СНОПоТоварам.СНО КАК СНО
		|ИЗ
		|	ВТ_Товары КАК Товары
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СНОПоТоварам КАК СНОПоТоварам
		|		ПО Товары.Номенклатура = СНОПоТоварам.Номенклатура";
	
	Результат = Запрос.Выполнить().Выбрать();   

    ТаблицыПоСНО = Новый Соответствие;
    Пока Результат.Следующий() Цикл
        Если ТаблицыПоСНО.Получить(Результат.СНО) = Неопределено Тогда
            ТаблицыПоСНО.Вставить(Результат.СНО, Новый ТаблицаЗначений);
            ТаблицыПоСНО[Результат.СНО].Колонки.Добавить("Номенклатура");
            ТаблицыПоСНО[Результат.СНО].Колонки.Добавить("Количество");
            ТаблицыПоСНО[Результат.СНО].Колонки.Добавить("Цена");
        КонецЕсли;
        НоваяСтрока = ТаблицыПоСНО[Результат.СНО].Добавить();
        НоваяСтрока.Номенклатура = Результат.Товар;
        НоваяСтрока.Количество = Результат.Количество;
        НоваяСтрока.Цена = Результат.Цена;
    КонецЦикла;

    Для Каждого СНО Из ТаблицыПоСНО Цикл
        НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
        Для Каждого Товар Из ТаблицыПоСНО[СНО] Цикл
            НоваяСтрока = НовыйДокумент.Товары.Добавить();
            НоваяСтрока.Номенклатура = Товар.Номенклатура;
            НоваяСтрока.Количество = Товар.Количество;
            НоваяСтрока.Цена = Товар.Цена;
        КонецЦикла;
        НовыйДокумент.НалогообложениеНДС = СНО;
        НовыйДокумент.Записать();
	КонецЦикла;     
	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
2. user2107191 18.12.24 17:07 Сейчас в теме
Ну вот ты и добрался до этой ошибки, как я и обещал.
Ты ждешь, что СНО у тебя это ссылка, а это не Ссылка. Это КлючИЗначение.
Для Каждого СНО Из ТаблицыПоСНО Цикл
Почитай что является элементом коллекции Соответствие.
Sashares; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RustamZz 18.12.24 17:10 Сейчас в теме
(1) К программисту обратитесь, а то тут какой абсурд написан.
4. user2107191 18.12.24 17:14 Сейчас в теме
(3) Человек учится... Ясен пень, что здесь один запрос нужен с одной итоговой группировкой, и обход результата по группировкам.
Но и такой опыт полезен - работа с соответствиями.

С запросами он конечно пипец начудил - результат его удивит, когда именно этот алгоритм заработает.
Но это тоже познавательный урок будет.
5. user2101303 18.12.24 17:20 Сейчас в теме
(4) Спасибо, я только сейчас понял это, в временную таблицу я засунул по сути тоже самое если бы, просто сделал из документа сразу... сам себя закопал, пока прошлую ошибку исправлял)
2. user2107191 18.12.24 17:07 Сейчас в теме
Ну вот ты и добрался до этой ошибки, как я и обещал.
Ты ждешь, что СНО у тебя это ссылка, а это не Ссылка. Это КлючИЗначение.
Для Каждого СНО Из ТаблицыПоСНО Цикл
Почитай что является элементом коллекции Соответствие.
Sashares; +1 Ответить
6. user2101303 18.12.24 17:58 Сейчас в теме
(2) Спасибо, исправил этот момент)
 Для Каждого СНО Из ТаблицыПоСНО Цикл
        НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
        Для Каждого Товар Из СНО.Значение Цикл
            НоваяСтрока = НовыйДокумент.Товары.Добавить();
            НоваяСтрока.Номенклатура = Товар.Номенклатура;
            НоваяСтрока.Количество = Товар.Количество;
            НоваяСтрока.Цена = Товар.Цена;
		КонецЦикла; 
		НовыйДокумент.Дата = ТекущаяДата();
        НовыйДокумент.НалогообложениеНДС = СНО;
        НовыйДокумент.Записать();
	КонецЦикла;  
Показать

Но насколько я понял, мой запрос берёт тч из всех документов реализации? Пытался делать выгрузкой, он просит временную таблицу, сейчас думаю делать без ВТ, а просто из документа с условием где ссылка объекта = ссылке документа, хотя бы верно думаю?
7. user2107191 18.12.24 18:00 Сейчас в теме
(6)
мой запрос берёт тч из всех документов реализации?
Ага...
хотя бы верно думаю?
Направление - да, тёплое.
8. user2101303 18.12.24 18:35 Сейчас в теме
(7) Можете пожалуйста подсказать? Как получить ссылку на текущий открытый документ, который не записан ещё, точнее на его ТЧ?
ЭтотОбъект.Ссылка, Объект.Ссылка, Объект.Товары.Ссылка пробовал, не хочет
работать
Просто я ставлю условие, что Док.Товары.Ссылка = &Ссылка, а вот что в параметр передать не получается
Пробовал Док.Ссылка, но вроде бы правильно брать именно Док.Товары.Сссылка
9. user2107191 18.12.24 18:36 Сейчас в теме
(8)
Как получить ссылку на текущий открытый документ, который не записан ещё, точнее на его ТЧ?
Ссылка - это идентификатор объекта в БД.
Если документ не записан в БД - то что ты хочешь оттуда получить запросом? Там его нет.
но вроде бы правильно брать именно Док.Товары.Сссылка
Неправильно. У табличной части не существует ссылки.
Оставьте свое сообщение

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