В начало

«Прайс лист» через КЗОР

 

            Для создания отчета «Прайс лист», используя конструктор запроса с обработкой результата (КЗОР), предварительно необходимо запуститься в режиме конфигуратора, перейти в раздел «Отчеты» дерева объектов и создать новый объект.

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

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

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

 

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

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

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

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

 

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

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

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

 

            Далее переходим на закладку «Условия» и вписываем код для исключения групп.

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

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

            А на закладке «Объединения/Псевдонимы» переименовываем «Родитель» в «Группа».

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

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

 

            Чтобы группы не повторялись, можно на закладке «Итоги» выбрать группировочное поле «Группа».

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

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

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

Рис. 6. Авто-макет по имени «Макет»

Рис. 6. Авто-макет по имени «Макет»

 

Листинг 1. Процедуры в модуле формы

&НаКлиенте

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

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

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

 

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

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

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

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

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

     

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

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

      Запросекст =

            "ВЫБРАТЬ

            |     Номенклатураодитель КАК Группа,

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

            |     НоменклатураенаПродажи КАК ЦенаПродажи

            |ИЗ

            |     Справочникоменклатура КАК Номенклатура

            |ГДЕ

            |     НоменклатуратоГруппа = ЛОЖЬ

            |

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

            |     Группа,

            |     Наименование

            |ИТОГИ ПО

            |     Группа";

     

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

     

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

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

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

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

      ОбластьГруппа = МакетолучитьОбласть("Группа");

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

     

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

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

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

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

     

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

     

      Пока ВыборкаГруппаледующий() Цикл

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

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

     

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

     

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

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

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

            КонецЦикла;

      КонецЦикла;

     

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

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

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

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

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

            Далее запускаем режим «1Средприятие» и вызываем отчет.

Рис. 7. Отчет «Прайс лист», созданный через КЗОР

Рис. 7. Отчет «Прайс лист», созданный через КЗОР

 

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