Ошибка в запросе Номенклатуры

1. Gok9 29.11.22 10:08 Сейчас в теме
Здравствуйте, создаю расширение для документа ЗаказКлиента при выполнение запроса в динамическом списке ПодборТаблицаНоменклатуры выдает ошибку {(37, 35)}: Не задано значение параметра "СкладОтбор"
И РаспределениеЗапасов.Склад = <<?>>&СкладОтбор, это из-за отсутствия каких-либо объектов в расширение?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. anton13m 2 29.11.22 10:37 Сейчас в теме
(1)
это из-за отсутствия каких-либо объектов в расширение?

Это из-за того, что не установлен параметр динамического списка.
Если в запросе добавили параметры, то их нужно устанавливать:
Список.Параметры.УстановитьЗначениеПараметра("СкладОтбор", Склад);
4. Gok9 29.11.22 10:43 Сейчас в теме
(2) Параметр установлена вроде, кусок кода скопировал с формы обработки, этот код не сработает?
Прикрепленные файлы:
2. user1203706 13 29.11.22 10:34 Сейчас в теме
(1) И ?
Установи параметр запроса динамического списка в ПриСозданииНаСервере, например

ТвойДинСписок.Параметры.УстановитьЗначениеПараметра("СкладОтбор", <Ссылка на элементсправочника>);
5. user1203706 13 29.11.22 10:48 Сейчас в теме
(4) Отсюда не видно, как Изначально устанавливаются параметры дин списка из ПриСозданииНаСервере, именно там у тебя ошибка.
А не фильтры, которые потом при изменении чего либо на форме
6. Gok9 29.11.22 10:54 Сейчас в теме
(5) Есть запрос ПриСозданииНаСервере, но это для другой формы номенклатуры
Прикрепленные файлы:
7. anton13m 2 29.11.22 11:02 Сейчас в теме
(6)
Ничего не понятно по твоим скриншотам. Ищи где устанавливаются параметры списка и добавляй свои. А то ты скопировал из одной формы в другую список с кодом и думаешь, что все заработает. Функция ПолучитьПараметрыПодбора возвращает куда-то результат, где он обрабатывается.
8. Gok9 29.11.22 11:17 Сейчас в теме
(7)
ПолучитьПараметрыПодбора

Кажется нашел

Сам запрос
Функция ЗаполнитьПодборПоСкладам(ПараметрыЗапроса) Экспорт
	
	ТаблицаРезультат = Новый Массив;
	НеобходимоПоказатьНоменклатуру = Ложь;

	Если ПараметрыЗапроса.СписокОтборНоменклатуры.Количество() = 0 Тогда 
		ПараметрыВозврата = Новый Структура;            
		ПараметрыВозврата.Вставить("НеобходимоПоказатьНоменклатуру",НеобходимоПоказатьНоменклатуру);
		ПараметрыВозврата.Вставить("ТаблицаРезультат",ТаблицаРезультат);
		Возврат ПараметрыВозврата;
	КонецЕсли; 
	
	Если ЗначениеЗаполнено(ПараметрыЗапроса.ПравилоПродаж.ТекстЗапросаПоОстаткам) Тогда       
		ТекстЗапроса = ПараметрыЗапроса.ПравилоПродаж.ТекстЗапросаПоОстаткам;  
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"|"," ");
	Иначе
		ТекстЗапроса = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	РаспределениеЗапасов.Номенклатура КАК Номенклатура,
		|	РаспределениеЗапасов.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
		|	РаспределениеЗапасов.Характеристика КАК Характеристика,
		|	РаспределениеЗапасов.Склад КАК Склад,
		|	СУММА(РаспределениеЗапасов.ВНаличии) КАК ВНаличии,
		|	СУММА(РаспределениеЗапасов.Свободно) КАК Свободно,
		|	МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена
		|ИЗ
		|	РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВыбВидЦены) КАК ЦеныНоменклатуры
		|		ПО (ЦеныНоменклатуры.Номенклатура = РаспределениеЗапасов.Номенклатура)
		|			И (ЦеныНоменклатуры.Характеристика = РаспределениеЗапасов.Характеристика)
		|ГДЕ
		|	РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.ОстатокНаСкладе)
		|	И РаспределениеЗапасов.Номенклатура В(&ВыбНоменклатура)
		|{ГДЕ
		|	РаспределениеЗапасов.Склад.* КАК Склад}
		|
		|СГРУППИРОВАТЬ ПО
		|	РаспределениеЗапасов.Номенклатура,
		|	РаспределениеЗапасов.Характеристика,
		|	РаспределениеЗапасов.Склад,
		|	РаспределениеЗапасов.Номенклатура.ЕдиницаИзмерения
		|
		|УПОРЯДОЧИТЬ ПО
		|	РаспределениеЗапасов.Склад.Наименование,
		|	Номенклатура,
		|	Характеристика";
	КонецЕсли; 
	
	//ТекстЗапроса =    
	//"ВЫБРАТЬ
	//|	СпрНоменклатура.Ссылка КАК Номенклатура,
	//|	ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
	//|	УпаковкиНоменклатуры.Ссылка КАК Упаковка
	//|ПОМЕСТИТЬ ТаблицаНоменклатура
	//|ИЗ
	//|	Справочник.Номенклатура КАК СпрНоменклатура
	//|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
	//|		ПО (СпрНоменклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
	//|				ИЛИ СпрНоменклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
	//|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
	//|		ПО (СпрНоменклатура.Ссылка = УпаковкиНоменклатуры.Владелец
	//|				ИЛИ СпрНоменклатура.ВидНоменклатуры = УпаковкиНоменклатуры.Владелец)
	//|ГДЕ
	//|	СпрНоменклатура.Ссылка В(&ВыбНоменклатура)
	//|;
	//|
	//|////////////////////////////////////////////////////////////­////////////////////
	//|ВЫБРАТЬ
	//|	ТаблицаНоменклатура.Номенклатура КАК Номенклатура,
	//|	ТаблицаНоменклатура.Характеристика КАК Характеристика,
	//|	ТаблицаНоменклатура.Упаковка КАК Упаковка,
	//|	МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена
	//|ПОМЕСТИТЬ ТаблицаЦены
	//|ИЗ
	//|	ТаблицаНоменклатура КАК ТаблицаНоменклатура
	//|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
	//|				,
	//|				Номенклатура В (&ВыбНоменклатура)
	//|					И ВидЦены = &ВыбВидЦены) КАК ЦеныНоменклатуры
	//|		ПО ТаблицаНоменклатура.Номенклатура = ЦеныНоменклатуры.Номенклатура
	//|			И ТаблицаНоменклатура.Характеристика = ЦеныНоменклатуры.Характеристика
	////|			И ТаблицаНоменклатура.Упаковка = ЦеныНоменклатуры.Упаковка
	//|
	//|СГРУППИРОВАТЬ ПО
	//|	ТаблицаНоменклатура.Номенклатура,
	//|	ТаблицаНоменклатура.Характеристика,
	//|	ТаблицаНоменклатура.Упаковка
	//|;
	//|
	//|////////////////////////////////////////////////////////////­////////////////////
	//|ВЫБРАТЬ
	//|	СвободныеОстатки.Номенклатура КАК Номенклатура,
	//|	СвободныеОстатки.Характеристика КАК Характеристика,
	//|	СвободныеОстатки.Склад КАК Склад,
	//|	СУММА(СвободныеОстатки.ВНаличииОстаток - СвободныеОстатки.ВРезервеСоСкладаОстаток - СвободныеОстатки.ВРезервеПодЗаказОстаток) КАК Свободно
	//|ПОМЕСТИТЬ ТаблицаОстатки
	//|ИЗ
	//|	РегистрНакопления.СвободныеОстатки.Остатки(, Номенклатура В (&ВыбНоменклатура) {(Склад).* КАК Склад}) КАК СвободныеОстатки
	//|
	//|СГРУППИРОВАТЬ ПО
	//|	СвободныеОстатки.Номенклатура,
	//|	СвободныеОстатки.Характеристика,
	//|	СвободныеОстатки.Склад
	//|;
	//|
	//|////////////////////////////////////////////////////////////­////////////////////
	//|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	//|	ТаблицаЦены.Номенклатура КАК Номенклатура,
	//|	ТаблицаЦены.Характеристика КАК Характеристика,
	//|	ТаблицаЦены.Упаковка КАК Упаковка,
	//|	ТаблицаОстатки.Склад КАК Склад,
	//|	ТаблицаОстатки.Свободно КАК Свободно,
	//|	ТаблицаЦены.Цена КАК Цена
	//|ИЗ
	//|	ТаблицаЦены КАК ТаблицаЦены
	//|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаОстатки КАК ТаблицаОстатки
	//|		ПО ТаблицаЦены.Номенклатура = ТаблицаОстатки.Номенклатура
	////|			И ТаблицаЦены.Характеристика = ТаблицаОстатки.Характеристика
	//|
	//|УПОРЯДОЧИТЬ ПО
	//|	ТаблицаОстатки.Склад.Наименование,
	//|	Номенклатура,
	//|	Характеристика";

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

	Возврат ПараметрыВозврата;

КонецФункции
Показать
Прикрепленные файлы:
9. Gok9 29.11.22 11:35 Сейчас в теме
(7) Почему не может получить параметры запроса?
10. anton13m 2 29.11.22 11:56 Сейчас в теме
(9)
Ты что хочешь от нас? Скидываешь непонятные отрывки кода, возможно из разных форм и не связанные между собой и хочешь чтобы тебе на основании этих данных сказали, где ты не дописал код?
Если ты добавил новый параметр в запрос, то ищи где задавились уже существующие и там свой устанавливай.
11. Gok9 29.11.22 12:50 Сейчас в теме
(10) Параметры не добавлял, не знаю почему он просить задать параметры, не могу найти где происходить ошибка
Оставьте свое сообщение

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