Как в отчете СКД убрать поле из итогов по группировке?

Программист 1С v8.3 (Обычные формы) Промышленность, строительство и АПК
← На главную

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

Решение 1: Условное оформление (самый быстрый способ)

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

Разберем по шагам:

  1. Откройте нужный отчет и перейдите в его настройки (например, через меню "Еще" -> "Прочее" -> "Изменить вариант отчета").
  2. Перейдите на вкладку "Условное оформление".
  3. Нажмите "Добавить", чтобы создать новый элемент условного оформления.
  4. На вкладке "Оформление" найдите параметр "Текст". Поставьте напротив него флажок, а поле для ввода значения оставьте пустым. Это даст СКД команду заменить текст в ячейке на пустую строку.
  5. Перейдите на вкладку "Оформляемые поля" и выберите то поле, которое нужно скрыть в итогах (в нашем случае, поле с комментарием).
  6. Самый важный шаг — указать, где именно применять это оформление. Для этого перейдите на вкладку "Область использования". Здесь нужно указать, что оформление применяется только для группировки.
    • Установите переключатель в положение "В группировке".
    • В появившемся поле выберите нужную группировку, для итогов которой нужно скрыть поле (например, "Номенклатура").
    • В поле "Тип области" выберите значение "В итогах по группировке" или "В заголовке группировки" в зависимости от того, где выводится поле. Если не уверены, можно оставить "Везде", но применить оформление ко всей группировке.

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

Важный нюанс для старых конфигураций:

В некоторых старых конфигурациях (например, на платформе 8.2 или ранних версиях 8.3) в настройках условного оформления может отсутствовать вкладка или колонка "Область использования". Без нее точно указать применение оформления только к итогам сложнее. Если вы столкнулись с такой ситуацией и являетесь программистом, можно доработать форму настроек отчета, чтобы эта функциональность появилась. Для этого в процедуре ПриОткрытии() формы настроек СКД нужно программно добавить соответствующую колонку в таблицу условного оформления.

Пример кода для доработки формы:


Процедура ПриОткрытии()

    ПереключитьСложностьНастройки(Истина);
    ОбновлениеОтображения;
    СкрытьНеИспользуемыеУзелИДочерние(КомпоновщикНастроек.Настройки);

    // Добавляем колонку "ОбластьИспользования" для новой функциональности платформы
    Колонка = ЭлементыФормы.УсловноеОформлениеСтраницаОформление.Колонки.Добавить("ОбластьИспользования", "Область использования");
    Колонка.Данные = "ОбластьИспользования";
    Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));

    Колонка = ЭлементыФормы.УсловноеОформление.Колонки.Добавить("ОбластьИспользования", "Область использования");
    Колонка.Данные = "ОбластьИспользования";
    Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));

КонецПроцедуры

Решение 2: Настройка выбранных полей (методологически верный способ)

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

Проанализируем шаги:

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

В результате СКД при построении итоговой строки по группировке "Номенклатура" выведет только те поля, которые вы явно указали, а поле "Комментарий" будет проигнорировано. Этот метод надежнее, так как он управляет самой структурой вывода, а не просто внешним видом.

Решение 3: Настройка расчета ресурсов (для разработчиков)

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

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

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

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

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

Подведем итог:

← На главную