Не заходит в цикл обхода таблицы значений

1. user1619761 17.02.22 12:32 Сейчас в теме
Доброго времени суток. Есть запрос к таблице значений, но столкнулся с проблемой: отладчик просто пропускает цикл, зайдя в его начало сразу перескакивает на конец процедуры. Подскажите, пожалуйста, в чем может быть проблема? ЗЫ Таблица значений не пустая.
Запрос = Новый Запрос;
	МенеджерВТ = Новый МенеджерВременныхТаблиц;
	Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
	Запрос.УстановитьПараметр("ВнешняяТЗ", ТаблицаЗапроса);
	Запрос.УстановитьПараметр("МассивКодов", МассивКодов);
	Запрос.Текст = 
	"Выбрать
	|ВнешняяТЗ.Номенклатура Как Номенклатура,
	|ВнешняяТЗ.КодНоменклатуры Как КодНоменклатуры,
	|ВнешняяТЗ.КодЕдиницИзмерения Как КодЕдиниц,
	|ВнешняяТЗ.Штрихкод Как Штрихкод
	|Поместить ВнешняяТЗ
	|Из &ВнешняяТЗ Как ВнешняяТЗ
	|Где
	|ВнешняяТЗ.КодНоменклатуры В(&МассивКодов)";
	
	РезультатПакета = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
	ТаблицаНоменклатуры = РезультатПакета[0].Выгрузить();
	
	Для Каждого Строка Из ТаблицаНоменклатуры Цикл
		
		Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодНоменклатуры));
		
		Если Номенклатура.Пустая() Тогда
			
			НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
			НоваяНоменклатура.Наименование = СокрЛП(Строка.Номенклатура);
			НоваяНоменклатура.Код = СокрЛП(Строка.КодНоменклатуры);
			НоваяНоменклатура.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоКоду(СокрЛП(Строка.КодЕдиниц));
			НоваяНоменклатура.Записать();			
			
		КонецЕсли;
		
	КонецЦикла;

КонецПроцедуры()
Показать
По теме из базы знаний
Найденные решения
10. Swetlana 26 17.02.22 13:27 Сейчас в теме
(1) Просто у вас ТаблицаНоменклатуры пустая
Вы неправильно сам запрос написали, а во вторых вы результат запроса поместили в ВнешняяТЗ
Сделайте в запросе новую выборку и получите результат запроса и ненулевой)
user1619761; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. Swetlana 26 17.02.22 13:27 Сейчас в теме
(1) Просто у вас ТаблицаНоменклатуры пустая
Вы неправильно сам запрос написали, а во вторых вы результат запроса поместили в ВнешняяТЗ
Сделайте в запросе новую выборку и получите результат запроса и ненулевой)
user1619761; +1 Ответить
12. user1619761 17.02.22 13:44 Сейчас в теме
2. starjevschik 17.02.22 12:36 Сейчас в теме
проблема в том, что здесь нет выборки данных. Есть только создание временной таблицы запроса. А выборку автор сделать забыл, или поленился, или у него были какие-то более сложные соображения )
3. user1619761 17.02.22 12:40 Сейчас в теме
(2) а выборка зачем? Если результат выгружается в таблицу значений. И на управляемых формах этот запрос отрабатывает корректно, а на обычной форме с такой проблемой столкнулся.
4. user1203706 13 17.02.22 12:41 Сейчас в теме
(0) Всё в топку.
Нафига такой нелепый запрос, если потом еще на выходе искать что-то по коду ?
Откуда ТаблицаЗапроса и МассивКодов изначально взялись ?
collider; +1 Ответить
5. user1619761 17.02.22 12:44 Сейчас в теме
(4) таблица запроса берется из эксель файла, массив кодов загружается из дбф файла.
6. user1619761 17.02.22 12:47 Сейчас в теме
(4) а запрос нужен вот зачем: в дбф есть коды, номенклатура с которыми отсутствует в бд, я из другой бд выгрузил всю номенклатуру в эксель, и из этого файла выгружаю запросом нужную номенклатуру в таблицу, чтобы создать отсутствующую.
7. soft_wind 17.02.22 12:47 Сейчас в теме
зачем ВООБЩЕ запрос?
есть таблица и массив кодов, обойдите ее сразу в цикле,
вот код и ни каких запросов не надо!!!
Для Каждого Строка Из ТаблицаЗапроса Цикл
	Если МассивКодов.Найти(Строка.КодНоменклатуры) <> Неопределено Тогда
		//есть код в массиве, обрабатываем, далее ваш код без изменения
       Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(Строка.КодНоменклатуры));
       Если Номенклатура.Пустая() Тогда
            НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
            НоваяНоменклатура.Наименование = СокрЛП(Строка.Номенклатура);
            НоваяНоменклатура.Код = СокрЛП(Строка.КодНоменклатуры);
            НоваяНоменклатура.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоКоду(СокрЛП(Строка.КодЕдиниц));
            НоваяНоменклатура.Записать();            
       КонецЕсли;		
	КонецЕсли; 
КонецЦикла; 	
Показать
collider; +1 Ответить
8. user1619761 17.02.22 12:51 Сейчас в теме
(7) спасибо за совет, я знаю, что можно и найти строки в таблице значений , и как у вас вариант. Но я хочу разобраться и понять, почему не заходит в цикл таблицы результата запроса.
11. Swetlana 26 17.02.22 13:29 Сейчас в теме
(8) Вы результат запроса поместили во временную таблицу
Сделайте еще один запрос для получения результата из ВнешняяТЗ
13. пользователь 17.02.22 13:51
Сообщение было скрыто модератором.
...
9. user1203706 13 17.02.22 12:56 Сейчас в теме
(8) потому что на выходе, количество строк в ТЗ твоей =0.
gybson; Swetlana; +2 Ответить
Оставьте свое сообщение

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