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

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

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

ТвойДинСписок.Параметры.УстановитьЗначениеПараметра("СкладОтбор", <Ссылка на элементсправочника>);
5. user1203706 15 29.11.22 10:48 Сейчас в теме
(4) Отсюда не видно, как Изначально устанавливаются параметры дин списка из ПриСозданииНаСервере, именно там у тебя ошибка.
А не фильтры, которые потом при изменении чего либо на форме
6. Gok9 29.11.22 10:54 Сейчас в теме
(5) Есть запрос ПриСозданииНаСервере, но это для другой формы номенклатуры
Прикрепленные файлы:
7. anton13m 4 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 4 29.11.22 11:56 Сейчас в теме
(9)
Ты что хочешь от нас? Скидываешь непонятные отрывки кода, возможно из разных форм и не связанные между собой и хочешь чтобы тебе на основании этих данных сказали, где ты не дописал код?
Если ты добавил новый параметр в запрос, то ищи где задавились уже существующие и там свой устанавливай.
11. Gok9 29.11.22 12:50 Сейчас в теме
(10) Параметры не добавлял, не знаю почему он просить задать параметры, не могу найти где происходить ошибка
Оставьте свое сообщение

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