Теперь реализуем вызов нашего отчета из формы списка справочника Номенклатура. Для этого создадим основную форму списка справочника и отредактируем ее. Создадим команду Печать и соответствующую ей кнопку формы, по нажатию которой содержимое отчета СписокНоменклатуры будет выводиться в табличный документ и показываться пользователю. В обработчике команды напишем следующий код (листинг 2.5).
Листинг 2.5. Обработчик команды «Печать»
&НаКлиенте
Процедура Печать(Команда)
Результат = ВывестиСписокНоменклатуры();
Результат.ОтображатьСетку = Ложь;
Результат.ОтображатьЗаголовки = Ложь;
Результат.Показать();
КонецПроцедуры
Отчет формируется в серверной внеконтекстной функции ВывестиСписокНоменклатуры(). Затем заполненный данными табличный документ возвращается на клиента и показывается пользователю (листинг 2.6).
Листинг 2.6. Функция «ВывестиСписокНоменклатуры()»
&НаСервереБезКонтекста
Функция ВывестиСписокНоменклатуры()
// В качестве схемы компоновки данных используем макет отчета "Список Номенклатуры".
СхемаКомпоновкиДанных =
Отчеты.СписокНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Получим настройки по умолчанию.
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// Сформируем макет компоновки данных.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки);
// Выполним компоновку данных.
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Выведем результат компоновки в табличный документ.
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Возврат ДокументРезультат;
КонецФункции
Из комментариев в тексте обработчика видно, что здесь программно реализуются все этапы компоновки данных, которые были описаны в первой главе.
Запустим «1С:Предприятие». Откроем справочник Номенклатура и нажмем кнопку Печать. На экране появится новый табличный документ с данными отчета (рис. 2.65).

Рис. 2.65. Вывод отчета из формы списка справочника «Номенклатура»
В данном случае результат отчета выводится в новый табличный документ. Это сделано, чтобы продемонстрировать изнутри процесс формирования отчета.
Но можно просто программно открыть форму отчета и при этом передать в нее параметр СформироватьПриОткрытии, установленный в значение Истина, чтобы отчет выводился сразу без нажатия кнопки Сформировать.
Для демонстрации этой возможности создадим в форме списка справочника Номенклатура команду Отчет и соответствующую ей кнопку формы, по нажатию которой будет открываться форма отчета СписокНоменклатуры и при этом будет сразу же формироваться результат отчета. В обработчике команды напишем следующий код (листинг 2.7).
Листинг 2.7. Обработчик команды «Отчет»
&НаКлиенте
Процедура Отчет(Команда)
ПараметрыФормы = Новый Структура("СформироватьПриОткрытии", Истина);
ОткрытьФорму("Отчет.СписокНоменклатуры.Форма", ПараметрыФормы);
КонецПроцедуры
Запустим «1С:Предприятие». Откроем справочник Номенклатура и нажмем кнопку Отчет. На экране появится наш отчет (рис. 2.66).

Рис. 2.66. Вывод отчета из формы списка справочника «Номенклатура»
Результат отчета будет тот же, но поскольку в последнем случае открывается форма отчета, то пользователю предоставляется стандартный сервис – выбор варианта отчета, открытие формы пользовательских настроек, работа с расшифровкой и т. п.
Однако в этом случае (см. листинг 2.7) результат отчета стандартно выводится в реквизит формы отчета типа ТабличныйДокумент. Если же требуется выводить результат отчета в другие форматы – таблицу значений, дерево значений и т. п., то нужно использовать первый вариант (см. листинг 2.6).
Таким образом, на этом примере мы научились: