Книга: Разработка сложных отчетов в «1С:Предприятии 8». Система компоновки данных
Назад: Связывание таблиц в запросе
Дальше: Пример 5. Набор данных – объединение

Программный запуск отчета

Теперь реализуем вызов нашего отчета из формы списка справочника Номенклатура. Для этого создадим основную форму списка справочника и отредактируем ее. Создадим команду Печать и соответствующую ей кнопку формы, по нажатию которой содержимое отчета СписокНоменклатуры будет выводиться в табличный документ и показываться пользователю. В обработчике команды напишем следующий код (листинг 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).

Таким образом, на этом примере мы научились:

Назад: Связывание таблиц в запросе
Дальше: Пример 5. Набор данных – объединение