Как в СКД скрыть или отключить итоги по отдельным ресурсам?

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

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

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

Почему при отключении итогов по горизонтали пропадают ресурсы

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

Способ 1. Настройка расчета на вкладке «Ресурсы»

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

Разберем по шагам, как это реализовать:

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

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

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

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

Разберем настройку оформления по шагам:

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

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

Способ 3. Разделение выбранных полей по уровням структуры

В отчетах с иерархической структурой типа Список мы можем управлять составом полей на каждом уровне группировки индивидуально. Это позволяет выводить ресурс в детальных строках, не выводя его в строке заголовка или подвала группировки.

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

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

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

Способ 4. Формирование колонок через пользовательское поле для структуры «Таблица»

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

  1. На вкладке Пользовательские поля создадим новое поле-выражение со строковым значением, например: "Итог".
  2. В настройках структуры отчета в секцию Колонки параллельно основной группировке добавим группировку по созданному пользовательскому полю.
  3. В свойствах этой колонки на вкладке Выбранные поля отключим флаг Авто и укажем исключительно те ресурсы, которые должны образовать итоговую секцию.
  4. После создания собственной контролируемой колонки итогов штатные общие итоги таблицы по горизонтали можно безопасно перевести в значение Нет — данные по детальным колонкам больше не пропадут.

Способ 5. Переопределение области через макет оформления

В сложных аналитических отчетах со строгими требованиями к внешнему виду печатной формы наиболее гибким вариантом является создание собственного макета:

  1. Перейдем на вкладку Макеты схемы компоновки данных.
  2. Нажмем Добавить макет и выберем тип Макет общего итога или Макет подвала группировки.
  3. Выделим область ячеек, соответствующую строке итога, и вручную зададим параметры только для тех колонок, где вывод сумм необходим. Ячейку нежелательного ресурса оставим пустой либо объединим с соседней областью.

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

← На главную