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