Форма динамического списка с произвольным запросом
11.05.2018
Теги: 1С:Предприятие • ОткрытьФорму • Параметр • ПриСозданииНаСервере • Список • УправляемаяФорма
Пусть у нас есть форма, содержащая динамический список с произвольным запросом. И этот запрос содержит какие-то параметры. Как установить нужные параметры при открытии формы? Это решается с помощью создания дополнительных параметров формы, передачи в них необходимых значений и установки их в параметры запроса в обработчике события формы ПриСозданииНаСервере().
Предположим, что мы имеем дело с регистром сведений ЦеныТоваров. В форме списка этого регистра содержится динамический список с произвольным запросом:
ВЫБРАТЬ РегистрСведенийЦеныТоваров.Период, РегистрСведенийЦеныТоваров.Товар, РегистрСведенийЦеныТоваров.Цена ИЗ РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров ГДЕ РегистрСведенийЦеныТоваров.Товар = &Товар И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода И РегистрСведенийЦеныТоваров.Период <= &КонецПериода
Как видно из текста запроса, у запроса есть три параметра: Товар, НачалоПериода и КонецПериода. Для нормального функционирования формы значения этих параметров должны быть заданы при открытии формы, иначе в результате открытия формы будет получена ошибка.
Чтобы передать собственные параметры в форму, желательно создать их в редакторе формы. Вообще говоря, делать это не обязательно. Любые параметры, переданные в функцию ОткрытьФорму(), будут доступны в обработчике события формы ПриСозданииНаСервере(). Но все же лучше создать их у формы в явном виде.
Тогда, во-первых, в модуле формы не придется проверять, существуют такие параметры или нет. А во-вторых, явное создание параметров формы облегчает поддержку прикладного решения теми разработчиками, которые не участвовали в его создании.
Итак, создадим у формы списка регистра сведений три параметра:
НачалоПериода, (типДата);КонецПериода(типДата);Товар(типСправочникСсылка.Товары).
Теперь в форме элемента справочника Товары создадим команду ЦеныДекабря со следующим обработчиком:
&НаКлиенте Процедура ЦеныДекабря(Команда) ПараметрыФормы = Новый Структура( "НачалоПериода, КонецПериода, Товар", '20171201000000', '20171231235959', Объект.Ссылка ); ОткрытьФорму("РегистрСведений.ЦеныТоваров.Форма.ФормаСписка", ПараметрыФормы); КонецПроцедуры
В самой форме регистра сведений, в обработчике события формы ПриСозданииНаСервере(), установим переданные значения в качестве параметров произвольного запроса динамического списка следующим образом:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.УстановитьЗначениеПараметра("НачалоПериода", Параметры.НачалоПериода); Список.Параметры.УстановитьЗначениеПараметра("КонецПериода", Параметры.КонецПериода); Список.Параметры.УстановитьЗначениеПараметра("Товар", Параметры.Товар); КонецПроцедуры
Поиск: 1С:Предприятие • Открыть форму • Параметр • При создании на сервере • Список • Управляемая форма