В начало

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

 

            Задача: создать отчет «Остатки товаров», используя такой механизм как Конструктор запроса с обработкой результата.

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

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

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

 

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

            На закладке КЗОР «Обработка результата» нужно выбрать тип отчета «Вывод в табличный документ», после чего перейти на следующую закладку «Таблицы и поля».

            На закладке «Таблицы и поля» выбираем виртуальную таблицу «ОстаткиТоваровстатки», добавляем параметр «&ДатаОтчета», а также выбираем поля «Номенклатура» и «КоличествоОтсаток».

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

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

 

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

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

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

 

            На закладке «Порядок» можно также выбрать поле для сортировки, я выбрал поле «Номенклатура» с сортировкой по возрастанию.

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

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

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

            Листинг модуля формы показан ниже.

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

НаКлиенте

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

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

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

 

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

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

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

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

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

     

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

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

      Запросекст =

            "ВЫБРАТЬ

            |     ОстаткиТоваровОстаткиоменклатура КАК Номенклатура,

            |     ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиоменклатура),

            |     ОстаткиТоваровОстаткиоличествоОстаток КАК Остаток

            |ИЗ

            |     РегистрНакоплениястаткиТоваров.Остатки(&ДатаОтчета, ) КАК ОстаткиТоваровОстатки

            |

            |УПОРЯДОЧИТЬ ПО

            |     Номенклатура";

     

      ЗапросстановитьПараметр("ДатаОтчета", ДатаОтчета);

     

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

     

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

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

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

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

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

     

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

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

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

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

     

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

     

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

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

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

      КонецЦикла;

 

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

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

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

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

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

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

Рис. 5. Сформированный отчет «Остатки товаров»

Рис. 5. Сформированный отчет «Остатки товаров»

 

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