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