В начало

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

 

            Необходимо отобрать номенклатуру по названию группы [Электротовары] и вывести список значений на [ФормуВыбора].

            В наличии справочник Номенклатура, показанный ниже. В справочнике имеюися группы товаров.

Рис. Справочник [Номенклатура]

            Также есть документ [ПриходнаяНакладная], в котором при выборе номенклатуры необходимо отобрать только те товары, которые входят в группу [Электротовары].

            Для отсеивания нужных нам товаров нужно создать процедуру [НачалоВыбора] на поле ввода номенклатуры.

            Запускаем конфигуратор, открываем документ [ПриходнаяНакладная], создаем процедуру на событие [НачалоВыбора]. В этой процедуре пишем код из листинга ниже.

Листинг. Код процедуры на действие [НачалоВыбора]

Процедура ПолеВвода1НачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

           

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           Номенклатура.Код,

                        |           Номенклатура.Наименование,

                        |           Номенклатура.ВидНоменклатуры,

                        |           Номенклатура.ТипНоменклатуры

                        |ИЗ

                        |           Справочник.Номенклатура КАК Номенклатура

                        |ГДЕ

                        |           Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

           

            Запрос.УстановитьПараметр("ВидНоменклатуры", "Электротовары");

            Результат = Запрос.Выполнить().Выбрать();

           

            СЗ = Новый СписокЗначений;

            Пока Результат.Следующий() Цикл

                        СЗ.Добавить(Результат.Наименование);

            КонецЦикла;

              

    ФВ = Справочники.Номенклатура.ПолучитьФормуВыбора(,Элемент,);

    ФВ.СправочникСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.ВСписке;

    ФВ.СправочникСписок.Отбор.Наименование.Значение = СЗ;

    ФВ.СправочникСписок.Отбор.Наименование.Использование = Истина;

            ФВ.ЭлементыФормы.СправочникДерево.ТекущаяСтрока = Справочники.Номенклатура.НайтиПоКоду("000000008");//Электротовары

            ФВ.ЭлементыФормы.СправочникДерево.Доступность = Ложь;

    ФВ.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;

            ФВ.Открыть();

                       

КонецПроцедуры

 

            В данной процедуре мы создаем запрос с обработкой результата, в котором накладываем условие на [Вид номенклатуры], потом загоняем результат запроса в список значений, а этот список выводим на [ФормуВыбора] документа [ПриходнаяНакладная].

            Затем запускаем режим 1С:Предприятие и проверяем результат отбора.

Рис. Результат отбора номенклатуры по группе [Электротовары]