Обновлено: 14.06.2007

Дополнение периодов в системе компоновки данных

Для некоторых отчетов необходимо получать данные на все периоды в заданном интервале. Например, получать остатки по дням, вне зависимости от того, были ли движения за эти дни. Система компоновки данных позволяет указывать для группировок дополнение периодов с заданной периодичностью в указанном интервале.

Для примера, рассмотрим отчет, который выводит остатки и обороты за указанный период.

Данные будем получать при помощи следующего запроса:

Копировать в буфер обмена
ВЫБРАТЬ
 УчетНоменклатурыОстаткиИОбороты.Номенклатура,
 УчетНоменклатурыОстаткиИОбороты.Склад,
 УчетНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток,
 УчетНоменклатурыОстаткиИОбороты.КоличествоОборот,
 УчетНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток,
 УчетНоменклатурыОстаткиИОбороты.НомерСтроки,
 УчетНоменклатурыОстаткиИОбороты.Регистратор,
 УчетНоменклатурыОстаткиИОбороты.ПериодСекунда,
 УчетНоменклатурыОстаткиИОбороты.ПериодДень
ИЗ
 РегистрНакопления.УчетНоменклатуры.ОстаткиИОбороты(, , Авто, , ) КАК УчетНоменклатурыОстаткиИОбороты

Для отчета будем использовать следующие настройки:

Т.е. в отчет будем выдавать группировку по периоду и диаграмму группировкой по периоду в сериях.

Если мы будем получать отчет с группировкой по периоду без дополнения, то результат отчета будет выглядеть следующим образом:

Параметры данных: НачалоПериода = 01.02.2002 0:00:00
  КонецПериода = 28.02.2002 23:59:59
Период день Количество начальный остаток Количество оборот Количество конечный остаток  
01.02 189 -53 136  
02.02 136 5 141  
05.02 141 -3 138  
13.02 138 101 239  
14.02 239 -4 235  
15.02 235 -25 210  
18.02 210 -19 191  
22.02 191 30 221  
24.02 221 -12 209  
26.02 209 -12 197  
28.02 197   197  
Итого 189 8 197  

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

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

Результат отчета с этой настройкой будет выглядеть следующим образом:

Параметры данных: НачалоПериода = 01.02.2002 0:00:00
  КонецПериода = 28.02.2002 23:59:59
Период день Количество начальный остаток Количество оборот Количество конечный остаток  
01.02 189 -53 136  
02.02 136 5 141  
03.02 141   141  
04.02 141   141  
05.02 141 -3 138  
06.02 138   138  
07.02 138   138  
08.02 138   138  
09.02 138   138  
10.02 138   138  
11.02 138   138  
12.02 138   138  
13.02 138 101 239  
14.02 239 -4 235  
15.02 235 -25 210  
16.02 210   210  
17.02 210   210  
18.02 210 -19 191  
19.02 191   191  
20.02 191   191  
21.02 191   191  
22.02 191 30 221  
23.02 221   221  
24.02 221 -12 209  
25.02 209   209  
26.02 209 -12 197  
27.02 197   197  
28.02 197   197  
Итого 189 8 197  

В данном результате видно, что остатки выдаются на все дни, даже если в эти дни не было движений.

При необходимости, для поля группировки можно указать интервал, в котором нужно дополнять периоды. Для этого следует ввести даты в колонки "Начальная дата периода" и "Конечная дата периода" поля группировки. При этом дополнение будет происходить не только в интервале дат, полученных из набора данных, но с начальной даты до конечной даты.

Для демонстрации этой возможности воспользуемся отчетом о продажах, в котором будем использовать следующий запрос:

Копировать в буфер обмена
ВЫБРАТЬ
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.СуммаОборот,
    ПродажиОбороты.ПериодДень КАК Период,
    ПродажиОбороты.ПериодМесяц
ИЗ
    РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты

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

Результат отчета без дополнения будет выглядеть так:

Параметры данных: НачалоПериода = 01.03.2002 0:00:00
  КонецПериода = 31.03.2002 23:59:59
Период Количество оборот  
17.03.2002 0:00:00 52  
20.03.2002 0:00:00 20  
Итого 72  

Результат с дополнением по дням без указания интервала будет выглядеть так:

Параметры данных: НачалоПериода = 01.03.2002 0:00:00
  КонецПериода = 31.03.2002 23:59:59
Период Количество оборот  
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
Итого 72  

Т.е. дополнение произошло в интервале, дат, которые были получены из набора данных.

Если у поля группировки установить начальную и конечную дату периода следующим образом:

То дополнение по дням произойдет в указанном интервале и результат отчета будет выглядеть так:

Параметры данных: НачалоПериода = 01.03.2002 0:00:00
  КонецПериода = 31.03.2002 23:59:59
Период Количество оборот  
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
Итого 72  

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

Если в качестве начальной и/или конечной дат периода используется поле, то дополнение будет осуществляться до даты, полученной из этого поля. Заметим, что в качестве полей, значение которых будет использоваться для указания начальной или конечной даты периода, можно использовать только поля - параметры и поля отчета - владельца (в случае если дополнение происходит во вложенном отчете). Для примера, воспользуемся в качестве начальной даты полем - параметром - начало периода, а в качестве конечной даты - параметром - конец периода. При этом результат будет дополняться в том периоде, который указан в параметрах данных отчета.

Параметры данных: НачалоПериода = 01.03.2002 0:00:00
  КонецПериода = 31.03.2002 23:59:59
Период Количество оборот  
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
Итого 72  

Как видно в данном примере, дополнение произошло в интервале, указанном в параметрах данных.

Если в качестве границы интервала используется тип ТипДополненияПериодаКомпоновкиДанных, то дополнение будет осуществляться до ближайшей границы выбранного типа периода. Так, если в качестве начальной и конечной дат периода выбрать Месяц, то дополнение будет осуществляться с начала месяца первой даты, присутствующей в группировке и до конца месяца последней даты, присутствующей в группировке. Если выбрать в качестве границ выбрать значение Неделя, то периоды будут дополняться с начала недели и до конца недели. Другие типы дополнения отрабатываются аналогично.

Параметры данных: НачалоПериода = 01.03.2002 0:00:00
  КонецПериода = 31.03.2002 23:59:59
Период Количество оборот  
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
Итого 72  

Данная возможность особенно полезна для создания отчетов, в которых группировка по периоду вложена в группировку по объемлющему периоду.

Рассмотрим следующую настройку:

В отчет будут выдаваться периоды, сгруппированные по месяцам.

Если для группировки по периоду установить в качестве начальной и конечной даты конкретные даты, то дополнение произойдет в рамках указанного периода, т.е. в отчет выведутся периоды, которые вовсе не находятся в текущей группировке по месяцам.

При дополнении в периоде 01.01.2002 - 31.03.2002 результат может выглядеть следующим образом:

Параметры данных: Начало периода = 01.01.2002 0:00:00
  Конец периода = 31.03.2002 23:59:59
Период месяц Количество оборот  
Период  
01.01.2002 0:00:00 67  
01.01.2002 0:00:00    
02.01.2002 0:00:00    
03.01.2002 0:00:00    
04.01.2002 0:00:00    
05.01.2002 0:00:00    
06.01.2002 0:00:00    
07.01.2002 0:00:00    
08.01.2002 0:00:00    
09.01.2002 0:00:00    
10.01.2002 0:00:00 4  
11.01.2002 0:00:00 29  
12.01.2002 0:00:00    
13.01.2002 0:00:00    
14.01.2002 0:00:00    
15.01.2002 0:00:00    
16.01.2002 0:00:00 21  
17.01.2002 0:00:00    
18.01.2002 0:00:00 3  
19.01.2002 0:00:00    
20.01.2002 0:00:00    
21.01.2002 0:00:00 1  
22.01.2002 0:00:00    
23.01.2002 0:00:00    
24.01.2002 0:00:00    
25.01.2002 0:00:00    
26.01.2002 0:00:00    
27.01.2002 0:00:00    
28.01.2002 0:00:00    
29.01.2002 0:00:00 9  
30.01.2002 0:00:00    
31.01.2002 0:00:00    
01.02.2002 0:00:00    
02.02.2002 0:00:00    
03.02.2002 0:00:00    
04.02.2002 0:00:00    
05.02.2002 0:00:00    
06.02.2002 0:00:00    
07.02.2002 0:00:00    
08.02.2002 0:00:00    
09.02.2002 0:00:00    
10.02.2002 0:00:00    
11.02.2002 0:00:00    
12.02.2002 0:00:00    
13.02.2002 0:00:00    
14.02.2002 0:00:00    
15.02.2002 0:00:00    
16.02.2002 0:00:00    
17.02.2002 0:00:00    
18.02.2002 0:00:00    
19.02.2002 0:00:00    
20.02.2002 0:00:00    
21.02.2002 0:00:00    
22.02.2002 0:00:00    
23.02.2002 0:00:00    
24.02.2002 0:00:00    
25.02.2002 0:00:00    
26.02.2002 0:00:00    
27.02.2002 0:00:00    
28.02.2002 0:00:00    
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00    
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00    
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
01.02.2002 0:00:00 128  
01.01.2002 0:00:00    
02.01.2002 0:00:00    
03.01.2002 0:00:00    
04.01.2002 0:00:00    
05.01.2002 0:00:00    
06.01.2002 0:00:00    
07.01.2002 0:00:00    
08.01.2002 0:00:00    
09.01.2002 0:00:00    
10.01.2002 0:00:00    
11.01.2002 0:00:00    
12.01.2002 0:00:00    
13.01.2002 0:00:00    
14.01.2002 0:00:00    
15.01.2002 0:00:00    
16.01.2002 0:00:00    
17.01.2002 0:00:00    
18.01.2002 0:00:00    
19.01.2002 0:00:00    
20.01.2002 0:00:00    
21.01.2002 0:00:00    
22.01.2002 0:00:00    
23.01.2002 0:00:00    
24.01.2002 0:00:00    
25.01.2002 0:00:00    
26.01.2002 0:00:00    
27.01.2002 0:00:00    
28.01.2002 0:00:00    
29.01.2002 0:00:00    
30.01.2002 0:00:00    
31.01.2002 0:00:00    
01.02.2002 0:00:00 53  
02.02.2002 0:00:00    
03.02.2002 0:00:00    
04.02.2002 0:00:00    
05.02.2002 0:00:00 3  
06.02.2002 0:00:00    
07.02.2002 0:00:00    
08.02.2002 0:00:00    
09.02.2002 0:00:00    
10.02.2002 0:00:00    
11.02.2002 0:00:00    
12.02.2002 0:00:00    
13.02.2002 0:00:00    
14.02.2002 0:00:00 4  
15.02.2002 0:00:00 25  
16.02.2002 0:00:00    
17.02.2002 0:00:00    
18.02.2002 0:00:00 19  
19.02.2002 0:00:00    
20.02.2002 0:00:00    
21.02.2002 0:00:00    
22.02.2002 0:00:00    
23.02.2002 0:00:00    
24.02.2002 0:00:00 12  
25.02.2002 0:00:00    
26.02.2002 0:00:00 12  
27.02.2002 0:00:00    
28.02.2002 0:00:00    
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00    
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00    
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
01.03.2002 0:00:00 72  
01.01.2002 0:00:00    
02.01.2002 0:00:00    
03.01.2002 0:00:00    
04.01.2002 0:00:00    
05.01.2002 0:00:00    
06.01.2002 0:00:00    
07.01.2002 0:00:00    
08.01.2002 0:00:00    
09.01.2002 0:00:00    
10.01.2002 0:00:00    
11.01.2002 0:00:00    
12.01.2002 0:00:00    
13.01.2002 0:00:00    
14.01.2002 0:00:00    
15.01.2002 0:00:00    
16.01.2002 0:00:00    
17.01.2002 0:00:00    
18.01.2002 0:00:00    
19.01.2002 0:00:00    
20.01.2002 0:00:00    
21.01.2002 0:00:00    
22.01.2002 0:00:00    
23.01.2002 0:00:00    
24.01.2002 0:00:00    
25.01.2002 0:00:00    
26.01.2002 0:00:00    
27.01.2002 0:00:00    
28.01.2002 0:00:00    
29.01.2002 0:00:00    
30.01.2002 0:00:00    
31.01.2002 0:00:00    
01.02.2002 0:00:00    
02.02.2002 0:00:00    
03.02.2002 0:00:00    
04.02.2002 0:00:00    
05.02.2002 0:00:00    
06.02.2002 0:00:00    
07.02.2002 0:00:00    
08.02.2002 0:00:00    
09.02.2002 0:00:00    
10.02.2002 0:00:00    
11.02.2002 0:00:00    
12.02.2002 0:00:00    
13.02.2002 0:00:00    
14.02.2002 0:00:00    
15.02.2002 0:00:00    
16.02.2002 0:00:00    
17.02.2002 0:00:00    
18.02.2002 0:00:00    
19.02.2002 0:00:00    
20.02.2002 0:00:00    
21.02.2002 0:00:00    
22.02.2002 0:00:00    
23.02.2002 0:00:00    
24.02.2002 0:00:00    
25.02.2002 0:00:00    
26.02.2002 0:00:00    
27.02.2002 0:00:00    
28.02.2002 0:00:00    
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
Итого 267  

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

Для того, чтобы в рамках группировки по месяцу дополнение группировки - период происходило только в интервале этого месяца, укажем в качестве начальной и конечной дат дополнения периода тип дополнения периода - Месяц.

Результат будет выглядеть так:

Параметры данных: Начало периода = 01.01.2002 0:00:00
  Конец периода = 31.03.2002 0:00:00
     
Период месяц Количество оборот  
Период  
01.01.2002 0:00:00 67  
01.01.2002 0:00:00    
02.01.2002 0:00:00    
03.01.2002 0:00:00    
04.01.2002 0:00:00    
05.01.2002 0:00:00    
06.01.2002 0:00:00    
07.01.2002 0:00:00    
08.01.2002 0:00:00    
09.01.2002 0:00:00    
10.01.2002 0:00:00 4  
11.01.2002 0:00:00 29  
12.01.2002 0:00:00    
13.01.2002 0:00:00    
14.01.2002 0:00:00    
15.01.2002 0:00:00    
16.01.2002 0:00:00 21  
17.01.2002 0:00:00    
18.01.2002 0:00:00 3  
19.01.2002 0:00:00    
20.01.2002 0:00:00    
21.01.2002 0:00:00 1  
22.01.2002 0:00:00    
23.01.2002 0:00:00    
24.01.2002 0:00:00    
25.01.2002 0:00:00    
26.01.2002 0:00:00    
27.01.2002 0:00:00    
28.01.2002 0:00:00    
29.01.2002 0:00:00 9  
30.01.2002 0:00:00    
31.01.2002 0:00:00    
01.02.2002 0:00:00 128  
01.02.2002 0:00:00 53  
02.02.2002 0:00:00    
03.02.2002 0:00:00    
04.02.2002 0:00:00    
05.02.2002 0:00:00 3  
06.02.2002 0:00:00    
07.02.2002 0:00:00    
08.02.2002 0:00:00    
09.02.2002 0:00:00    
10.02.2002 0:00:00    
11.02.2002 0:00:00    
12.02.2002 0:00:00    
13.02.2002 0:00:00    
14.02.2002 0:00:00 4  
15.02.2002 0:00:00 25  
16.02.2002 0:00:00    
17.02.2002 0:00:00    
18.02.2002 0:00:00 19  
19.02.2002 0:00:00    
20.02.2002 0:00:00    
21.02.2002 0:00:00    
22.02.2002 0:00:00    
23.02.2002 0:00:00    
24.02.2002 0:00:00 12  
25.02.2002 0:00:00    
26.02.2002 0:00:00 12  
27.02.2002 0:00:00    
28.02.2002 0:00:00    
01.03.2002 0:00:00 72  
01.03.2002 0:00:00    
02.03.2002 0:00:00    
03.03.2002 0:00:00    
04.03.2002 0:00:00    
05.03.2002 0:00:00    
06.03.2002 0:00:00    
07.03.2002 0:00:00    
08.03.2002 0:00:00    
09.03.2002 0:00:00    
10.03.2002 0:00:00    
11.03.2002 0:00:00    
12.03.2002 0:00:00    
13.03.2002 0:00:00    
14.03.2002 0:00:00    
15.03.2002 0:00:00    
16.03.2002 0:00:00    
17.03.2002 0:00:00 52  
18.03.2002 0:00:00    
19.03.2002 0:00:00    
20.03.2002 0:00:00 20  
21.03.2002 0:00:00    
22.03.2002 0:00:00    
23.03.2002 0:00:00    
24.03.2002 0:00:00    
25.03.2002 0:00:00    
26.03.2002 0:00:00    
27.03.2002 0:00:00    
28.03.2002 0:00:00    
29.03.2002 0:00:00    
30.03.2002 0:00:00    
31.03.2002 0:00:00    
Итого 267  

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