Как сгруппировать данные по периодам (Неделя, День и др.) в отчетах СКД для 1С:ERP?

Программист 1С:ERP Управление предприятием Управленческий учет Промышленность, строительство и АПК
← На главную

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

Причина 1: Влияние функциональных опций

В крупных конфигурациях на базе БСП (Библиотеки стандартных подсистем), таких как ERP, практически каждый объект или реквизит может быть привязан к Функциональной опции (ФО). Если в настройках системы (НСИ и администрирование) отключена соответствующая опция (например, использование заказов или конкретный вид учета), то платформа автоматически скрывает связанные с этим поля во всех отчетах СКД.

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

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

Причина 2: Кэширование пользовательских настроек (БСП)

Система 1С:ERP активно использует механизмы БСП для хранения вариантов отчетов. Если вы изменили схему компоновки в конфигураторе (например, добавили новые поля ПериодНеделя или ПериодМесяц), система может продолжать использовать старую структуру, сохраненную в кэше настроек пользователя. В этом случае новые поля просто не появятся в списке доступных группировок.

Разберем процесс очистки настроек:

В пользовательском режиме откройте ваш отчет и перейдите в подменю «Ещё». Выберите пункт «Установить стандартные настройки». Если это не помогло, необходимо зайти в «Администрирование» — «Настройки пользователей и прав» — «Очистка настроек» и удалить сохраненные настройки для конкретного отчета и пользователя. Это заставит систему пересчитать схему компоновки данных заново на основе актуальной версии из конфигурации.

Причина 3: Правильное описание ролей полей периодов

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

  1. Найдите поле с самой детальной датой (например, ПериодДень). В колонке «Роль» укажите, что это Период и присвойте ему порядковый номер 1.
  2. Для поля ПериодНеделя установите роль Период с номером 2.
  3. Для ПериодМесяц — номер 3 и так далее.

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

Причина 4: Использование произвольных запросов и дополнение периодов

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


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

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

Причина 5: Ограничения на использование полей в группировках

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

Итоги и рекомендации

Для успешного построения отчета с иерархией периодов в 1С:ERP придерживайтесь следующего алгоритма:

  1. Всегда проверяйте Функциональные опции, если поле внезапно стало недоступным.
  2. Используйте функции НАЧАЛОПЕРИОДА в тексте запроса для явного выделения уровней времени (например, выбор месяца в качестве периода).
  3. Обязательно настраивайте Роли для полей периодов, соблюдая их последовательность (от меньшего к большему).
  4. При изменении структуры отчета всегда выполняйте сброс настроек в пользовательском режиме, чтобы исключить влияние старого кэша.
  5. Если требуется выводить периоды, по которым нет движений, используйте левое соединение с производственным календарем или справочником дат, так как стандартное «Дополнение» в СКД наиболее эффективно работает только с регистрами (аналогично решается срез последних N записей).

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

← На главную