Как убрать лишние итоговые поля и ресурсы в группировках отчета СКД?

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

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

Проанализируем основные причины возникновения проблемы:

  1. Наследование состава полей через <Автополе>: если для конкретной группировки не настроен индивидуальный список выбранных полей, она автоматически забирает весь список полей верхнего уровня отчета.
  2. Отсутствие ограничения расчета ресурса: если на вкладке Ресурсы поле добавлено без явного указания группировок в колонке Рассчитывать по..., СКД производит расчет агрегатной функции для всех уровней иерархии и общего итога.
  3. Поле не является ресурсом: если числовое поле не объявлено ресурсом, но добавлено в выбранные поля группировки, платформа выводит для него первое значение из выборки детальных записей.

Способ 1. Настройка выбранных полей конкретной группировки

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

Выполним настройку по шагам:

  1. Перейдем на вкладку Настройки схемы компоновки данных.
  2. В окне Структура выделим вышестоящую группировку (например, Контрагент).
  3. В нижней части перейдем на вкладку Выбранные поля.
  4. Удалим элемент <Автополе>, чтобы отключить автоматическое наследование полей с верхнего уровня отчета.
  5. Добавим вручную только те поля, которые должны выводиться для данной группировки (например, только поле Сумма и поле группировки Контрагент), исключив поле Цена.
  6. Для вложенной группировки (Номенклатура) оставим полный набор полей, включая поле Цена.

Способ 2. Ограничение расчета на вкладке «Ресурсы»

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

Выполним следующие действия:

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

В этом случае на уровне группировок Контрагент и в общем итоге СКД присвоит ячейке значение Null, и числовое значение не будет выводиться.

Способ 3. Отключение вывода итогов в настройках структуры

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

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

Способ 4. Скрытие значений через условное оформление

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

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

Важный нюанс: при скрытии текста через условное оформление значение в памяти компоновщика сохраняется и может влиять на дальнейшую обработку расшифровки ячейки. Для полного исключения значения из расчетов и структуры рекомендуется комбинировать Способ 1 и Способ 2.

← На главную