В начало

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

 

            Нужно создать отчет «Список контрагентов», используя конструктор запросов с обработкой результата (КЗОР).

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

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

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

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

            На закладке «Обработка результата» выбираем тип обработки «Вывод в табличный документ» и переходим на закладку «Таблицы и поля».

Рис. 2. Закладка «Обработка результата» КЗОР

Рис. 2. Закладка «Обработка результата» КЗОР

            На закладке «Таблицы и поля» есть три области: База данных, Таблицы, Поля. Нужно последовательно слева направо выбрать необходимые таблицы, а затем из них нужные поля. Все выбирается простым перетягиванием мышки или стрелочками.

Рис. 3. Закладка «Таблицы и поля» КЗОР

            На закладке «Условия» фильтруем название групп в наименовании контрагентов.

Рис. 4. Закладка «Условия» КЗОР

Рис. 4. Закладка «Условия» КЗОР

            На закладке «Объединения/Псевдонимы» переименовываем реквизит «Родитель», который по сути является группой контрагентов, у нас их две: Поставщики и Потребители.

Рис. 5. Закладка «Объединения/Псевдонимы»

Рис. 5. Закладка «Объединения/Псевдонимы»

 

            После этого переходим на закладку «Итоги» и в качестве группировочного поля выбираем «ГруппаКонтрагентов».

Рис. 6. Закладка «Итоги» конструктора ЗОР

Рис. 6. Закладка «Итоги» конструктора ЗОР

 

            Вроде все, заканчиваем работу в КЗОР, при этом будет создан макет и заполнены процедуры.

Рис. 7. Макет, созданный в КЗОР

Рис. 7. Макет, созданный в КЗОР

 

            Ниже показан модуль формы с автоматически заполненной процедурой «СформироватьНаСервере».

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

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

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

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

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

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

     

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

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

      Запросекст =

            "ВЫБРАТЬ

            |     Контрагентыодитель КАК ГруппаКонтрагентов,

            |     Контрагентыаименование,

            |     КонтрагентысновнойМенеджер

            |ИЗ

            |     Справочниконтрагенты КАК Контрагенты

            |ГДЕ

            |     КонтрагентытоГруппа = ЛОЖЬ

            |ИТОГИ ПО

            |     ГруппаКонтрагентов";

     

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

     

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

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

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

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

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

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

     

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

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

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

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

     

      ВыборкаРодитель = РезультатЗапросаыбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

     

      Пока ВыборкаРодительледующий() Цикл

            ОбластьРодительараметры.Заполнить(ВыборкаРодитель);

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

     

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

     

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

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

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

            КонецЦикла;

      КонецЦикла;

     

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

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

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

     

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

 

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

 

&НаКлиенте

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

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

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

 

            У авто-макета нет заголовка, да и выглядит не особо, зато все есть для вывода данных. Слегка подправим его по своему усмотрению, добавим заголовок и подправим шрифты и границы ячеек, тут все как в MS Excel. После корректировки макета запускаемся в режиме «1Средприятие» и проверяем, что получилось.

Рис. 8. Отчет «Список контрагентов»

Рис. 8. Отчет «Список контрагентов»

 

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