В начало

«Список договоров» через КЗОР

 

            Необходимо построить простенький отчет «Список договоров», используя конструктор отчета с обработкой результата.

            Итак, создаем пустой отчет в дереве объектов конфигуратора, на закладке «Основные» задаем ему имя и переходим на закладку «Фомы».

            На закладке «Формы» создаем форму отчета. На закладке «Реквизиты» формы отчета добавляем реквизит «ТабДок» с типом табличный документ и перетаскиваем его мышкой в левое окно. Затем идем на закладку «Команды – Команды формы» и создаем кнопку для формирования отчета, задаем имя «Сформировать», создаем действие для нее и также перетаскиваем мышкой в левое окно. При этом в нижней части будет выведен предварительный просмотр формы отчета.

Рис. 1. Форма отчета

Рис. 1. Форма отчета

 

            Затем нужно перейти в модуль формы, там нами были созданы 2 шаблона процедуры для формирования отчета. Во первых нужно передать «ТабДок» в качестве параметра процедуры «СформироватьНаСервере», а во вторых поместить курсор в тело этой процедуры и выбрать в главном меню конфигуратора «Текст – Конструктор запроса с обработкой результата…». После чего он собственно и запуститься.

 

Таблица 1. Закладки конструктора запроса с обработкой результата (КЗОР)

Закладка

Что нужно сделать

Обработка результата

Выбрать тип обработки – Вывод в табличный документ

Таблицы и поля

В справочнике «Договоры» выбрать поля: Наименование и Владелец

Объединения/Псевдонимы

Переименовать поле «Владелец» в «Контрагент»

           

Далее можно закрыть КЗОР, при этом будет создан макет отчета и заполнено тело процедуры «СформироватьНаСервере(ТабДок)».

            Макет можно слегка откорректировать, добавив заголовок, изменив шрифт надписей и выделение полей.

Рис. 2. Немного отформатированный авто-макет отчета

Рис. 2. Немного отформатированный авто-макет отчета

 

            Текст процедур, на всякий случай показан ниже.

 

Листинг 1. Модуль формы и процедуры

&НаСервереБезКонтекста

Процедура СформироватьНаСервере(ТабДок)

      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

      // Данный фрагмент построен конструктором.

      // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

     

      Макет = Отчеты.СписокДоговоровЧерезКЗОР.ПолучитьМакет("Макет");

      Запрос = Новый Запрос;

      Запрос.Текст =

            "ВЫБРАТЬ

            |     Договоры.Наименование,

            |     Договоры.Владелец КАК Контрагент,

            |     ПРЕДСТАВЛЕНИЕ(Договоры.Владелец)

            |ИЗ

            |     Справочник.Договоры КАК Договоры";

     

      РезультатЗапроса = Запрос.Выполнить();

     

      ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

      ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

      ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

      ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

      ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

     

      ТабДок.Очистить();

      ТабДок.Вывести(ОбластьЗаголовок);

      ТабДок.Вывести(ОбластьШапкаТаблицы);

      ТабДок.НачатьАвтогруппировкуСтрок();

     

      ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

     

      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);

            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());

      КонецЦикла;

     

      ТабДок.ЗакончитьАвтогруппировкуСтрок();

      ТабДок.Вывести(ОбластьПодвалТаблицы);

      ТабДок.Вывести(ОбластьПодвал);

      //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

 

&НаКлиенте

Процедура Сформировать(Команда)

      СформироватьНаСервере(ТабДок);

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

            Далее запускаем режим «1С:Предприятие», находим и формируем отчет.

Рис. 3. Сформированный отчет «Список договоров»

Рис. 3. Сформированный отчет «Список договоров»

 

ПРИМЕЧАНИЕ: отчет создан в версии 8.3.