Как создать отчет «Анализ продаж» с использованием построителя отчета?

Здравствуйте, уважаемые читатели блога SoftMaker.kz! Не так давно здесь, на этом сайте была выложена обработка, в которой приводился небольшой пример того, как программно вывести табличное поле в табличный документ, используя построитель отчета. Сегодня будет подробно описано, как с помощью построителя отчета получить полноценно работающий отчет. Ну что же, приступим!

Давайте откроем Конфигуратор и в дереве метаданных конфигурации найдём ветку «Отчеты». Нажмём правую кнопку мыши и выберем пункт «Новый отчет».

Начинаем создавать отчет Анализ продаж. Новый отчет.

Зададим имя отчета — «Анализ продаж».

Имя — Анализ продаж

С помощью этого отчета мы будем получать данные о продажах из регистра Продажи и просматривать их в таблице, а также в виде графика. Давайте передём на закладку «Формы» и создадим новую форму, используя «Конструктор формы отчета».

Создание новой формы при помощи Конструктора формы отчета

Появился диалог создания формы нажимаем кнопку «Готово».

Диалог создания формы

В меню «Форма» главного меню Конфигуратора выбираем пункт «Вставить элемент управления».

Вставляем новый элемент управления

В открывшемся списке выбираем «Поле табличного документа».

Выбираем Поле табличного документа

Вставляем «Поле табличного документа» на форму.

Поле табличного документа на форме

Для создания отчетов удобно применять специальный объект — «Построитель Отчета». Используем его. Переходим на закладку «Реквизиты» и вводим новый реквизит. Имя реквизита — «Построитель». Тип данных — «Построитель отчета».

Ввод реквизита - Построитель

Переходим на закладку «Модуль». Давайте напишем код для построителя отчета. «Построитель.Текст = …» — Затем вызываем Конструктор запроса, нажав правую клавишу мыши и выбрав из контекстного меню пункт «Конструктор запроса…».

Формируем текст запроса для построителя

В Конструкторе запроса Открываем группу «РегистрыНакопления», выбираем «ПродажиОбороты» и переносим в пoлe «Таблицы», используя кнопку «>». Далее, открываем группу ПродажиОбороты и переносим в пoлe «Поля» следующие реквизиты: Контрагент, Представление, Товар, Представление и СуммаОборот, также используя кнопку «>».

Выбираем поля для запроса

Переходим на закладку «Итоги». Переносим в группировочное пoлe реквизиты Контрагент и Товар. В «Суммируемое пoлe» переносим СуммаОборот. «Общие Итоги» — устанавливаем флаг. Нажимаем кнопку «ОК».

Формируем итоги запроса

Конструктор запроса сформировал текст запроса. В конце текста запроса ставим точку с запятой.

Построитель.Текст = "ВЫБРАТЬ
|  ПродажиОбороты.Контрагент  КАК  Контрагент,
|  ПродажиОбороты.Контрагент.Представление,
|  ПродажиОбороты.Товар  КАК  Товар,
|  ПродажиОбороты.Товар Представление,
|  ПродажиОбороты.СуммаОборот  КАК  СуммаОборот
|ИЗ
|  РегистрНакопления.ПродажиОбороты КАК ПродажиОбороты  
|
|ИТОГИ  СУММА(СуммаОБорот) ПО
|  ОБЩИЕ,
|  Контрагент,
|  Товар";

Чтобы построитель отчета смог использовать результаты этого запроса его нужно настроить. Для этого напишем одну строчку кода, сразу после текста запроса.

Построитель.ЗаполнитьНастройки();

Как и у любой другой кнопки, у кнопки «Сформировать» существует обработчик события, который выполняется при нажатии этой кнопки. Он называется «КнопкаСформироватьНажатие». Эта процедура описывается в модуле формы. Осталось добавить несколько строк кода в эту процедуру. Посмотрите похожий пример вывода отчета с помощью построителя отчета.

Процедура  КнопкаСформироватьНажатие(Элемент)
  Построитель.Выполнить();
  ЭлементыФормы.ПолеТабличногоДокумента1.Очистить();
  Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
КонецПроцедуры

А сейчас выберем для нашей таблицы макет оформления.

Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);

Переходим на закладку «Диалог». Предусмотрим в отчете условия отбора. Для этого в верхнюю часть формы вставляем новый элемент управления.

Вставляем новый элемент управления

Этот новый элемент управления — Табличное поле.

Новый элемент управления - Табличное поле

Данные табличного поля — Построитель -> Отбор.

Построитель -> Отбор

Теперь добавим в наш отчет возможность группировки данных по строкам и колонкам. В верхнюю часть формы вставляем ещё одно табличное поле. Данные табличного поля — Построитель -> ИзмеренияСтроки.

Построитель -> ИзмеренияСтроки

Добавляем третье табличное пoлe. Данные табличного поля — Построитель -> ИзмеренияКолонки.

Построитель -> ИзмеренияКолонки

На этом мы закончили разработку таблицы. Сейчас, для представления данных в графическом виде, добавим в наш отчет диаграмму. Форма -> Вставить Элемент управления -> Диаграмма.

Новый элемент управления - Диаграмма

Между таблицей и диаграммой вставим разделитель.

Вертикальный разделитель

Также вставим в отчет горизонтальный разделитель.

Горизонтальный разделитель

Переходим на закладку «Модуль». Добавляем одну строку кода в процедуру «КнопкаСформироватьНажатие».

Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1);

Разработка отчета «Анализ продаж» закончена. Полный код модуля формы можно увидеть ниже.

Процедура  КнопкаСформироватьНажатие(Элемент)
  Построитель.Выполнить();
  Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1);
  ЭлементыФормы.ПолеТабличногоДокумента1.Очистить();
  Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
КонецПроцедуры
Построитель.Текст = "ВЫБРАТЬ
| ПродажиОбороты.Контрагент КАК Контрагент,
| ПродажиОбороты.Контрагент.Представление,
| ПродажиОбороты.Товар КАК Товар,
| ПродажиОбороты.Товар Представление,
| ПродажиОбороты.СуммаОборот КАК СуммаОборот
|ИЗ
| РегистрНакопления.ПродажиОбороты КАК ПродажиОбороты 
|
|ИТОГИ СУММА(СуммаОБорот) ПО
| ОБЩИЕ,
| Контрагент,
| Товар";
Построитель.ЗаполнитьНастройки();
Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);

В режиме 1С:Предприятие 8 наш отчет выглядит следующим образом:

Горизонтальный разделитель

Как видно на рисунке первое табличное поле служит для отбора (фильтрации) данных. Например, по определенному товару. Второе табличное поле указывает, что элементы, например поля «Контрагенты» будут выводиться в строке. Можно сюда добавить и поле «Товары», его элементы, также будут выводиться в строке.

Третье табличное поле указывает, что элементы, например поля «Товары» будут выводиться в колонке. Можно сюда добавить и поле «Контрагенты», его элементы, также будут выводиться в колонке. Понятно, что «Поле табличного документа» и «Диаграмма» служат для представления информации в наглядном для пользователя виде.

ПОДПИСКА

8 ответы
  1. Александр говорит:

    Прошу прощения, не увидел строчку "просмотр только для зарегистрированных". За статью спасибо.

  2. Алексей говорит:

    Спасибо огромное автору за статью) Очень помогла!

  3. Марк говорит:

    Помогите у меня в конце ошибка
    Переменная не определена (Поcтроитель)
    <<?>>Поcтроитель.Вывести(ЭлементыФормы.Диаграмма1);

  4. Softmaker говорит:

    Здравствуйте! Создайте реквизит формы <<Построитель>>, как указано в статье на восьмом изображении.

  5. ЛЛЛ говорит:

    Спасибо большое!!! Попробовала, получилось!!!

Комментарии закрыты.