Есть форма, содержащая динамический список с произвольным запросом. Как при открытии формы установить нужные параметры в этом запросе?Одна из задач, возникающих при открытии формы, может заключаться в том, что динамический список в открываемой форме содержит произвольный запрос с параметрами. И при открытии такой формы нужно передавать в этот список конкретные значения параметров.
Эта задача решается с помощью создания дополнительных параметров формы, передачи в них необходимых значений и установки их в параметры запроса в обрабтчике события формы
При создании на сервере.
Предположим, что имеется регистр
ЦеныТоваров. В форме списка этого регистра содержится динамический список с произвольным запросом:
ВЫБРАТЬ
РегистрСведенийЦеныТоваров.Период,
РегистрСведенийЦеныТоваров.Товар,
РегистрСведенийЦеныТоваров.Цена
ИЗ
РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров
ГДЕ
РегистрСведенийЦеныТоваров.Товар = &Товар
И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода
И РегистрСведенийЦеныТоваров.Период <= &КонецПериода
Как видно из текста запроса, у запроса есть три параметра:
Товар,
НачалоПериода и
КонецПериода. Для нормального функционирования формы значения этих параметров должны быть заданы при открытии формы, иначе в результате открытия формы будет получена ошибка.
Чтобы передать собственные параметры в форму, желательно создать их в редакторе формы.
Вообще говоря, делать это не обязательно. Любые параметры, переданные в метод
ОткрытьФорму(), будут доступны в обработчике события формы
При создании на сервере. Но все же лучше создать их у формы в явном виде.
Тогда, во-первых, в модуле формы не придется проверять, существуют такие параметры или нет. А во-вторых, явное создание параметров формы облегчает поддержку прикладного решения теми разработчиками, которые не участвовали в его создании.
Итак, создадим у формы списка регистра сведений три параметра:
НачалоПериода,
КонецПериода (тип
Дата) и
Товар (тип
СправочникСсылка.Товары).
![](http://s002.radikal.ru/i199/1103/27/0e46135d259e.jpg)
Теперь в форме элемента справочника
Товары создадим команду
ЦеныВДекабре со следующим текстом:
ПараметрыФормы = Новый Структура("НачалоПериода, КонецПериода, Товар", '20091201000000', '20091231235959', Объект.Ссылка);
ОткрытьФорму("РегистрСведений.ЦеныТоваров.Форма.ФормаСписка", ПараметрыФормы);
Этой командой мы открываем форму списка регистра сведений и передаем ей значения трех параметров.
В самой форме регистра сведений, в обработчике события формы
При создании на сервере, установим переданные значения в качестве параметров произвольного запроса динамического списка следующим образом:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.Параметры.УстановитьЗначениеПараметра("НачалоПериода", Параметры.НачалоПериода);
Список.Параметры.УстановитьЗначениеПараметра("КонецПериода", Параметры.КонецПериода);
Список.Параметры.УстановитьЗначениеПараметра("Товар", Параметры.Товар);
КонецПроцедуры