Как вывести период в заголовке таблицы СКД и исправить ошибку совместной группировки

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

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

Анализируем причину возникновения ошибки

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

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

Способ 1. Изменение роли поля в наборе данных

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

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

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

Способ 2. Создание иерархии группировок в колонках

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

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

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

Способ 3. Использование вычисляемых полей для красивого вывода

Зачастую пользователю недостаточно видеть дату в формате «01.01.2024 00:00:00». Нам нужно вывести название месяца. Посмотрим, как это сделать через Вычисляемые поля, чтобы избежать проблем с группировками.

Перейдем на закладку «Вычисляемые поля» и добавим новое поле, например, МесяцПредставление. В выражении напишем следующий код:

Формат(Период, "ДФ='ММММ гггг'")

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

Способ 4. Группировка выбранных полей в папки

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

  1. Перейдем на закладку Настройки, затем в Выбранные поля.
  2. Нажмем правую кнопку мыши и выберем Новая группа.
  3. В заголовке группы укажем наш период (или используем параметр).
  4. Установим «Расположение» в значение Вертикально.
  5. Перетащим в эту папку нужные ресурсы и поля.

Этот метод позволяет «нарисовать» сложную многоуровневую шапку без изменения логической структуры группировок самого отчета. Рассмотрим пример: внутри одной колонки периода мы можем вывести «Количество» и «Сумму» друг под другом или рядом, объединив их общим заголовком периода сверху.

Способ 5. Отключение автополя и ручная настройка

Часто ошибка группировки возникает из-за того, что в настройках стоит Автополе. Оно пытается вывести все доступные поля во всех группировках сразу. Выясним, как это исправить:

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

Дополнительные рекомендации по оформлению

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

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

← На главную