К статье
Практический материал

Отчеты и Аналитика · 9 мин

Как сгруппировать данные по месяцам в СКД 1С

Как сгруппировать данные по месяцам в СКД 1С: периодичность группировки, вычисляемые поля, функция НачалоПериода в запросе, настройки и типичные ошибки.

Группировка по месяцам — одна из самых частых задач при построении отчетов на системе компоновки данных (СКД) в 1С. Продажи, поступления, начисления зарплаты, движения по складу — почти любой аналитический отчет требуется разложить по календарным месяцам, чтобы увидеть динамику. При этом у разработчика есть несколько способов это сделать, и выбор зависит от того, как построен запрос и какие требования предъявляются к итоговой форме.

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

Ниже разобраны основные подходы с конкретными шагами: где именно в конструкторе СКД указывается периодичность, как написать запрос с функцией НАЧАЛОПЕРИОДА, как оформить вывод месяца в читаемом виде и какие ошибки чаще всего приводят к тому, что группировка «не работает» или показывает не те итоги.

Способ 1. Периодичность группировки в настройках СКД

Самый быстрый и «правильный» с точки зрения платформы способ — использовать встроенный механизм периодичности. Если в наборе данных есть поле с типом «Дата» (например, Период регистратора или дата документа), СКД умеет автоматически сворачивать его до нужного уровня: день, неделя, месяц, квартал, год.

Для этого откройте схему компоновки данных, перейдите на закладку «Настройки», добавьте группировку по полю даты. Затем выделите эту группировку и в нижней части окна настроек найдите параметр «Периодичность» (вкладка «Группировка» либо кнопка с параметрами группировки, в зависимости от версии платформы и режима настроек). Установите значение «Месяц».

После этого отчет при формировании покажет строки вида «Январь», «Февраль» и т.д. с итогами по ресурсам внутри каждого месяца. Важно, что исходное поле даты при этом остается в запросе как есть — свертку выполняет сама компоновка, поэтому детализацию можно вернуть в любой момент, просто сменив периодичность обратно на «Авто» или «День».

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

Нюанс: если группировка по дате вложена внутрь другой группировки (например, «Контрагент» → «Период»), периодичность задается именно для вложенной группировки. Если задать её у внешней — эффекта на месяцы не будет.

Способ 2. Группировка месяца в запросе через НАЧАЛОПЕРИОДА

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

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

Обратите внимание на три обязательных элемента: функция НАЧАЛОПЕРИОДА указана и в списке выбираемых полей, и в предложении СГРУППИРОВАТЬ ПО, а также добавлена сортировка по полю месяца — иначе месяцы могут выводиться в произвольном порядке. Ресурсы (суммы, количество) оборачиваются агрегатной функцией СУММА.

Для виртуальных таблиц оборотов регистров накопления есть еще более короткий путь: у таблицы «Обороты» можно задать параметр периодичности «Месяц» прямо в конструкторе запроса, и тогда поле «Период» уже будет содержать начало месяца. Это снижает объем выбираемых данных на уровне СУБД, что полезно на больших регистрах.

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

Способ 3. Вычисляемое поле и форматирование месяца

Иногда требуется не просто сгруппировать, а вывести месяц в особом виде — например, «2026-01» или «Янв 24». Для этого на закладке «Вычисляемые поля» схемы компоновки можно создать поле с выражением на языке выражений СКД, а затем группировать уже по нему.

Однако учтите ограничение: язык выражений компоновки беднее встроенного языка 1С, и функции форматирования дат в нем ограничены. Часто проще вычислить месяц в запросе, а представление задать через форматную строку: выделите поле в настройках, откройте «Оформление» и в параметре «Формат» укажите, например, ДФ='ММММ гггг' — тогда дата начала месяца отобразится как «Январь 2026».

Группировка по месяцам в колонках (кросс-таблица)

Частая аналитическая задача — показать месяцы не строками, а колонками: например, товары по строкам и продажи по каждому месяцу в колонках. В СКД это делается через таблицу: в настройках вместо «Группировка» добавьте элемент «Таблица», в строки поместите измерение (номенклатуру, контрагента), а в колонки — поле периода с периодичностью «Месяц».

Для колонок действует то же правило периодичности: выделите группировку колонки по дате и установите «Периодичность» = «Месяц». Ресурс (сумма, количество) добавляется в выбранные поля и автоматически раскладывается на пересечения строк и колонок.

Практическое ограничение: если период отчета широкий (несколько лет), количество колонок станет неудобным для просмотра. В таких случаях периодичность лучше поднять до квартала или ограничить период параметрами отчета.

Проверка результата и типичные проблемы

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

Контрольные точки

Как проверить результат

Количество строк группировки
Норма

Одна строка на каждый месяц периода

Тревожный признак

Много строк с одинаковым месяцем — группировка по дате, а не по месяцу

Порядок месяцев
Норма

Январь, февраль, март — по возрастанию

Тревожный признак

Хаотичный порядок — нет сортировки по полю периода

Итоги по ресурсам
Норма

Совпадают со стандартным отчетом за тот же период

Тревожный признак

Расхождения — проверяйте отборы и виртуальные таблицы

Пустые месяцы
Норма

Месяцы без данных отсутствуют или показаны с нулями осознанно

Тревожный признак

Ожидались нулевые строки, но их нет — нужно дополнение периодов

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

Типичные ошибки
01
Группировка по полю «Дата» без периодичности — получаются строки по каждому дню или документу, а не по месяцам
02
НАЧАЛОПЕРИОДА указана в полях, но забыта в СГРУППИРОВАТЬ ПО — запрос падает с ошибкой или дает неверные итоги
03
Нет сортировки по полю месяца — месяцы выводятся в произвольном порядке
04
Попытка задать формат вместо группировки — текст выглядит как месяц, но строки не свернуты
05
Ожидание пустых месяцев без включения дополнения периодов — разрывы в динамике воспринимаются как ошибка

Какой способ выбрать

Если отчет интерактивный и пользователь сам управляет настройками — используйте периодичность группировки в настройках СКД. Если структура фиксирована, а запрос работает с виртуальными таблицами оборотов — задайте периодичность «Месяц» в самой виртуальной таблице или через НАЧАЛОПЕРИОДА. Для кросс-отчетов с месяцами в колонках — таблица с группировкой колонок по периоду.

Маршрут решения

Как выбрать действие

Пользователь должен менять детализацию отчета самПериодичность «Месяц» в настройках группировки СКД
Структура отчета жестко зафиксированаНАЧАЛОПЕРИОДА(Период, МЕСЯЦ) в запросе с группировкой
Нужны месяцы в колонкахЭлемент «Таблица» в настройках, период в колонки с периодичностью «Месяц»
Нужны месяцы без движенийВключите «Дополнение периодов» = «Месяц» у группировки
Работа с оборотами регистра накопленияПериодичность «Месяц» в параметрах виртуальной таблицы Обороты
Итог

Что важно запомнить

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

Частые вопросы

Почему в отчете несколько строк с одним и тем же месяцем?

Скорее всего, группировка построена по исходному полю даты без периодичности, а месяц выведен только форматом. Установите у группировки параметр «Периодичность» = «Месяц» либо группируйте в запросе по НАЧАЛОПЕРИОДА(Период, МЕСЯЦ).

Как вывести месяц словами, а не датой?

Выделите поле периода в настройках, откройте оформление и задайте форматную строку, например ДФ='ММММ гггг'. Поле при этом должно оставаться типа «Дата» — формат меняет только отображение.

Можно ли группировать по месяцам без изменения запроса?

Да, именно для этого существует параметр «Периодичность» у группировки в настройках СКД. Запрос продолжает возвращать даты, а свертку до месяца выполняет сама компоновка при формировании отчета.

Как показать месяцы, в которых не было данных?

У группировки по периоду в настройках есть параметр «Дополнение периодов». Установите значение «Месяц» — тогда в отчете появятся все месяцы выбранного интервала, включая пустые.

Что быстрее: группировка в запросе или периодичность в СКД?

На больших объемах данных выгоднее сворачивать на уровне запроса — например, задав периодичность «Месяц» у виртуальной таблицы оборотов: СУБД вернет меньше записей. Периодичность в настройках удобнее для интерактивности, но компоновке приходится обрабатывать более детальные данные.

Как сделать месяцы колонками, а не строками?

В настройках СКД добавьте элемент «Таблица»: в строки поместите аналитическое измерение (товар, контрагент), в колонки — поле периода, и у колоночной группировки установите «Периодичность» = «Месяц». Ресурс добавьте в выбранные поля таблицы.