При разработке отчетов с использованием системы компоновки данных, имея детальные записи, мы можем надстраивать над ними итоговые записи, формируя их по какому-то признаку. Если детальные записи обладают периодичностью (например, имеют поле Дата), то мы можем формировать итоговые записи, суммируя значения детальных записей, например, за каждый день. При этом отчет будет выглядеть красиво только в том случае, если у нас есть детальные записи для каждого дня. В противном случае итоговые записи будут сформированы только для тех дней, для которых есть детальные записи (рис. 3.1).
Рис. 3.1. Группировка по периоду без дополнения
Обычно пользователи хотят видеть отчет, в котором итоговые записи присутствуют в отчете для всех дней, независимо от того, есть ли внутри детальные записи или нет (рис. 3.2).
Рис. 3.2. Группировка по периоду с дополнением «День» в интервале 10.01.2012–20.01.2012
Для решения этой задачи система компоновки данных позволяет указывать для группировок дополнение периодов с заданной периодичностью в указанном интервале. Для примера рассмотрим Отчет по продажам (), который выводит информацию о продажах номенклатуры за указанный период. Например, необходимо получать данные о продажах по дням, вне зависимости от того, были ли движения за эти дни.
Для отчета разработан вариант настроек Основной, содержащий группировку по контрагентам с вложенными в нее группировками ПериодМесяц и ПериодДень, и вариант настроек ДинамикаПродаж, содержащий диаграмму с группировкой в сериях по полю Контрагент, а в точках – по полю ПериодДень (рис. 3.3).
Рис. 3.3. Структура отчета
Результат отчета с группировкой по периоду без дополнения будет выглядеть следующим образом (рис. 3.4, 3.5).
Рис. 3.4. Группировка по периоду без дополнения
Рис. 3.5. Диаграмма с группировкой по периоду без дополнения
Как видно, дни, за которые отсутствовали движения, не выводятся в отчет, что не позволяет оценить динамику продаж. Чтобы включить данные о продажах за любые периоды, воспользуемся дополнением периодов. Выберем вариант отчета Основной и выполним команду Все действия⇒Изменить вариант… Затем выделим в структуре отчета группировку ПериодДень и на закладке Группируемые поля установим тип дополнения День (рис. 3.6).
Рис. 3.6. Установка дополнения группировки
Нажмем кнопку Завершить редактирование, снимем признак использования отчетного периода и выполним отчет. В нем выводятся данные о продажах с периодичностью в день, даже если за эти дни не было движений (рис. 3.7).
Рис. 3.7. Группировка по периоду с дополнением «День»
Однако, как мы видим, периоды дополняются только в интервале дат, за которые были движения. Чтобы изменить ситуацию, можно указать фиксированный интервал, в котором будут дополняться периоды. Для этого нужно ввести даты в колонки Начальная дата периода и Конечная дата периода (рис. 3.8).
Рис. 3.8. Установка интервала дополнения периодов
При этом периоды будут дополняться не только в интервале дат, полученном из набора данных, но и с начальной даты до конечной даты (рис. 3.9).
Рис. 3.9. Группировка «ПериодДень» с дополнением «День» в интервале 10.01.2012–20.01.2012
В качестве начальных и конечных дат периода можно использовать не только даты, но и перечисление ТипДополненияПериодаКомпоновкиДанных (день, неделя, месяц, год и т. п.), а также Поле компоновки данных, например, поля параметров отчета. Для выбора типа следует очистить содержимое поля и воспользоваться кнопкой выбора типа. Подробнее об этом рассказывалось во второй главе (). Рассмотрим эти варианты на примере диаграммы этого отчета. Для этого выберем вариант отчета Динамика продаж и выполним команду Все действия⇒Изменить вариант… Установим для группировки диаграммы ПериодДень тип дополнения Неделя и выберем тип Поле компоновки данных (рис. 3.10).
Рис. 3.10. Выбор типа данных для указания интервала дополнения
Если в качестве начальной и/или конечной дат периода используется поле компоновки данных, то дополнение будет осуществляться до даты, полученной из этого поля. Им может быть поле параметра или поля отчета – владельца (если дополнение происходит во вложенном отчете). Для примера воспользуемся для установки интервала дополнения параметрами – начало и конец периода (рис. 3.11).
Рис. 3.11. Установка интервала дополнения периодов с помощью полей компоновки данных – параметров
При этом результат будет дополняться в том периоде, который указан в параметрах данных отчета, то есть интервал дополнения периодов будет динамически меняться в соответствии с тем, какой период формирования отчета задаст пользователь (рис. 3.12).
Рис. 3.12. Диаграмма по периоду с дополнением «Неделя» в интервале отчетного периода
Если в качестве границы интервала используется значение, имеющее тип ТипДополненияПериодаКомпоновкиДанных, то дополнение будет осуществляться до ближайшей границы выбранного типа периода. Так, если в качестве начальной и конечной дат периода выбрать Месяц, то дополнение будет осуществляться с начала месяца первой даты, присутствующей в группировке и до конца месяца последней даты, присутствующей в группировке.
Изменим Основной вариант отчета. Установим для группировки ПериодДень дополнение День и в качестве границ интервала выберем значение Месяц, имеющее тип ТипДополненияПериодаКомпоновкиДанных (рис. 3.13, 3.14).
Рис. 3.13. Выбор типа данных для указания интервала дополнения
Рис. 3.14. Установка интервала дополнения периодов с помощью перечисления «ТипДополненияПериодаКомпоновкиДанных»
Нажмем кнопку Завершить редактирование, установим произвольный отчетный период и выполним отчет. В результате дополнение произойдет по дням в пределах месяца, хотя отчетный период задан с 10.01.12 по 20.01.12 (рис. 3.15).
Рис. 3.15. Группировка «ПериодДень» с дополнением «День» в интервале «Месяц»
Изменим вариант отчета Динамика продаж. Если выбрать в качестве границ значение Неделя, то периоды будут дополняться с начала недели и до конца недели (рис. 3.16).
Рис. 3.16. Установка интервала дополнения периодов с помощью перечисления «ТипДополненияПериодаКомпоновкиДанных»
Выполним отчет. Диаграмма будет выглядеть следующим образом (рис. 3.17).
Рис. 3.17. Диаграмма по периоду с дополнением «День» в интервале «Неделя»
Существует следующая особенность для отчетов, в которых группировка по периоду вложена в группировку по объемлющему периоду. Если для дочерней группировки установить в качестве начальной и конечной даты конкретные даты, то дополнение произойдет в рамках указанного периода, то есть в отчет могут попасть данные, которые вовсе не находятся в родительской группировке. Для того чтобы дополнение дочерней группировки происходило только в интервале родительской группировки, нужно указать в качестве начальной и конечной дат дополнения периода тип дополнения периода – период родительской группировки.