В начало

«ЗакупкиПоПриходной» через КЗОР

           

Есть документ «ПриходнаяНакладная» по которому осуществляется прием товаров.

            Необходимо создать отчет по этому документу.

            В дереве объектов создаем новый отчет, называем его «ЗакупкиПоПриходной», в свойстве отчета в разделе «Формы» создаем новую форму отчета.

            На форме отчета добавляем реквизит «ТабДок» типа табличный документ и одну команду «СформироватьОтчет».

Рис. 1. Фома отчета «ЗакупкиПоПриходной»

 

            Потом идем в главное меню, находим Конструктор запроса с обработкой результата (КЗОР) и создаем макет отчета и запрос. Макет создается автоматически.

Рис. 2. Макет отчета

 

            Далее в модуле формы описываем процедуры, которые будут формировать отчет по документу.

 

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

&НаКлиенте

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

                СамОтчет(ТабДок)

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

 

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

Процедура СамОтчет (ТабДок)

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

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

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

 

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

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

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

                               "ВЫБРАТЬ

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

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

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

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

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

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

                               |ИЗ

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

                               |ГДЕ

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

                               |

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

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

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

                               |ИТОГИ

                               |               СУММА(Количество),

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

                               |ПО

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

 

 

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

 

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

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

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

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

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

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

 

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

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

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

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

 

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

 

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

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

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

 

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

 

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

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

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

                               КонецЦикла;

                КонецЦикла;

 

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

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

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

 

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

                                              

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

 

Рис. 3. Полученный отчет