При разработке сложных интерфейсов и отчетов в 1С:Предприятии 7.7 часто возникает необходимость разместить в шапке таблицы значений длинные наименования колонок. Штатный элемент формы ТаблицаЗначений не предоставляет встроенных свойств для настройки высоты шапки — параметр Ширина задает только горизонтальный размер колонок. Разберем по шагам, как решить эту задачу с помощью популярной внешней компоненты FormEx, выясним причину частых ошибок при настройке и рассмотрим альтернативные варианты реализации многострочных заголовков.
Проанализируем ситуацию: стандартный интерфейс платформы 1С 7.7 жестко ограничивает работу со свойствами элементов формы. Однако внешняя библиотека FormEx добавляет объект РасширениеФормы, который позволяет управлять многими визуальными параметрами элементов управления, включая высоту заголовков таблиц.
Для изменения высоты шапки предназначен метод ВысотаЗаголовкаТаблицы().
Синтаксис метода:
ВысотаЗаголовкаТаблицы(<ТЗ>, <Высота>)
Параметры:
<ТЗ> — строковое имя идентификатора элемента ТаблицаЗначений, расположенного на форме;<Высота> — число строк по высоте (если передать отрицательное число, будет установлена автовысота).Разберем по шагам правильное подключение и инициализацию метода расширения формы:
ВысотаЗаголовкаТаблицы доступен в актуальных версиях FormEx. При использовании устаревших сборок платформа может выдавать ошибку Поле агрегатного объекта не обнаружено (ВысотаЗаголовкаТаблицы).УстановитьФорму().ПриОткрытии() не даст визуального эффекта, так как на этом этапе Windows-элементы формы еще не инициализированы до конца. Код настройки необходимо поместить в процедуру ПослеОткрытия().Посмотрим на пример программного кода в модуле формы обработки или отчета:
Процедура ПослеОткрытия()
// Создаем объект расширения формы из библиотеки FormEx
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
// Устанавливаем высоту заголовка таблицы значений в 2 строки
// "ТаблицаДанных" - идентификатор элемента ТЗ на форме
ФормаРасш.ВысотаЗаголовкаТаблицы("ТаблицаДанных", 2);
КонецПроцедуры
Рассмотрим подробнее, как заставить текст заголовка колонки переноситься на несколько строк при увеличенной шапке. Если просто написать длинную строку, платформа может обрезать ее по ширине. Чтобы заголовок разбивался на строки строго в нужных местах, используйте системную константу РазделительСтрок или управляющие символы Симв(10) / Симв(13) при создании колонок:
// Добавление колонок с явным переносом строк в заголовке
ТаблицаДанных.НоваяКолонка("КодАртикула", "Строка", 15, , "Артикул" + РазделительСтрок + "товара", 12);
ТаблицаДанных.НоваяКолонка("КоличествоОстаток", "Число", 12, 2, "Остаток" + РазделительСтрок + "на складе", 15);
Проанализируем специфические ситуации, с которыми можно столкнуться при использовании FormEx:
ПослеОткрытия() не вызывается при открытии формы через ОткрытьМодально(). В таких случаях для инициализации высоты заголовка следует использовать предопределенное событие ПослеСозданияФормы() либо отложенный вызов через ОбработкаОжидания().ТаблицаДанных.Очистить()) и колонки создаются заново программным путем, параметры заголовка могут сброситься к значениям по умолчанию. В этом случае вызов ВысотаЗаголовкаТаблицы() нужно повторить после переформирования структуры колонок.ТаблицаЗначений в 1С 7.7 жестко связывает высоту строк с текущим размером системного шрифта элемента управления. При изменении общего шрифта таблицы увеличивается высота как шапки, так и всех строк с данными.Если возможностей штатной таблицы значений с компонентой FormEx недостаточно, рассмотрим другие варианты: