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