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