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

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

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

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

Метод 1. Настройка расчета ресурса «Рассчитывать по...»

Это самый быстрый и архитектурно правильный способ, заложенный в логику работы СКД. Рассмотрим ситуацию, когда у нас есть группировка Склад и детальные записи. Нам нужно видеть итог по складу, но не видеть цифры в строках товаров.

  1. Перейдем на вкладку «Ресурсы» в схеме компоновки данных.
  2. Найдем наше поле, например, Количество.
  3. В колонке «Рассчитывать по...» по умолчанию стоит пустое значение, что означает расчет по всем доступным группировкам и общим итогам.
  4. Нажмем на кнопку выбора в этой колонке. Перед нами откроется список всех полей и группировок.
  5. Укажем здесь только те группировки, в которых должен выводиться итог. Например, выберем поле Склад и ОстаткиИОбороты.ОбщийИтог.

Важно: если мы не выберем в этом списке «Детальные записи» (или поле, по которому они строятся), СКД просто не будет вычислять значение ресурса для этого уровня, и ячейки останутся пустыми.

Метод 2. Использование условного оформления

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

Проанализируем шаги настройки:

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

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

Метод 3. Тонкая настройка выбранных полей для каждой группировки

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

Разберем алгоритм действий:

  1. В дереве настроек (слева на вкладке «Настройки») выберем конкретную группировку Детальные записи.
  2. Справа перейдем на закладку «Выбранные поля».
  3. Снимем флажок «Использовать настройки родителя» (обычно это авто-поле).
  4. Перенесем из доступных полей все нужные поля, кроме поля Количество.

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

Метод 4. Двойное определение ресурса

Существует интересный прием, когда одно и то же поле ресурса описывается в СКД дважды с разными условиями расчета. Посмотрим на пример:

Допустим, у нас есть иерархия ВидНоменклатуры -> Номенклатура.

  1. Добавляем в ресурсы поле Количество с выражением Сумма(Количество). В колонке «Рассчитывать по» выбираем ВидНоменклатуры и ОбщийИтог.
  2. Добавляем в ресурсы поле Количество второй раз. Но в выражении пишем 0 (или NULL), а в колонке «Рассчитывать по» выбираем только Номенклатура.

СКД применит второе правило для детальных записей (выведет ноль), а первое — для вышестоящих групп (выведет сумму).

Метод 5. Функции в выражениях ресурсов

Мы можем использовать встроенные функции СКД непосредственно в поле «Выражение» на закладке ресурсов. Проанализируем пример использования функции Уровень():


Выбор 
    Когда Уровень() < 2 
    Тогда Сумма(Количество) 
    Иначе 0 
Конец

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

Также можно использовать функцию ВычислитьВыражение для проверки контекста группировки:

ВычислитьВыражение("Сумма(Количество)", "ИмяГруппировки", "Группировка")

Метод 6. Выражение представления

Если мы хотим оставить возможность видеть число в расшифровке или при выгрузке в Excel, но скрыть его визуально в самом отчете, можно воспользоваться вкладкой «Наборы данных». Найдем поле Количество и в колонке «Выражение представления» укажем пустую строку "". При этом в ресурсах оставим Сумма(Количество). Однако помните, что это может скрыть значение везде. Чтобы скрыть выборочно, этот метод лучше комбинировать с условным оформлением текста.

Особенности для «Универсального отчета»

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

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


Для Каждого Группировка Из КомпоновщикНастроек.Настройки.Структура Цикл
    Если ТипЗнч(Группировка) = Тип("ГруппировкаКомпоновкиДанных") 
        И Группировка.Имя = "ДетальныеЗаписи" Тогда
        
        ПолеКоличество = Группировка.Выбор.Элементы.Найти("Количество");
        Если ПолеКоличество <> Неопределено Тогда
            ПолеКоличество.Использование = Ложь;
        КонецЕсли;
        
    КонецЕсли;
КонецЦикла;

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

Резюме

Для большинства задач оптимальным является Метод 1 (Настройка "Рассчитывать по"), так как он не требует написания кода и корректно обрабатывается движком СКД. Если же вам нужно именно визуальное скрытие с сохранением структуры ячеек, используйте Условное оформление с заменой текста на пустую строку.

← На главную