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