Как создать отчет «Анализ продаж» с использованием построителя отчета?
Здравствуйте, уважаемые читатели блога SoftMaker.kz! Не так давно здесь, на этом сайте была выложена обработка, в которой приводился небольшой пример того, как программно вывести табличное поле в табличный документ, используя построитель отчета. Сегодня будет подробно описано, как с помощью построителя отчета получить полноценно работающий отчет. Ну что же, приступим!
Давайте откроем Конфигуратор и в дереве метаданных конфигурации найдём ветку «Отчеты». Нажмём правую кнопку мыши и выберем пункт «Новый отчет».
Зададим имя отчета — «Анализ продаж».
С помощью этого отчета мы будем получать данные о продажах из регистра Продажи и просматривать их в таблице, а также в виде графика. Давайте передём на закладку «Формы» и создадим новую форму, используя «Конструктор формы отчета».
Появился диалог создания формы нажимаем кнопку «Готово».
В меню «Форма» главного меню Конфигуратора выбираем пункт «Вставить элемент управления».
В открывшемся списке выбираем «Поле табличного документа».
Вставляем «Поле табличного документа» на форму.
Для создания отчетов удобно применять специальный объект — «Построитель Отчета». Используем его. Переходим на закладку «Реквизиты» и вводим новый реквизит. Имя реквизита — «Построитель». Тип данных — «Построитель отчета».
Переходим на закладку «Модуль». Давайте напишем код для построителя отчета. «Построитель.Текст = …» — Затем вызываем Конструктор запроса, нажав правую клавишу мыши и выбрав из контекстного меню пункт «Конструктор запроса…».
В Конструкторе запроса Открываем группу «РегистрыНакопления», выбираем «ПродажиОбороты» и переносим в пoлe «Таблицы», используя кнопку «>». Далее, открываем группу ПродажиОбороты и переносим в пoлe «Поля» следующие реквизиты: Контрагент, Представление, Товар, Представление и СуммаОборот, также используя кнопку «>».
Переходим на закладку «Итоги». Переносим в группировочное пoлe реквизиты Контрагент и Товар. В «Суммируемое пoлe» переносим СуммаОборот. «Общие Итоги» — устанавливаем флаг. Нажимаем кнопку «ОК».
Конструктор запроса сформировал текст запроса. В конце текста запроса ставим точку с запятой.
Построитель.Текст = "ВЫБРАТЬ | ПродажиОбороты.Контрагент КАК Контрагент, | ПродажиОбороты.Контрагент.Представление, | ПродажиОбороты.Товар КАК Товар, | ПродажиОбороты.Товар Представление, | ПродажиОбороты.СуммаОборот КАК СуммаОборот |ИЗ | РегистрНакопления.ПродажиОбороты КАК ПродажиОбороты | |ИТОГИ СУММА(СуммаОБорот) ПО | ОБЩИЕ, | Контрагент, | Товар";
Чтобы построитель отчета смог использовать результаты этого запроса его нужно настроить. Для этого напишем одну строчку кода, сразу после текста запроса.
Построитель.ЗаполнитьНастройки();
Как и у любой другой кнопки, у кнопки «Сформировать» существует обработчик события, который выполняется при нажатии этой кнопки. Он называется «КнопкаСформироватьНажатие». Эта процедура описывается в модуле формы. Осталось добавить несколько строк кода в эту процедуру. Посмотрите похожий пример вывода отчета с помощью построителя отчета.
Процедура КнопкаСформироватьНажатие(Элемент) Построитель.Выполнить(); ЭлементыФормы.ПолеТабличногоДокумента1.Очистить(); Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1); КонецПроцедуры
А сейчас выберем для нашей таблицы макет оформления.
Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);
Переходим на закладку «Диалог». Предусмотрим в отчете условия отбора. Для этого в верхнюю часть формы вставляем новый элемент управления.
Этот новый элемент управления — Табличное поле.
Данные табличного поля — Построитель -> Отбор.
Теперь добавим в наш отчет возможность группировки данных по строкам и колонкам. В верхнюю часть формы вставляем ещё одно табличное поле. Данные табличного поля — Построитель -> ИзмеренияСтроки.
Добавляем третье табличное пoлe. Данные табличного поля — Построитель -> ИзмеренияКолонки.
На этом мы закончили разработку таблицы. Сейчас, для представления данных в графическом виде, добавим в наш отчет диаграмму. Форма -> Вставить Элемент управления -> Диаграмма.
Между таблицей и диаграммой вставим разделитель.
Также вставим в отчет горизонтальный разделитель.
Переходим на закладку «Модуль». Добавляем одну строку кода в процедуру «КнопкаСформироватьНажатие».
Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1);
Разработка отчета «Анализ продаж» закончена. Полный код модуля формы можно увидеть ниже.
Процедура КнопкаСформироватьНажатие(Элемент) Построитель.Выполнить(); Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1); ЭлементыФормы.ПолеТабличногоДокумента1.Очистить(); Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1); КонецПроцедуры
Построитель.Текст = "ВЫБРАТЬ | ПродажиОбороты.Контрагент КАК Контрагент, | ПродажиОбороты.Контрагент.Представление, | ПродажиОбороты.Товар КАК Товар, | ПродажиОбороты.Товар Представление, | ПродажиОбороты.СуммаОборот КАК СуммаОборот |ИЗ | РегистрНакопления.ПродажиОбороты КАК ПродажиОбороты | |ИТОГИ СУММА(СуммаОБорот) ПО | ОБЩИЕ, | Контрагент, | Товар"; Построитель.ЗаполнитьНастройки(); Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);
В режиме 1С:Предприятие 8 наш отчет выглядит следующим образом:
Как видно на рисунке первое табличное поле служит для отбора (фильтрации) данных. Например, по определенному товару. Второе табличное поле указывает, что элементы, например поля «Контрагенты» будут выводиться в строке. Можно сюда добавить и поле «Товары», его элементы, также будут выводиться в строке.
Третье табличное поле указывает, что элементы, например поля «Товары» будут выводиться в колонке. Можно сюда добавить и поле «Контрагенты», его элементы, также будут выводиться в колонке. Понятно, что «Поле табличного документа» и «Диаграмма» служат для представления информации в наглядном для пользователя виде.
А где пример то?
О каком примере ведёте речь?
Прошу прощения, не увидел строчку "просмотр только для зарегистрированных". За статью спасибо.
Пожалуйста!
Спасибо огромное автору за статью) Очень помогла!
Помогите у меня в конце ошибка
Переменная не определена (Поcтроитель)
<<?>>Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1);
Здравствуйте! Создайте реквизит формы <<Построитель>>, как указано в статье на восьмом изображении.
Спасибо большое!!! Попробовала, получилось!!!