Форма динамического списка с произвольным запросом

11.05.2018

Теги: 1С:ПредприятиеОткрытьФормуПараметрПриСозданииНаСервереСписокУправляемаяФорма

Пусть у нас есть форма, содержащая динамический список с произвольным запросом. И этот запрос содержит какие-то параметры. Как установить нужные параметры при открытии формы? Это решается с помощью создания дополнительных параметров формы, передачи в них необходимых значений и установки их в параметры запроса в обработчике события формы ПриСозданииНаСервере().

Предположим, что мы имеем дело с регистром сведений ЦеныТоваров. В форме списка этого регистра содержится динамический список с произвольным запросом:

ВЫБРАТЬ
    РегистрСведенийЦеныТоваров.Период,
    РегистрСведенийЦеныТоваров.Товар,
    РегистрСведенийЦеныТоваров.Цена
ИЗ
    РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров
ГДЕ
    РегистрСведенийЦеныТоваров.Товар = &Товар
    И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода
    И РегистрСведенийЦеныТоваров.Период <= &КонецПериода

Как видно из текста запроса, у запроса есть три параметра: Товар, НачалоПериода и КонецПериода. Для нормального функционирования формы значения этих параметров должны быть заданы при открытии формы, иначе в результате открытия формы будет получена ошибка.

Чтобы передать собственные параметры в форму, желательно создать их в редакторе формы. Вообще говоря, делать это не обязательно. Любые параметры, переданные в функцию ОткрытьФорму(), будут доступны в обработчике события формы ПриСозданииНаСервере(). Но все же лучше создать их у формы в явном виде.

Тогда, во-первых, в модуле формы не придется проверять, существуют такие параметры или нет. А во-вторых, явное создание параметров формы облегчает поддержку прикладного решения теми разработчиками, которые не участвовали в его создании.

Итак, создадим у формы списка регистра сведений три параметра:

  • НачалоПериода, (тип Дата);
  • КонецПериода (тип Дата);
  • Товар (тип СправочникСсылка.Товары).

Теперь в форме элемента справочника Товары создадим команду ЦеныДекабря со следующим обработчиком:

&НаКлиенте
Процедура ЦеныДекабря(Команда)
    ПараметрыФормы = Новый Структура(
        "НачалоПериода, КонецПериода, Товар",
        '20171201000000',
        '20171231235959',
        Объект.Ссылка
    );
    ОткрытьФорму("РегистрСведений.ЦеныТоваров.Форма.ФормаСписка", ПараметрыФормы);
КонецПроцедуры

В самой форме регистра сведений, в обработчике события формы ПриСозданииНаСервере(), установим переданные значения в качестве параметров произвольного запроса динамического списка следующим образом:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Список.Параметры.УстановитьЗначениеПараметра("НачалоПериода", Параметры.НачалоПериода);
    Список.Параметры.УстановитьЗначениеПараметра("КонецПериода",  Параметры.КонецПериода);
    Список.Параметры.УстановитьЗначениеПараметра("Товар",         Параметры.Товар);
КонецПроцедуры

Поиск: 1С:Предприятие • Открыть форму • Параметр • При создании на сервере • Список • Управляемая форма

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.