Отчет Выручка мастеров
Отчет Выручка мастеров будет содержать информацию о том, какая выручка была получена ООО «На все руки мастер» благодаря работе каждого из мастеров, с детализацией по всем дням в выбранном периоде и разворотом по клиентам, обслуженным в каждый из дней. На примере этого отчета мы проиллюстрируем, как строить многоуровневые группировки в запросе и как обходить все даты в выбранном периоде.
Создадим новый объект конфигурации Отчет. Назовем его ВыручкаМастеров и запустим конструктор основной схемы компоновки данных.
Создадим Набор данных запрос и запустим конструктор запроса. Выберем виртуальную таблицу регистра накопления Продажи.Обороты.
Зададим один из параметров этой виртуальной таблицы – Периодичность. Для этого перейдем в поле Таблицы и нажмем кнопку Параметры виртуальной таблицы (рис. 5.1).
Рис. 5.1. Изменение параметров виртуальной таблицы
В открывшемся окне параметров зададим значение параметра Периодичность – День (рис. 5.2). Нажмем OK.
Рис. 5.2. Параметры виртуальной таблицы
После этого выберем из таблицы следующие поля:
§ ПродажиОбороты.Мастер;
§ ПродажиОбороты.Период;
§ ПродажиОбороты.Клиент;
§ ПродажиОбороты.ВыручкаОборот (рис. 5.3).
Рис. 5.3. Выбранные поля
Теперь перейдем на закладку Объединения/Псевдонимы и зададим псевдоним Выручка для поля ПродажиОбороты.ВыручкаОборот (рис. 5.4).
Рис. 5.4. Объединения/Псевдонимы
На закладке Группировка определим, что группировка будет проводиться по полям Мастер, Период и Клиент, а значения поля ВыручкаОборот будут суммироваться (рис. 5.5).
Рис. 5.5. Поля группировок
На закладке Порядок определим, что результат запроса будет отсортирован по возрастанию значения поля Период. Нажмем ОK.
|
Рассмотрим текст запроса, сформированный конструктором (листинг 5.1).
Листинг 5.1. Текст запроса
ВЫБРАТЬ
ПродажиОбороты.Мастер,
ПродажиОбороты.Период КАК Период,
ПродажиОбороты.Клиент,
СУММА(ПродажиОбороты.ВыручкаОборот) КАК Выручка
ИЗ
РегистрНакопления.Продажи.Обороты(,, День,) КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Мастер,
ПродажиОбороты.Период,
ПродажиОбороты.Клиент
УПОРЯДОЧИТЬ ПО
Период
В части описания запроса обратите внимание, что у источника данных кроме задания начала и окончания периода расчета итогов задана периодичность выбираемых данных – День (листинг 5.2):
Листинг 5.2. Задание периодичности виртуальной таблицы
ИЗ
РегистрНакопления.Продажи.Обороты(,, День,) КАК ПродажиОбороты
Именно благодаря этому у нас появляется возможность описать среди выбранных полей поле Период.
Теперь перейдем к редактированию схемы компоновки данных. На закладке Ресурсы нажмем >> и убедимся, что конструктор выбрал единственный имеющийся у нас ресурс – Выручка.
На закладке Параметры выполним те же действия, что и при создании предыдущего отчета.
Для параметра НачалоПериода зададим заголовок Дата начала. В поле Доступные типы зададим состав даты – Дата.
Для параметра КонецПериода зададим выражение (листинг 5.3) и в поле Ограничение доступности установим флаг ограничения доступности.
Листинг 5.3. Выражение для расчета параметра КонецПериода
КонецПериода(&ДатаОкончания, "День")
В заключение добавим еще один параметр – ДатаОкончания, установим его тип как Дата, состав даты – Дата.
|
В результате перечисленных действий параметры компоновки данных будут иметь следующий вид (рис. 5.6):
Рис. 5.6. Параметры компоновки данных
Теперь создадим структуру отчета. На закладке Настройки последовательно создадим две вложенные группировки: верхнего уровня – по полю Мастер, вложенная в нее – по полю Период. Затем добавим еще одну группировку, вложенную в группировку по полю Период, – Детальные записи (без указания группировочного поля) (рис. 5.7).
Рис. 5.7. Структура отчета
Теперь, находясь на уровне глобального отчета, перейдем на закладку Выбранные поля и добавим в список поля Клиент и Выручка.
В заключение, с уровня глобального отчета перейдем на закладку Другие настройки и изменим следующие параметры. Для параметра Расположение полей группировок установим значение Отдельно и только в итогах; для параметра Расположение общих итогов по вертикали зададим значение Начало и для параметра Заголовок зададим значение Выручка мастеров (рис. 5.8).
Рис. 5.8. Установка вывода общих итогов в начало
Запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы отчета Выручка мастеров за период с 01.03.2004 по 30.04.2004 (рис. 5.9).
Рис. 5.9. Результат выполнения отчета
Если вы помните, в начале мы говорили, что этот отчет должен показывать данные с детализацией по всем дням в выбранном периоде. У нас же отображаются только те дни, для которых существуют ненулевые записи в таблице регистра накопления. Поэтому сейчас мы изменим настройки отчета таким образом, чтобы в отчет попадала каждая дата из периода, за который сформирован отчет.
|
Для этого мы вернемся в режим конфигуратора и выполним более тонкую настройку структуры отчета. До сих пор все настройки структуры, которые мы выполняли, относились ко всему отчету в целом. Но система компоновки данных позволяет настраивать также и каждый элемент структуры в отдельности.
В нашем случае потребуется изменить настройку группировки Период. Для того чтобы перейти к настройкам именно этой группировки, в поле структуры установим курсор на эту группировку, а затем нажмем кнопку Период в командной панели (рис. 5.10).
Рис. 5.10. Настройки группировки Период
В нижней части формы будут отображены настройки, доступные для данной группировки.
Перейдем на закладку Поля группировки. Для поля Период установим Тип дополнения – День(рис. 5.11).
Рис. 5.11. Установка типа дополнения периода
Тем самым мы укажем, что для этой группировки существующие записи с ненулевым значением ресурса будут дополняться записями для каждого из дней.
После этого следует указать, в каком именно периоде будет выполняться такое дополнение. В поля, расположенные строчкой ниже, можно ввести даты начала и окончания этого периода. Но указание дат в явном виде нас не устраивает, т.к. пользователь может сформировать отчет за произвольный период. И нам нужно, чтобы дополнение дат выполнялось не в некотором фиксированном периоде, а именно в том периоде, который выбрал пользователь для всего отчета.
Для того чтобы обеспечить именно такую работу отчета, войдем в режим редактирования первого поля (например, дважды кликнув на нем) и нажмем на кнопку очистки (Х). После этого, нажав на кнопку Т, мы сможем выбрать тип данных, отображаемых в этом поле. Выберем Поле компоновки данных (рис. 5.12).
Рис. 5.12. Выбор типа данных
Нажмем OK. Теперь нажмем в поле ввода кнопку выбора (…) и в открывшемся окне выбора поля отметим параметр НачалоПериода (рис. 5.13). Нажмем OK.
Рис. 5.13. Выбор поля
Для второго поля ввода аналогичным образом укажем, что дата окончания периода будет получена из параметра ДатаОкончания (рис. 5.14).
Рис. 5.14. Настройки группировки Период
Запустим 1С:Предприятие в режиме отладки и выполним отчет Выручка мастеров за период с 20.03.2004 по 20.04.2004 (рис. 5.15).
Рис. 5.15. Результат выполнения отчета
На примере этого отчета мы продемонстрировали, как строить многоуровневые группировки и как установить в системе компоновки обход по всем датам в выбранном периоде.
Отчет Переченьуслуг
Отчет Перечень услуг будет содержать информацию о том, какие услуги и по какой цене оказывает ООО «На все руки мастер». На его примере мы познакомимся с возможностью получения последних значений из периодического регистра сведений и вывода иерархических справочников.
Создадим новый объект конфигурации Отчет. Назовем его ПереченьУслуг и запустим конструктор схемы компоновки данных. Создадим новый Набор данных запрос и вызовем конструктор запроса.
Выберем объектную (ссылочную) таблицу справочника Номенклатура и виртуальную таблицу регистра сведений Цены.СрезПоследних. Для того чтобы исключить неоднозначность имен в запросе, переименуем таблицу Номенклатура в СпрНоменклатура.
Вызовем диалог ввода параметров виртуальной таблицы ЦеныСрезПоследних и укажем, что период будет передан в параметре ДатаОтчета (рис. 5.16).
Рис. 5.16. Параметры виртуальной таблицы
Затем выберем из таблиц следующие поля:
§ СпрНоменклатура.Родитель;
§ СпрНоменклатура.Ссылка;
§ ЦеныСрезПоследних.Цена (рис. 5.17).
Рис. 5.17. Выбранные поля
Перейдем на закладку Связи, сбросим флаг Все у таблицы регистра и установим его у таблицы справочника.
На закладке Условия зададим условие выбора элементов справочника Номенклатура - выбираемые элементы должны соответствовать виду номенклатуры, переданному в параметре запроса ВидНоменклатуры (рис. 5.18).
Рис. 5.18. Условия выбора элементов
На закладке Объединения/Псевдонимы укажем, что поле Родитель будет иметь псевдоним ГруппаУслуг, а поле Ссылка – Услуга (рис. 5.19).
Рис. 5.19. Объединения/Псевдонимы
Перейдем на закладку Группировка и укажем, что группировка будет производиться по полю СпрНоменклатура.Родитель Значения суммируемых полей задавать не станем (рис. 5.20).
Рис.5.20. Поля группировки
На этом создание запроса завершено, нажмем OK. Теперь рассмотрим текст запроса, сформированный конструктором (листинг 5.4).
Листинг 5.4. Текст запроса
ВЫБРАТЬ
СпрНоменклатура.Родитель КАК ГруппаУслуг,
СпрНоменклатура.Ссылка КАК Услуга,
ЦеныСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаОтчета,) КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
СпрНоменклатура.ВидНоменклатуры = &ВидНоменклатуры
СГРУППИРОВАТЬ ПО
СпрНоменклатура.Родитель,
СпрНоменклатура.Ссылка,
ЦеныСрезПоследних.Цена
Практически все конструкции, использованные в этом запросе, нам уже известны.
Перейдем к редактированию схемы компоновки данных. На закладке Ресурсы нажатием кнопки >> выберем единственный доступный ресурс Цена.
На закладке Параметры зададим значение параметра ВидНоменклатуры как Перечисление.ВидыНоменклатуры.Услуга. Кроме этого снимем ограничение доступности для параметра ДатаОтчета и зададим ему заголовок – Дата отчета. В поле Доступные типы зададим состав даты – Дата. Для параметра Период, наоборот, установим ограничение доступности (рис. 5.21).
Рис. 5.21. Параметры схемы компоновки
Приступим к созданию структуры отчета. Перейдем на закладку Настройки и создадим группировку по полю ГруппаУслуг, указав тип группировки Иерархия. Внутри этой группировки создадим еще одну группировку без указания группового поля. Она будет содержать детальные записи отчета (рис. 5.22).
Рис. 5.22. Структура и выделенные поля отчета
Перейдем на закладку Выбранные поля и укажем, что в отчет будут выводиться поля Услуга и Цена (рис. 5.23).
Рис. 5.23. Структура отчета
И в заключение настроим внешний вид отчета на закладке Другие настройки. Так как наш отчет будет представлять собой просто список оказываемых услуг, в котором интересны цены на конкретные услуги, выводить значения ресурса Цена для каждой из группировок и для всего отчета в целом не имеет смысла.
Чтобы запретить вывод общих итогов в отчете, установим параметр Расположение общих итогов по вертикали в значение Нет.
Затем перейдем к настройкам конкретной группировки – ГруппаУслуг. Для параметра Расположение итогов этой группировки укажем значение Нет. Вернемся к настройкам всего отчета в целом.
Для параметра Расположение полей группировок укажем значение Отдельно и только в итогах (так наш отчет будет лучше «читаться»). Напоследок зададим заголовок отчета – Перечень услуг.
Теперь запустим 1С:Предприятие в режиме отладки и прежде всего откроем периодический регистр Цены.
Добавим в него еще одно значение для услуги Диагностика: новая цена услуги на 01.04.2004 – 350 (рис. 5.24). Это позволит нам протестировать отчет.
Рис. 5.24. Записи регистра «Цены»
Теперь выполним отчет Перечень услуг по состоянию на 31.03.2004 (рис. 5.25).
Рис. 5.25 Результат выполнения отчета
Наш отчет правильно отражает цену услуги Диагностика на 31.03.2004 – 200 руб.
Еще раз выполним отчет, но теперь уже на другую дату - 01.04.2004 (рис. 5.26).
Рис. 5.26. Результат выполнения отчета
Как видите, показана новая цена услуги Диагностика — 350 руб.
Таким образом, на примере этого отчета мы показали, как система компоновки данных получает последние значения из периодического регистра сведений и как вывести группировки по иерархии справочника.
Отчет Рейтинг клиентов
Отчет Рейтинг клиентов будет показывать, каков доход от оказания услуг каждому из клиентов за все время работы ООО «На все руки мастер». На его примере мы продемонстрируем возможность использования диаграммы для отображения результата запроса.
Диаграмма
Диаграмма является элементом управления, предназначенным для размещения в таблицах и формах диаграмм и графиков различного вида системы 1С:Предприятие.
Логически диаграмма является совокупностью точек, серий и значений серий в точке (рис. 5.27).
Рис. 5.27. Пример диаграммы
Как правило, в качестве точек используются моменты или объекты, для которых мы получаем значения характеристик, а в качестве серий – характеристики, значения которых нас интересуют.
Например, диаграмма продаж видов номенклатуры по месяцам будет состоять из точек – месяцев, серий – видов номенклатуры и значений – оборотов продаж.
Диаграмма как объект встроенного языка имеет три области, которые позволяют управлять оформлением диаграммы: область построения, область заголовка и область легенды (рис.5.28).
Рис. 5.28. Области диаграммы
Диаграмма может быть вставлена в структуру отчета как отдельный элемент. В следующем отчете мы будем использовать диаграмму в структуре настроек схемы компоновки данных.
Создание отчета Рейтинг клиентов
Создадим в конфигураторе новый объект конфигурации Отчет. Назовем его РейтингКлиентов, откроем его основную схему компоновки данных.
Создадим набор данных – запрос, вызовем конструктор запроса и выберем виртуальную таблицу регистра накопления Продажи.Обороты и из нее одно поле – ПродажиОбороты.Клиент.
Затем добавим новое поле (значок Добавить в командной панели над списком полей) и при помощи построителя выражений определим его как разность между выручкой и стоимостью (рис. 5.29).
Рис. 5.29. Редактор произвольного выражения поля
В результате список выбранных полей будет иметь следующий вид (рис. 5.30):
Рис. 5.30. Выбранные поля
На закладке Объединения/Псевдонимы укажем, что вычисляемое поле будет иметь псевдоним Доход (рис. 5.31).
Рис. 5.31. Объединения/Псевдонимы
На закладке Порядок укажем, что строки результата нужно упорядочивать по убыванию значения поля Доход. Нажмем OK и посмотрим, какой текст сформировал конструктор запроса (листинг 5.5).
Листинг 5.5. Текст запроса
ВЫБРАТЬ
ПродажиОбороты.Клиент,
ПродажиОбороты.ВыручкаОборот – ПродажиОбороты.СтоимостьОборот КАК Доход
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
УПОРЯДОЧИТЬ ПО
Доход УБЫВ
По сравнению с предыдущими отчетами текст запроса довольно прост. Единственным интересным местом, на которое следует обратить внимание, является поле Доход, являющееся результатом вычисления выражения (листинг 5.6).
Листинг 5.6. Вычисляемое поле
ПродажиОбороты.ВыручкаОборот – ПродажиОбороты.СтоимостьОборот КАК Доход
Теперь добавим поле Доход в ресурсы и перейдем на закладку Настройки для того, чтобы создать структуру отчета.
В отличие от всех предыдущих отчетов, структура которых содержала группировки, в этот раз добавим в структуру отчета диаграмму (рис. 5.32).
Рис. 5.32. Структура отчета
В точки диаграммы добавим группировку по полю Клиент. Серии диаграммы оставим без изменений.
Теперь перейдем на закладку Выбранные поля и выберем поле Доход для вывода в отчет. Структура отчета должна принять следующий вид (рис. 5.33):
Рис. 5.33. Структура отчета и настройки диаграммы
На закладке Другие настройки зададим заголовок отчета – Рейтинг клиентов, а также выберем тип диаграммы – Круговая объемная.
Запустим 1С:Предприятие в режиме отладки и откроем отчет Рейтинг клиентов (рис. 5.34).
Рис. 5.34. Круговая объемная диаграмма в отчете
Обратите внимание, что при наведении курсора на сектор диаграммы появляется подсказка.
Откроем настройки отчета и изменим тип диаграммы на Измерительная. Заново сформируем отчет (рис. 5.35).
Рис. 5.35. Измерительная диаграмма в отчете
На примере этого отчета мы продемонстрировали, как можно использовать различные виды диаграмм для визуализации данных отчета.
Универсальный отчет
На примере создания универсального отчета мы узнаем, как система компоновки данных может взаимодействовать со сводной таблицей.
Создадим в конфигураторе новый объект конфигурации Отчет. Присвоим ему имя Универсальный. Откроем его основную схему компоновки данных и создадим новый набор данных – запрос.
Вызовем конструктор запроса и выберем виртуальную таблицу регистра накопления Продажи.Обороты. Из этой таблицы выберем все поля (рис. 5.36).
Рис. 5.36. Выбранные поля
На закладке Группировка с помощью кнопок >> выберем все поля, доступные для группировки, а все ресурсы добавим в Суммируемые поля (рис. 5.37).
Рис. 5.37. Поля группировки и ресурсы
Нажмем OK и посмотрим на текст, сформированный конструктором запроса (листинг 5.7).
Листинг 5.7. Текст запроса
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
ПродажиОбороты.Клиент,
ПродажиОбороты.Мастер,
СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
СУММА(ПродажиОбороты.ВыручкаОборот) КАК ВыручкаОборот,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот
ИЗ
РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Клиент,
ПродажиОбороты.Мастер,
ПродажиОбороты.Номенклатура
Закончим создание схемы компоновки данных тем, что на закладке конструктора схемы компоновки Ресурсы выберем все доступные ресурсы (нажмем >>). На этом работа со схемой компоновки данных завершена, закроем ее и вернемся к окну редактирования объекта конфигурации Отчет Универсальный.
Перейдем на закладку Формы и создадим основную форму отчета, нажав на кнопку просмотра у табличного поля Основная форма отчета. Так как основная форма пока отсутствует, система вызовет конструктор форм. Согласимся с тем, что система предлагает по умолчанию, и сразу нажмем Готово.
На экране откроется основная форма отчета. Как видите, система уже вставила за нас поле табличного документа и дала ему имя Результат (рис. 5.38).
Рис.5.38. Редактирование формы отчета
Мы собираемся вставить в это поле сводную таблицу. Но ячейки поля табличного документа Результат сейчас находятся в режиме Только просмотр. Для того чтобы вставить сводную таблицу, нужно снять этот режим, поэтому щелкнем на поле табличного документа и выполним Таблица → Вид → Только просмотр. Теперь мы можем редактировать табличное поле.
Установим курсор в верхнюю левую ячейку поля табличного документа и выполним Таблица → Встроенные таблицы → Вставить сводную таблицу. Система добавит в табличное поле сводную таблицу и откроет окно полей сводной таблицы (рис. 5.39).
Рис. 5.39. Сводная таблица
Для того чтобы в сводную таблицу вывести данные, нам потребуется написать несколько строк в модуле формы. Откроем модуль формы отчета и добавим в текст переменную, которая нам понадобится (листинг 5.8).
Листинг 5.8. Объявление переменной
Перем ИсточникСводнойТаблицы;
После этого создадим обработчик события формы отчета При открытии (через свойство формы отчета) и добавим в него следующий текст (листинг 5.9):
Листинг 5.9. Обработчик события формы отчета При открытии
Процедура ПриОткрытии()
ИсточникСводнойТаблицы = Новый ИсточникДанныхСводнойТаблицыКомпоновкиДанных;
ИсточникСводнойТаблицы.УстановитьСхему(СхемаКомпоновкиДанных);
ЭлементыФормы.Результат.ВстроенныеТаблицы.СводнаяТаблица1.ИсточникДанных = ИсточникСводнойТаблицы;
ИсточникСводнойТаблицы.УстановитьНастройки(КомпоновщикНастроек.Настройки);
КонецПроцедуры
Этим текстом мы устанавливаем сводной таблице в качестве источника данных схему компоновки данных и устанавливаем ей настройки компоновщика настроек.
В схеме компоновки данных ВыручкаОборот, КоличествоОборот и СтоимостьОборот выделим как ресурсы.
Запустим 1С:Предприятие в режиме отладки и откроем отчет Универсальный. На экране появится форма отчета и окно выбора полей сводной таблицы (рис. 5.40).
Рис. 5.40. Отчет Универсальный
Поместим измерение Номенклатура – в строки, измерение Мастер – в колонки, а значение ресурса ВыручкаОборот в данные. Отчет примет следующий вид (рис. 5.41):
Рис. 5.41. Результат выполнения отчета
Теперь в окне выбора полей сводной таблицы раскроем группу Номенклатура и добавим значение (Без иерархии) в строки, а измерение Клиент добавим в колонки. Отчет изменит свой вид (рис. 5.42).
Рис. 5.43. Результат выполнения отчета
Таким образом, используя данные схемы компоновки данных, мы предоставили пользователю альтернативную возможность самостоятельно формировать отчет по регистру ОказанныеУслуги.