Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Список подчиненного справочника с отбором по владельцу
Дальше: Метод «ПолучитьФорму()»

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

Еще одна задача, которая может возникать при открытии формы, заключается в том, что динамический список, содержащийся в форме, может содержать произвольный запрос с параметрами. И при открытии формы нужно передавать в этот список конкретные значения этих параметров.

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

В эти параметры нужно передать требуемые значения, а в обработчике события формы При создании на сервере установить эти значения параметрам запроса в динамическом списке.

Рассмотрим эту задачу на примере списка регистра ЦеныТоваров. В форме списка этого регистра содержится динамический список с произвольным запросом (листинг 3.10).

Листинг 3.10. Запрос динамического списка

ВЫБРАТЬ

РегистрСведенийЦеныТоваров.Период,

РегистрСведенийЦеныТоваров.Товар,

РегистрСведенийЦеныТоваров.Цена

ИЗ

РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров

ГДЕ

РегистрСведенийЦеныТоваров.Товар = &Товар

И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода

И РегистрСведенийЦеныТоваров.Период <= &КонецПериода

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

В форме элемента справочника Товары есть команда Цены в декабре, которая показывает цены на этот товар, установленные только в декабре 2009 года.

Примечание

Пример можно посмотреть в демонстрационной базе «Открытие форм», форма элемента справочника Товары, команда Цены в декабре. Это локальная команда формы элемента справочника Товары, она открывает список регистра ЦеныТоваров.

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

Итак, создадим у формы списка регистра сведений три параметра: НачалоПериода, КонецПериода (тип Дата) и Товар (тип СправочникСсылка.Товары), рис. 3.12.

Рис. 3.12. Параметры формы

Теперь в форме элемента справочника Товары создадим команду ЦеныВДекабре со следующим текстом (листинг 3.11).

Листинг 3.11. Текст команды «ЦеныВДекабре»

ПараметрыФормы = Новый Структура("НачалоПериода, КонецПериода, Товар", '20091201000000', '20091231235959', Объект.Ссылка);

ОткрытьФорму("РегистрСведений.ЦеныТоваров.Форма.ФормаСписка", ПараметрыФормы);

Этой командой мы открываем форму списка регистра сведений и передаем ей значения трех параметров.

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

Листинг 3.12. Обработчик события «При создании на сервере»

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

 

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

Список.Параметры.УстановитьЗначениеПараметра("КонецПериода", Параметры.КонецПериода);

Список.Параметры.УстановитьЗначениеПараметра("Товар", Параметры.Товар);

 

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

Назад: Список подчиненного справочника с отбором по владельцу
Дальше: Метод «ПолучитьФорму()»