Создание отчета РейтингКлиентов
Создадим в конфигураторе новый объект конфигурации Отчет «РейтингКлиентов». Затем создадим основную форму отчета и расположим на ней поле выбора с именем «ПолеВыбора», подписью «Тип диаграммы:» и подсказкой «Выбор типа диаграммы» (Форма | Вставить элемент управления...):
Затем разместим под ним диаграмму с именем «Диаграмма». Изменим размеры областей диаграммы, и зададим текст области заголовка - «Рейтинг клиентов»:
В модуле формы создадим процедуру «Сформировать» с заготовкой для текста запроса:
Установим курсор в предпоследней строке, перед точкой с запятой и вызовем конструктор запроса (Текст | Конструктор запроса...). Выберем виртуальную таблицу регистра накопления «Продажи.Обороты» и из нее одно поле «ПродажиОбороты.Клиент.Представление».
Затем добавим новое поле (иконка «Добавить» в командной панели над списком полей) и при помощи построителя выражений определим его как разность между выручкой и стоимостью:
В результате список выбранных полей будет иметь следующий вид:
На закладке «Объединения/Псевдонимы» укажем, что поле «ПродажиОбороты.Клиент.Представление» будет иметь псевдоним «Клиент», а вычисляемое поле - псевдоним «Доход»:
На закладке «Порядок» укажем, что строки результата нужно упорядочивать по убыванию значения поля «Доход». Нажмем «ОК» и посмотрим, какой текст сформировал конструктор запроса:
По сравнению с предыдущими отчетами, текст запроса довольно прост; единственным интересным местом, на которое следует обратить внимание, является поле «Доход», являющееся результатом вычисления выражения:
|
|
ПродажиОбороты.ВыручкаОборот - ПродажиОбороты.СтоимостьОборот КАК Доход
Теперь обработаем результат запроса таким образом, чтобы данные отобразились в диаграмме, расположенной в форме отчета.
Добавим в процедуру следующий текст (добавленный текст выделен жирным шрифтом):
Сначала, с помощью метода «Выполнить()» мы получаем результат запроса. Затем методом «Выбрать()» получаем выборку записей из результата запроса в переменной «ВыборкаРезультатаЗапроса».
Перед началом заполнения мы отключаем обновление и автотранспонирование диаграммы для того, чтобы заполнение данными выполнялось быстрее.
После этого добавляем в диаграмму единственную точку.
Затем мы организуем цикл по выборке из результата запроса и в цикле добавляем серии в нашу диаграмму. Каждому клиенту будет соответствовать своя серия. После этого мы устанавливаем значение точки, передавая методу «УстановитьЗначение()» точку, серию, для которой устанавливается значение в этой точке, и само значение.
|
|
После заполнения диаграммы данными мы включаем свойство «Обновление», чтобы новое состояние диаграммы было отображено, и «АвтоТранспонирование» для того, чтобы различные типы диаграмм, которые будут выбраны в поле выбора, отображались правильно.
Следует сделать несколько замечаний по оптимизации заполнения диаграммы данными.
Во-первых, перед началом заполнения диаграммы данными следует отключать обновление диаграммы (свойство диаграммы «Обновление»). Это значительно ускорит процесс заполнения, поскольку при включенном обновлении диаграмма будет выполнять пересчет и отрисовку автоматически. После того, как диаграмма будет заполнена данными, обновление диаграммы нужно снова включить.
Во-вторых, перед началом заполнения диаграммы данными следует также отключать автотранспонирование диаграммы (свойство диаграммы «АвтоТранспонирование»).
Автотранспонирование позволяет диаграмме анализировать данные и выбирать наиболее подходящее представление в зависимости от заданного типа диаграммы. Например, круговая диаграмма отображает значения нескольких серий в одной точке, а обычный график - как раз наоборот - значения одной серии в нескольких точках. Обратите внимание, что автотранспонирование диаграммы доступно только в режиме «ручного» заполнения данными. При использовании источника данных это свойство недоступно. После того, как диаграмма будет заполнена данными, автотранспонирование диаграммы можно снова включить, если в этом есть необходимость.
|
|
Теперь создадим обработчик события формы «ПриОткрытии», и добавим в него установку значения поля выбора и типа диаграммы, и вызов нашей процедуры «Сформировать»:
В теле модуля формы опишем заполнение списка выбора для поля выбора:
И в заключение, создадим обработчик события поля выбора «При изменении» (только разместить этот обработчик следует до списка выбора в теле модуля, иначе будет ошибка), и выполним в нем установку типа диаграммы:
Запустим 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!