Создание отчета РейтингКлиентов



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

Затем разместим под ним диаграмму с именем «Диаграмма». Изменим размеры областей диаграммы, и зададим текст области заголовка - «Рейтинг клиентов»:

В модуле формы создадим процедуру «Сформировать» с заготовкой для текста запроса:

Установим курсор в предпоследней строке, перед точкой с запятой и вызовем конструктор запроса (Текст | Конструктор запроса...). Выберем виртуальную таблицу регистра накопления «Продажи.Обороты» и из нее одно поле «ПродажиОбороты.Клиент.Представление».

Затем добавим новое поле (иконка «Добавить» в командной панели над списком полей) и при помощи построителя выражений определим его как разность между выручкой и стоимостью:

В результате список выбранных полей будет иметь следующий вид:

На закладке «Объединения/Псевдонимы» укажем, что поле «ПродажиОбороты.Клиент.Представление» будет иметь псевдоним «Клиент», а вычисляемое поле - псевдоним «Доход»:

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

По сравнению с предыдущими отчетами, текст запроса довольно прост; единственным интересным местом, на которое следует обратить внимание, является поле «Доход», являющееся результатом вычисления выражения:

ПродажиОбороты.ВыручкаОборот - ПродажиОбороты.СтоимостьОборот КАК Доход

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

Добавим в процедуру следующий текст (добавленный текст выделен жирным шрифтом):

Сначала, с помощью метода «Выполнить()» мы получаем результат запроса. Затем методом «Выбрать()» получаем выборку записей из результата запроса в переменной «ВыборкаРезультатаЗапроса».

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

После этого добавляем в диаграмму единственную точку.

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

После заполнения диаграммы данными мы включаем свойство «Обновление», чтобы новое состояние диаграммы было отображено, и «АвтоТранспонирование» для того, чтобы различные типы диаграмм, которые будут выбраны в поле выбора, отображались правильно.

Следует сделать несколько замечаний по оптимизации заполнения диаграммы данными.

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

Во-вторых, перед началом заполнения диаграммы данными следует также отключать автотранспонирование диаграммы (свойство диаграммы «АвтоТранспонирование»).

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

Теперь создадим обработчик события формы «ПриОткрытии», и добавим в него установку значения поля выбора и типа диаграммы, и вызов нашей процедуры «Сформировать»:

В теле модуля формы опишем заполнение списка выбора для поля выбора:

И в заключение, создадим обработчик события поля выбора «При изменении» (только разместить этот обработчик следует до списка выбора в теле модуля, иначе будет ошибка), и выполним в нем установку типа диаграммы:

Запустим 1С:Предприятие в режиме отладки и откроем отчет «РейтингКлиентов». Обратите внимание, что при наведении курсора на столбец гистограммы появляется подсказка:

Теперь изменим тип диаграммы на «Круговая объемная»:

Только что мы рассмотрели с вами общий случай заполнения диаграммы данными. Однако если исходные данные могут быть получены в виде таблицы значений или области ячеек табличного документа, существует более простой и эффективный способ заполнения диаграммы данными, используя свойство диаграммы - «ИсточникДанных».

Вернемся в модуль формы отчета «РейтингКлиентов» и все строки, которыми мы добавляли в диаграмму данные:

заменим одной строкой:

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

Запустите 1С:Предприятие в режиме отладки и проверьте работу отчета.

Обратите внимание на то, что некоторые типы диаграмм выглядят «некрасиво» (график) или не отображаются совсем (изометрическая непрерывная, изометрическая лента). Это связано с тем, что при использовании источника данных нет возможности использовать свойство диаграммы «АвтоТранспонирование» и нужно обрабатывать транспонирование диаграммы «вручную» (используя свойство «СерииВСтроках»).

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

 

Оформить отчет по лабораторной работе и ответить на контрольные вопросы.

Отчет оформляется стандартно, с обязательным указанием номера лабораторной работы, ее темы, сведений о лице, выполнившем лабораторную работу (ФИО, № группы), должен быть указан порядок выполнения работы (последовательность действий, какие объекты были созданы, их роль и обоснование необходимости создания), который должен подтверждаться необходимыми скриншотами и/или алгоритмами.

 

Контрольные вопросы к защите

1. Для чего предназначен объект встроенного языка Запрос?

2. Что является источником данных запроса?

3. В чем отличие между реальными, виртуальными и ссылочными таблицами?

4. Из каких частей состоит текст запроса, какие из них являются обязательными?

5. Каковы основные синтаксические конструкции языка запросов?

6. Как использовать конструктор запроса?

7. Что такое псевдонимы в языке запросов?

8. Что такое параметры запроса?

9. Что такое параметры виртуальной таблицы?

10. Что такое левое соединение?

11. Как запросом выбрать данные в некотором периоде?

12. Как использовать в запросе данные нескольких таблиц?

13. Как использовать группировки в запросе и в табличном документе?

14. Как запросом получить последние значения регистра сведений?

15. Как вывести запросом иерархический справочник?

16. Что такое диаграмма и для чего она используется?

17. Как устроена диаграмма?

18. Какие существуют способы заполнения диаграммы данными?

19. Как заполнить диаграмму данными, используя средства встроенного языка?

 


Дата добавления: 2015-12-20; просмотров: 29; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!