При разработке отчетов в системе компоновки данных (СКД) часто возникает специфическая задача: нужно скрыть определенную колонку из визуальной области отчета, но при этом данные этой колонки должны продолжать участвовать в расчете общих итогов. Типичный пример — отчет по сотрудникам, где нужно видеть общее количество персонала и количество женщин, но саму колонку с данными по мужчинам выводить не требуется. Если просто применить «Отбор», данные по мужчинам исключатся из итогов, что приведет к неверным результатам. Разберем по шагам все способы решения этой задачи: от простых «визуальных» хитростей до профессиональной настройки структуры ресурсов.
Проанализируем самый быстрый метод, который часто используют разработчики для оперативного решения проблемы. Суть заключается в том, чтобы «схлопнуть» колонку до невидимого состояния с помощью механизмов оформления.
МаксимальнаяШирина и МинимальнаяШирина. Установим их значение в 0.1 (или 0, если платформа позволяет полностью скрыть поле).Пол Равно "Мужской".Важный нюанс: если мы хотим, чтобы колонка не занимала даже одного пикселя, в параметре Текст условного оформления можно указать пустую строку или пробел. Это предотвратит растягивание колонки из-за длинного заголовка.
Если нам нужно скрыть не только данные, но и заголовок колонки в шапке отчета, разберем более детальную настройку ОбластиИспользования. Этот механизм доступен в версиях платформы 1С:Предприятие 8.3.
При создании элемента условного оформления (как описано в способе 1) обратим внимание на вкладку Дополнительно или флажки в нижней части окна настроек. Нам необходимо убедиться, что оформление применяется в следующих областях:
Если мы установим ширину в 0 для всех этих областей, колонка исчезнет полностью. В старых версиях платформы (например, 8.2), где выбор области использования ограничен, этот метод может работать нестабильно, поэтому рассмотрим альтернативы.
Рассмотрим ситуацию с точки зрения архитектуры СКД. Вместо того чтобы выводить группировку по полю «Пол» и пытаться скрыть одну из колонок, правильнее будет создать отдельные ресурсы. Это самый надежный метод, который исключает любые визуальные артефакты.
Выполним следующие шаги в схеме компоновки данных:
КоличествоЖенщин.
Выбор Когда Пол = Значение(Перечисление.Пол.Женский) Тогда 1 Иначе 0 Конец
Сотрудник с функцией Количество(Сотрудник) — это будет наш общий итог.КоличествоЖенщин с функцией Сумма(КоличествоЖенщин).Проанализируем результат: теперь у нас есть колонка «Всего сотрудников» и колонка «Количество женщин». Колонки «Мужчины» нет в структуре отчета изначально, но данные по ним учтены в общем количестве. Это исключает необходимость манипуляций с шириной.
Если задача стоит не только в скрытии, но и в переименовании (как упоминалось в сообщении 11), выясним, как это сделать правильно. Если вам нужно заменить «Женский» на «Из них женщин», у вас есть два пути:
Установить заголовок и введите новое имя. Это применится только к конкретному варианту отчета.Иногда структура отчета настолько сложна (например, кросс-таблица с динамическим количеством колонок), что стандартные средства оформления не справляются. В этом случае мы можем прибегнуть к постобработке результата.
В модуле объекта отчета, в процедуре ПриКомпоновкеРезультата, мы можем перехватить вывод и программно скрыть нужную область:
// Пример логики после вывода в ТабличныйДокумент
Область = Результат.НайтиТекст("Мужской");
Пока Область <> Неопределено Цикл
Область.Видимость = Ложь;
Область = Результат.НайтиТекст("Мужской", Область);
КонецЦикла;
Посмотрим на этот метод критически: он гарантированно уберет данные с экрана, но требует написания кода. Рекомендуем использовать его только тогда, когда средства настройки СКД исчерпаны.
Для простых отчетов достаточно установить Минимальную ширину в значение 0.1 через Условное оформление. Однако, если вы проектируете сложную систему отчетности, лучше всего использовать метод с Вычисляемыми полями и отдельными Ресурсами. Это сделает ваш отчет более стабильным, а данные — прозрачными для пользователя.