Как добавить периодичность (группировку по дням, месяцам, годам) в колонки отчета 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

Часто при анализе продаж в конфигурации 1С:Розница (например, в отчете «Оценка валовой прибыли») возникает необходимость развернуть данные в колонках по определенным периодам: по дням, месяцам, кварталам или годам. Разберем по шагам, как можно реализовать такую задачу. Мы рассмотрим несколько подходов: от простых пользовательских настроек до доработки отчета в режиме Конфигуратора через Систему компоновки данных (СКД).

Решение 1: Настройка в пользовательском режиме (без программирования)

Прежде чем вмешиваться в код, давайте проверим, не заложен ли нужный функционал разработчиками программы изначально. В современных версиях типовых конфигураций нужные поля часто уже включены в скрытые настройки отчета.

Выясним, как вывести эти поля на форму:

  1. Откроем нужный отчет и перейдем в меню Настройки.
  2. Переключим вид настроек на Расширенный.
  3. Перейдем на вкладку Структура.
  4. Добавим новую группировку в раздел колонок. В списке доступных полей поищем варианты вроде Период, месяц, Период, день или Дата (месяц).

Если такие поля присутствуют, достаточно выбрать нужное и сформировать отчет. Также обратите внимание на встроенные варианты отчетов (например, «Динамика продаж»). В них данные изначально выводятся с нужной периодичностью в колонках, автоматически адаптируясь под выбранный интервал времени.

Решение 2: Доработка в СКД с использованием виртуальных таблиц

Если нужных полей в типовом отчете нет, проанализируем ситуацию с точки зрения разработчика. Если данные выбираются из виртуальных таблиц регистров накопления (например, таблица оборотов), самым правильным решением будет использование встроенного параметра периодичности.

Разберем этот метод по шагам:

  1. Откроем схему компоновки данных нашего отчета в Конфигураторе.
  2. Перейдем в конструктор запроса. В параметрах виртуальной таблицы (например, РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты) найдем параметр Периодичность.
  3. Установим значение этого параметра в Авто.

Благодаря этому действию СКД автоматически сгенерирует в наборе данных множество полей периодов: ПериодДень, ПериодНеделя, ПериодМесяц, ПериодГод и так далее.

Далее посмотрим на вкладку Поля в настройках СКД. Нам необходимо убедиться, что для сгенерированных полей правильно настроена колонка Роли. Эти поля должны иметь роль Период и соответствующий порядковый номер. Это критически важно для того, чтобы итоги по периодам рассчитывались платформой корректно.

Решение 3: Жесткое задание периода в тексте запроса

Рассмотрим альтернативный вариант. Он отлично подходит для случаев, когда данные берутся не из виртуальной таблицы оборотов, а из физической таблицы документов (например, Документ.РеализацияТоваровУслуг), либо когда нам нужно жестко ограничить выбор периодов для пользователя.

В этом случае мы будем использовать встроенную функцию языка запросов 1С НАЧАЛОПЕРИОДА. Посмотрим на пример кода, который необходимо добавить в текст запроса:


ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ДокументРеализация.Дата, МЕСЯЦ) КАК ПериодМесяц,
    ДокументРеализация.Ссылка КАК Документ
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализация

В результате выполнения этого запроса каждая дата документа будет приведена к первому числу соответствующего месяца. Аналогичным образом можно добавить поля для других периодов, заменив параметр функции на ДЕНЬ или ГОД.

Важное замечание: Этот способ считается менее гибким при использовании в СКД. При добавлении такого поля пользователю придется выбирать конкретно его в настройках, в то время как параметр Авто из первого способа позволяет платформе самостоятельно выстраивать логические связи между днями, месяцами и годами.

Настройка структуры отчета для вывода колонок

Независимо от того, какой способ доработки запроса мы выбрали, финальным этапом будет настройка вывода данных. Чтобы данные выводились именно в виде кросс-таблицы (в колонках), выполним следующие действия:

  1. Перейдем на вкладку Настройки в СКД.
  2. Удалим стандартную группировку строк, если она мешает.
  3. Добавим элемент структуры Таблица.
  4. В раздел Строки таблицы добавим нужную нам группировку (например, Номенклатура или Склад).
  5. В раздел Колонки добавим наше новое поле периода (например, ПериодМесяц или поле, сгенерированное авто-периодичностью).

После сохранения схемы компоновки и запуска отчета в режиме предприятия, мы увидим удобную таблицу, где динамика продаж или валовой прибыли наглядно развернута по выбранным временным отрезкам.

← На главную