Как вывести отчет по дням

[ Вопрос дня ] Как вывести в отчете остатки по дням не на начало дня, а на другое время?

Доброго дня, коллеги!

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

Вопрос

Ответ

Добрый день! При помощи виртуальной таблицы ОстаткиИОбороты можно разбивать данные по календарным дням, месяцам, годам (т.е. только на 00:00:00). Поэтому нужно искать обходной путь. Например, можно программно сгенерировать запрос набора данных с использованием объединения:

За период формирования отчета получаем нужные даты окончания смен – 03.05.2020 08:00, 04.05.2020 08:00 и т.д. Сколько получилось таких дат – столько запросов будет в объединении. Тогда на каждое окончание смены будут выведены остатки.

Или рассмотрите второй аналогичный подход – с использованием связи наборов данных. В курсе мы рассматривали получение цены товара на каждую дату продажи. Здесь его тоже можно применить:

  • В первом наборе данных получаем все даты, на которые нужно получить остатки.
  • Во втором – получаем остатки из регистра.

Источник

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

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

Читайте также:  Что делать если собака не дает чистить зубы

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

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

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

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

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

Параметры данных: НачалоПериода = 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

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

Источник

Оцените статью