В начало

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

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

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

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

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

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

 

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

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

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

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

&НаКлиенте

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

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

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

 

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

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

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

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

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

 

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

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

                Запросекст =

                               "ВЫБРАТЬ

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

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

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

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

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

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

                               |ИЗ

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

                               |ГДЕ

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

                               |

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

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

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

                               |ИТОГИ

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

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

                               |ПО

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

 

 

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

 

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

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

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

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

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

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

 

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

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

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

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

 

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

 

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

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

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

 

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

 

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

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

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

                               КонецЦикла;

                КонецЦикла;

 

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

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

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

 

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

                                              

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

 

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