Создадим форму списка документа ОказаниеУслуги и ее команду СписокУслугНаДому. Перетащим команду в командную панель формы. Обработчик команды заполним следующим образом (листинг 4.33).
Листинг 4.33. Обработчик команды «Список услуг на дому»
&НаКлиенте
Процедура СписокУслугНаДому(Команда)
ОтборПоВидуРаботы = Новый Структура("ВидРаботы", ПолучитьВидРаботы());
ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", ОтборПоВидуРаботы, Истина);
ОткрытьФорму("Отчет.РеестрОказанныхУслуг.Форма", ПараметрыФормы);
КонецПроцедуры
В этом обработчике мы создаем структуру ОтборПоВидуРаботы, которая задает условие отбора – по виду работ, которые оказывались на дому. Для того чтобы получить ссылку на значение НаДому перечисления ВидыРабот, мы используем функцию ПолучитьВидРаботы(), которая выполняется на сервере без контекста формы (см. листинг 4.34).
Затем формируем структуру параметров формы (ПараметрыФормы), описав в ней значения двух стандартных параметров, поставляемых расширением отчета: Отбор и СформироватьПриОткрытии. Последний параметр устанавливаем в Истина, чтобы отчет формировался сразу же при его открытии. Этот вопрос мы подробно рассматривали в предыдущем примере, поэтому не будем еще раз на нем останавливаться.
И затем открываем форму отчета, передав в нее указанные параметры.
Для получения ссылки на значение перечисления ВидыРабот поместим в модуле формы функцию ПолучитьВидРаботы(), исполняющуюся на сервере без контекста формы (листинг 4.34).
Листинг 4.34. Функция «ПолучитьВидРаботы»
&НаСервереБезКонтекста
Функция ПолучитьВидРаботы()
Возврат Перечисления.ВидыРабот.НаДому;
КонецФункции
ПРИМЕЧАНИЕ
Этот пример можно посмотреть в демонстрационной конфигурации «09 (вар. 1) Получение предопределенных значений на клиенте».
Запустим «1С:Предприятие», откроем список документов Оказание услуг и нажмем кнопку Список услуг на дому (рис. 4.56). В результате будет открыт и сразу же сформирован отчет РеестрОказанныхУслуг, выводящий список документов об оказании услуг, выполненных на дому.
Вроде бы мы все сделали правильно – открыли форму отчета с параметрами (как и было рекомендовано в предыдущих примерах), но все равно при этом были сделаны два обращения на сервер (рис. 4.57).

Рис. 4.57. Показатели производительности
ПРИМЕЧАНИЕ
Заметим, что при первом открытии формы могут быть лишние серверные вызовы за счет кеширования платформой необходимой информации о форме. Но мы будем изучать стандартную ситуацию, когда при открытии формы происходит один вызов сервера.
Для наглядности рассмотрим схему программного взаимодействия клиента и сервера (рис. 4.58).

Рис. 4.58. Схема программного взаимодействия сервера и клиента
Второй вызов сервера происходит при открытии формы отчета, и его делает сама платформа.
А вот первого вызова, который происходит при получении ссылки на значение перечисления, можно избежать. Ниже мы покажем, как это сделать.