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