В начало

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

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

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

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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

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

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

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

 

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

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

&НаКлиенте

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

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

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

 

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

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

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

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

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

     

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

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

      Запросекст =

            "ВЫБРАТЬ

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

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

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

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

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

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

            |ИЗ

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

            |ГДЕ

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

            |

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

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

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

            |ИТОГИ

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

            |ПО

            |     ОБЩИЕ,

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

     

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

     

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

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

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

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

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

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

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

     

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

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

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

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

     

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

     

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

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

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

     

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

     

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

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

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

     

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

     

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

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

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

            КонецЦикла;

      КонецЦикла;

     

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

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

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

     

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

     

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

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

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

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