Как скрыть колонку группировки в СКД, сохранив возможность расшифровки?

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

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

В этой статье мы разберем несколько эффективных методов решения этой задачи: от изменения стандартных настроек компоновки до программной манипуляции результирующим табличным документом. Мы выясним, почему простые способы не всегда работают, и научимся использовать скрытые возможности платформы 1С для достижения идеального визуального результата.

Метод 1. Настройка расположения полей группировок

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

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

Почему это работает: Устанавливая расположение в «Нет», мы даем системе команду не создавать отдельную колонку для поля, по которому идет группировка. При этом само поле остается в составе группировки, а значит, оно попадает в объект ДанныеРасшифровки. Пользователь не видит колонку, но при двойном клике на строку система «знает», по какому значению была сделана группировка, и успешно выполняет расшифровку.

Метод 2. Использование ограничений в наборе данных

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

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

Метод 3. Дополнительные поля расшифровки

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

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

Этот метод гарантирует, что данные будут «подтянуты» системой, но не создадут лишних визуальных столбцов.

Метод 4. Программная постобработка табличного документа

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

Выясним причину, почему установка ширины в 0 не всегда помогает: платформа 1С может принудительно расширять колонку до минимально возможного размера, если в ней есть данные. Поэтому правильнее использовать свойство Видимость.

Рассмотрим пример кода, который можно разместить в модуле отчета в процедуре ПриКомпоновкеРезультата или в коде формы после вызова метода СкомпоноватьРезультат():


// Получаем результат компоновки в табличный документ
ТабДок = Новый ТабличныйДокумент;
ПроцессорКомпоновки.Выполнить(ПроцессорВывода, Истина);

// Алгоритм поиска и скрытия колонки
НомерКолонкиДляСкрытия = 0;
// Допустим, мы знаем заголовок колонки
НайденнаяОбласть = ТабДок.НайтиТекст("ТехническоеПоле");

Если НайденнаяОбласть <> Неопределено Тогда
    НомерКолонкиДляСкрытия = НайденнаяОбласть.Лево;
    // Скрываем всю колонку целиком
    ТабДок.Область(, НомерКолонкиДляСкрытия, , НомерКолонкиДляСкрытия).Видимость = Ложь;
КонецЕсли;

Важный нюанс: Чтобы этот метод работал надежно, рекомендуется использовать свойство Имя области в макете, если вы используете собственные макеты оформления. Если же макет автогенерируемый, метод НайтиТекст является наиболее простым решением.

Метод 5. Условное оформление и его ограничения

Проанализируем возможность использования Условного оформления. Часто советуют установить текст в пустую строку или задать ширину через оформление. Как показала практика, установка Текст = "" лишь убирает надпись, но оставляет саму ячейку. Однако в современных версиях платформы 8.3 в списке доступных параметров условного оформления появилось свойство «Видимость».

Рассмотрим, как это применить:

  1. Перейдем на вкладку «Условное оформление».
  2. Добавим новое условие. В оформлении выберем параметр «Видимость» и установим значение Ложь.
  3. В «Оформляемых полях» выберем наше поле группировки.
  4. Условие можно оставить пустым, чтобы оно применялось всегда.

Обратите внимание: Этот метод может не сработать для полей, которые являются полями группировки в режиме «Автоматического расположения», так как СКД управляет ими приоритетно. Этот способ лучше всего подходит для детальных записей или дополнительных полей.

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

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

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

← На главную