Как в СКД скрыть итоги по полю, сохранив значения в детальных записях

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

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

Метод 1. Условное оформление для конкретной группировки

Самый быстрый и популярный способ — использование визуального перекрытия текста. Мы не удаляем само значение, а просто указываем системе, что на определенных уровнях вместо цифр должен отображаться пустой текст. Разберем этот процесс по шагам:

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

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

Метод 2. Тонкая настройка ресурсов (вкладка «Ресурсы»)

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

Рассмотрим вкладку Ресурсы в конструкторе СКД. По умолчанию поле добавляется в ресурсы с выражением суммы (СУММА(Поле)), а колонка Рассчитывать по... остается пустой. Пустая колонка означает, что итог считается по всем доступным измерениям и в общих итогах.

Чтобы скрыть итоги в группировках, выполним следующие действия:

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

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

Метод 3. Использование системных полей в условиях

Иногда нужно скрыть итоги программно или динамически, опираясь на структуру отчета. Для этого в условном оформлении (на уровне всего отчета) можно использовать системные поля ТипЗаписи или Уровень.

Рассмотрим пример настройки условия:

После установки такого условия в параметре Оформление также указываем Текст = "". Это универсальный способ, который не требует жесткой привязки к именам группировок.

Метод 4. Выражения в ресурсах с функцией УРОВЕНЬ()

Мы можем управлять выводом данных прямо в выражении ресурса. Посмотрим на пример использования языка выражений СКД:


ВЫБОР 
    КОГДА УРОВЕНЬ() > 2 ТОГДА СУММА(СуммаОборот) 
    ИНАЧЕ 0 
КОНЕЦ

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

Проблема «прыгающих» колонок и ее решение

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

Выясним причину: СКД формирует таблицу на основе состава полей каждой строки. Если в детальной записи 5 колонок, а в группировке выше — только 4, то поле из детальной записи, которому «некуда приткнуться» в группировке, визуально смещается в самый конец (в правую часть отчета). Это выглядит как ошибка верстки.

Решение проблемы: Никогда не удаляйте поле из состава «Выбранных полей» группировки, если оно должно оставаться в детальных записях в той же колонке. Вместо удаления используйте Метод 1 или Метод 2. Таким образом, поле формально присутствует в каждой строке, сохраняя структуру колонок, но его содержимое остается невидимым для пользователя.

Метод 5. Собственные макеты для итогов

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

  1. Создадим Макет группировки или Макет области итогов.
  2. Укажем имя группировки и тип макета (Заголовок, Подвал, Итог).
  3. В области макета нарисуем таблицу так, как она должна выглядеть. Для поля, которое нужно скрыть, просто не будем указывать параметр в соответствующей ячейке макета.

Этот способ дает 100% контроль над визуальным представлением, хотя и требует больше времени на реализацию. Проанализировав все перечисленные методы, можно сделать вывод: для большинства задач идеально подходит сочетание настройки ресурсов («Рассчитывать по...») и условного оформления по типу записи.

← На главную