- •2.10 Лабораторная работа № 10. Конструктор запросов.
- •2.10.1. Теоретические сведения
- •2.10.1.1 Отчет «РеестрДокументовОказаниеУслуги»
- •2.10.1.2 Отчет «Рейтинг услуг»
- •2.10.1.3 Отчет «ВыручкаМастеров»
- •2.10.1.4 Отчет «ПереченьУслуг»
- •2.10.1.5 Отчет «РейтингКлиентов»
- •2.10.1.5.1 Диаграмма
- •2.10.1.5.2 Создание отчета «РейтингКлиентов»
- •2.10.1.6 Универсальный отчет
- •2.10.2 Задание на лабораторную работу
- •2.10.3 Контрольные вопросы
2.10.1.3 Отчет «ВыручкаМастеров»
Отчет «Выручка мастеров» будет содержать информацию о том, какая выручка была получена предприятием благодаря работе каждого из мастеров, с детализацией по всем дням в выбранном периоде и разворотом по клиентам, обслуженным в каждый из дней. На примере этого отчета мы проиллюстрируем, как строить многоуровневые группировки в запросе, как обходить все даты в выбранном периоде, и как управлять состоянием группировок в табличном документе. Создадим новый объект конфигурации «Отчет «ВыручкаМастеров»».
Рис. 28
Перейдем на закладку «Макет» и запустим конструктор выходной формы.
Рис. 29
Выберем виртуальную таблицу регистра накопления «Продажи.Обороты». Зададим для нее значения параметров «НачалоПериода», «КонецПериода» и «Периодичность».
Рис. 30
После этого выберем из таблицы следующие поля:
• «ПродажиОбороты.Мастер»,
• «ПродажиОбороты.Период»,
• «ПродажиОбороты.Клиент»,
• «ПродажиОбороты.ВыручкаОборот».
Рис. 31
Теперь перейдем на закладку «Объединения/Псевдонимы» и зададим псевдоним «Выручка» для поля «ПродажиОбороты.ВыручкаОборот».
Рис. 32
На закладке «Порядок» определим, что результат запроса будет отсортирован по возрастанию значения поля «Период» и на закладке «Итоги» зададим получение общих итогов и промежуточных итогов по полям «Мастер» и «Период».
Рис. 33
Рис. 34
На закладке «Отчет» сбросим флаг «Использовать построитель отчета». На закладке «Выходная форма» отметим, что тип параметров «ДатаНачала» и «ДатаОкончания» будет «Дата». Нажмем «ОК».
Сразу, как и в предыдущем отчете, определим состав даты для полей ввода, расположенных в форме, и затем в вызове процедуры «ВыручкаМастеров» уточним передачу последнего параметра при помощи функции «КонецДня()»:
Рис. 35
Рис. 36
Рис. 37
Рис. 38
Теперь обратимся к процедуре «ВыручкаМастеров» и в первую очередь рассмотрим текст запроса, сформированный конструктором. В части описания запроса обратите внимание, что у источника данных, кроме задания начала и окончания периода расчета итогов, задана периодичность выбираемых данных - «День».Именно благодаря этому у нас появляется возможность описать среди выбранных полей поле «Период».
Далее в тексте запроса следует известная нам часть упорядочивания результатов, и в следующей части - описание итогов - мы видим новые для нас строки:
Помимо общих итогов, в нашем запросе будут рассчитаны промежуточные итоги по полям «Мастер» и «Период».
Рис. 39
Теперь, чтобы наглядно продемонстрировать смысл наших дальнейших действий, запустите 1С:Предприятие в режиме отладки и посмотрите на результат работы отчета «Выручка мастеров» за некоторый период:
Рис. 40
Если вы помните, в начале раздела мы говорили, что этот отчет должен показывать данные с детализацией по всем дням в выбранном периоде. У нас же отображаются только те дни, для которых существуют ненулевые записи в таблице регистра накопления. Поэтому сейчас мы займемся тем, что изменим текст программы таким образом, чтобы в отчет попадала каждая дата из указанного периода. Вернемся к модулю отчета «ВыручкаМастеров» и, в части описания итогов запроса, уточним, каким образом должны рассчитываться итоги по полю «Период»:
Рис. 41
Такая запись говорит о том, что итоги должны быть, рассчитаны периодами равными дню, в интервале дат, задаваемом параметрами «ДатаНачала» и «ДатаОкончания».
И для того, чтобы все эти итоги попали в итоговый табличный документ, нам нужно будет уточнить порядок вывода итогов в выборке результата запроса:
Рис. 42
Смысл внесенных нами уточнений заключается в том, что теперь при формировании выборки по группировке «Период» будут выбираться все имеющиеся значения группировок. Запустим 1С:Предприятие в режиме отладки и выполним отчет «ВыручкаМастеров» за некоторый период, например, неделю.
Рис. 43
Очевидно, что такой внешний вид отчета абсолютно «нечитабелен», поэтому мы снова вернемся к модулю отчета и внесем небольшие уточнения в алгоритм вывода областей табличного документа:
Рис. 44
Смысл внесенных нами изменений заключается в том, что при выводе областей детальных записей и периода, мы сворачиваем группировки, которые по умолчанию выводятся развернутыми. Запустим 1С:Предприятие в режиме отладки и снова выполним отчет «ВыручкаМастеров» за период в месяц. На этот раз результат выглядит гораздо лучше:
Рис. 45
Итак, на примере этого отчета мы продемонстрировали, как строить многоуровневые группировки в запросе, как обходить все даты в выбранном периоде, и как управлять состоянием группировок в табличном документе.