Как скрыть колонку в отчете 1С при сохранении общих итогов?

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

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

Способ 1. Настройка минимальной и максимальной ширины

Проанализируем самый быстрый метод, который часто используют разработчики для оперативного решения проблемы. Суть заключается в том, чтобы «схлопнуть» колонку до невидимого состояния с помощью механизмов оформления.

  1. Перейдем в настройки отчета на вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В поле «Оформление» найдем параметры МаксимальнаяШирина и МинимальнаяШирина. Установим их значение в 0.1 (или 0, если платформа позволяет полностью скрыть поле).
  4. В «Условии» укажем критерий, по которому колонка должна скрываться. Например: Пол Равно "Мужской".
  5. В «Оформляемых полях» выберем именно то поле, которое нужно скрыть.

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

Способ 2. Использование области использования в Условном оформлении

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

При создании элемента условного оформления (как описано в способе 1) обратим внимание на вкладку Дополнительно или флажки в нижней части окна настроек. Нам необходимо убедиться, что оформление применяется в следующих областях:

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

Способ 3. Профессиональный подход через разделение ресурсов

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

Выполним следующие шаги в схеме компоновки данных:

  1. На вкладке Вычисляемые поля создадим новое поле КоличествоЖенщин.
  2. В выражении этого поля пропишем логику: Выбор Когда Пол = Значение(Перечисление.Пол.Женский) Тогда 1 Иначе 0 Конец
  3. На вкладке Ресурсы добавим два ресурса:
    • Сотрудник с функцией Количество(Сотрудник) — это будет наш общий итог.
    • КоличествоЖенщин с функцией Сумма(КоличествоЖенщин).
  4. В настройках отчета, в списке Выбранные поля, просто выведем эти два ресурса.

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

Способ 4. Изменение заголовков колонок

Если задача стоит не только в скрытии, но и в переименовании (как упоминалось в сообщении 11), выясним, как это сделать правильно. Если вам нужно заменить «Женский» на «Из них женщин», у вас есть два пути:

  1. Через Псевдонимы: На закладке «Наборы данных» в СКД найдите ваше поле и в колонке «Путь к данным» или «Заголовок» впишите нужное название.
  2. В настройках варианта: В списке «Выбранные поля» нажмите правой кнопкой мыши на поле, выберите пункт Установить заголовок и введите новое имя. Это применится только к конкретному варианту отчета.

Способ 5. Программное скрытие через Табличный документ

Иногда структура отчета настолько сложна (например, кросс-таблица с динамическим количеством колонок), что стандартные средства оформления не справляются. В этом случае мы можем прибегнуть к постобработке результата.

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


// Пример логики после вывода в ТабличныйДокумент
Область = Результат.НайтиТекст("Мужской");
Пока Область <> Неопределено Цикл
    Область.Видимость = Ложь;
    Область = Результат.НайтиТекст("Мужской", Область);
КонецЦикла;

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

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

Для простых отчетов достаточно установить Минимальную ширину в значение 0.1 через Условное оформление. Однако, если вы проектируете сложную систему отчетности, лучше всего использовать метод с Вычисляемыми полями и отдельными Ресурсами. Это сделает ваш отчет более стабильным, а данные — прозрачными для пользователя.

← На главную