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

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

При разработке и доработке форм в обычных приложениях 1С:Предприятие (например, в конфигурации «Управление производственным предприятием, редакция 1.2») разработчики часто сталкиваются с необходимостью визуально объединить несколько колонок табличного поля под одним общим заголовком.

В отличие от управляемого приложения, где для этих целей предусмотрен специальный элемент Группа колонок, штатный элемент управления Табличное поле в обычных формах не имеет прямого свойства для горизонтального объединения ячеек шапки. Однако эту задачу можно решить несколькими проверенными способами. Разберем подробно каждый из них.

Способ 1. Использование многоэтажного размещения колонок (свойство «Положение»)

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

Рассмотрим порядок настройки по шагам:

  1. Добавим в табличное поле дополнительную колонку, которая будет выполнять роль общего заголовка. Зададим в ее свойстве Заголовок нужный текст.
  2. Для основных колонок, которые должны находиться под общим заголовком, отключим отображение собственных заголовков в шапке таблицы, установив свойство ОтображатьВШапке = Ложь.
  3. В свойствах целевых колонок настроим параметр Положение. Установим значение НаСледующейСтроке или ВТойЖеКолонке, чтобы колонки визуально разместились под фиктивным заголовком.
  4. Чтобы фиктивная колонка не отображала пустые ячейки в строках таблицы, настроим обработку события ПриВыводеСтроки или ПриПолученииДанных. В коде отключим видимость ячейки фиктивной колонки для каждой строки.

Посмотрим на пример кода, который скрывает ячейки фиктивной колонки при выводе данных:


Процедура ТабличноеПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    // Скрываем ячейку фиктивной колонки в строках данных
    ОформлениеСтроки.Ячейки.ОбщаяКолонка.Видимость = Ложь;
    
КонецПроцедуры

Способ 2. Замена табличного поля на «Поле табличного документа»

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

Выясним преимущества этого подхода:

Разберем пример программного объединения ячеек шапки в табличном документе:


// Получаем область шапки и объединяем ячейки
ОбластьЗаголовка = ТабличныйДокумент.Область("R1C2:R1C4");
ОбластьЗаголовка.Объединить();
ОбластьЗаголовка.Текст = "Общий заголовок колонок";
ОбластьЗаголовка.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;

Стоит учитывать, что при использовании поля табличного документа ввод и редактирование данных в ячейках потребуется организовывать программно (например, обрабатывая событие ПриВыбореЯчейки или вызывая формы редактирования).

Способ 3. Имитация общего заголовка декоративным элементом «Надпись»

Рассмотрим еще один простой метод, который подходят для статических таблиц с фиксированной шириной колонок:

  1. На форме прямо над шапкой табличного поля размещается элемент управления Надпись (декорация).
  2. Для надписи задается необходимый текст заголовка, рамка и выравнивание текста по центру.
  3. У колонок табличного поля, над которыми расположена надпись, очищаются собственные заголовки или отключается их отображение.
  4. Чтобы пользователь не нарушил визуальное соответствие заголовка и колонок, у данных колонок запрещается изменение ширины (свойство ИзменятьНастройку = Ложь).

Альтернатива: как это устроено в управляемых формах

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

Для создания общей шапки достаточно добавить в состав элементов таблицы форму типа Группа элементов формы с видом Группа колонок, поместить внутри нее нужные колонки и установить для группы свойства Заголовок и ОтображатьВШапке = Истина.

← На главную