Недопустимое значение параметра (параметр номер '2') в процедуре "АвтоПодбор"

1. BuryMeInVegas 19.06.20 15:21 Сейчас в теме
Добрый день! Задача моя такова: залить выделенный элемент табличной части дока (а именно Номенклатуру) в параметр запроса, чтобы потом получить остатки по этой номенклатуре. Возникла проблема: при попытке отладить механизм, появляется ошибка, указанная в теме топика. Ниже приложу код, букв не очень много. ;)
&НаСервереБезКонтекста
Функция ТоварыНоменклатураАвтоПодборНаСервере(СсылкаНом)
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ТоварыНаСкладахОстатки.Склад КАК Склад,
	                      |	ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ОстатокНаСкладе,
	                      |	ТоварыНаСкладахОстатки.КОтгрузкеОстаток КАК РезервНаСкладе
	                      |ИЗ
	                      |	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
	                      |ГДЕ
	                      |	ТоварыНаСкладахОстатки.Номенклатура.Наименование = &Номенклатура");
	Запрос.УстановитьПараметр("Номенклатура", СсылкаНом);
	Результат = Запрос.Выполнить();
	
	Если Результат.Пустой() Тогда
		Сообщить ("Нет данных по остаткам выбранной номенклатуры на складе");
	Иначе
		ТЗ = Результат.Выбрать();
		ДанныеОстатки = Новый Структура("Склад", "ОстатокНаСкладе", "РезервНаСкладе");
		Если ТЗ.Следующий() Тогда
			ЗаполнитьЗначенияСвойств(ДанныеОстатки, ТЗ);
		КонецЕсли;
	КонецЕсли;
	
	Возврат ДанныеОстатки;
КонецФункции

&НаКлиенте
Процедура ТоварыНоменклатураАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	ТекДанные = Элементы.Товары.ТекущиеДанные;
	ДанныеОстатки = ТоварыНоменклатураАвтоПодборНаСервере(ТекДанные.Номенклатура);
	ЗаполнитьЗначенияСвойств(Элементы.ОстаткиНаСкладах, ДанныеОстатки);
КонецПроцедуры
Показать


Если Вас не очень затруднит, подскажите, пожалуйста, в чём проблема? Ошибка возникает на строке "ЗаполнитьЗначенияСвойств(Элементы.ОстаткиНаСкладах, ДанныеОстатки);", ОстаткиНаСкладах у меня ТЧ, все имена реквизитов совпадают с именами структуры. Уповаю на Вашу помощь!
Найденные решения
2. Ivanov_OM 38 19.06.20 15:44 Сейчас в теме
Скорее всего вот эту строчку надо в начале функции прописать.
ДанныеОстатки = Новый Структура("Склад", "ОстатокНаСкладе", "РезервНаСкладе");

Иначе если результат пустой, программа не понимает, что такое ДанныеОстатки.
Вот и ругается в последней строке на клиенте.
ЗаполнитьЗначенияСвойств(Элементы.ОстаткиНаСкладах, ДанныеОстатки);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ivanov_OM 38 19.06.20 15:44 Сейчас в теме
Скорее всего вот эту строчку надо в начале функции прописать.
ДанныеОстатки = Новый Структура("Склад", "ОстатокНаСкладе", "РезервНаСкладе");

Иначе если результат пустой, программа не понимает, что такое ДанныеОстатки.
Вот и ругается в последней строке на клиенте.
ЗаполнитьЗначенияСвойств(Элементы.ОстаткиНаСкладах, ДанныеОстатки);
3. BuryMeInVegas 19.06.20 15:49 Сейчас в теме
(2) Точно! Что-то я совсем заработался.))
4. Ivanov_OM 38 19.06.20 15:51 Сейчас в теме
Но я бы лучше выгрузил из табличной части номенклатуру в массив.
Одним запросом получил бы остатки по всей номенклатуре табличной части и загрузил циклом в табличную часть.
Запускать запрос в цикле - это плохой тон программирования.
5. BuryMeInVegas 19.06.20 15:54 Сейчас в теме
(4) Я понимаю. Но тут запрос заказчика: они хотят выделить определённую номенклатуру и видеть остатки на складах только по ней.
Оставьте свое сообщение

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