В начало

«Закупки» через КЗОР

           

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

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

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

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

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

 

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

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

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

 

            Потом переходим на закладку «Группировка».

Рис. 3. Закладка «Группировка»

Рис. 3. Закладка «Группировка»

 

            Затем переходим на закладку «Условия».

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

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

 

            После этого идем на закладку «Итоги».

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

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

 

            Если нажать «Ок», то система автоматически создаст макет, который показан ниже.

Рис. 6. Авто-макет, созданный в КЗОР

Рис. 6. Авто-макет, созданный в КЗОР

 

            А также в модуле формы будет заполнена процедура, для формирования отчета, на которой было вызвано контекстное меню «Конструктор запроса с обработкой результата…».

 

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

&НаКлиенте

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

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

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

 

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

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

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

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

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

     

      Макет = Отчеты.Закупки.ПолучитьМакет("Макет");

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

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

            "ВЫБРАТЬ

            |     ПриходнаяТовары.Ссылка.Контрагент КАК Контрагент,

            |     ПРЕДСТАВЛЕНИЕ(ПриходнаяТовары.Ссылка.Контрагент),

            |     ПриходнаяТовары.Номенклатура,

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

            |     СУММА(ПриходнаяТовары.Количество) КАК Количество,

            |     СУММА(ПриходнаяТовары.Сумма) КАК Сумма

            |ИЗ

            |     Документ.Приходная.Товары КАК ПриходнаяТовары

            |ГДЕ

            |     ПриходнаяТовары.Ссылка.Проведен

            |

            |СГРУППИРОВАТЬ ПО

            |     ПриходнаяТовары.Ссылка.Контрагент,

            |     ПриходнаяТовары.Номенклатура

            |ИТОГИ

            |     СУММА(Сумма)

            |ПО

            |     ОБЩИЕ,

            |     Контрагент";

     

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

     

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

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

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

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

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

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

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

     

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

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

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

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

     

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

     

      ВыборкаОбщийИтог.Следующий();      // Общий итог

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

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

     

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

     

      Пока ВыборкаКонтрагент.Следующий() Цикл

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

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

     

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

     

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

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

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

            КонецЦикла;

      КонецЦикла;

     

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

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

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

     

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

     

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

            Если теперь запуститься в режиме «1С:Предприятие» и сформировать отчет, то можно увидеть, что собственно получилось. Конечно, над таким отчетом неплохо бы еще поработать, но в нем вроде все есть, что планировалось.

Рис. 7. Отчет «Закупки»

Рис. 7. Отчет «Закупки»