В начало

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

 

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

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

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

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

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

 

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

 

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

НаКлиенте

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

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

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

 

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

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

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

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

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

     

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

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

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

            "ВЫБРАТЬ

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

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

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

            |ИЗ

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

            |

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

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

     

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

     

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

     

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

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

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

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

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

     

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

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

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

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

     

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

     

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

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

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

      КонецЦикла;

 

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

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

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

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

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

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

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

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

 

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