Как изменить высоту заголовков колонок таблицы значений в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При разработке сложных интерфейсов и отчетов в 1С:Предприятии 7.7 часто возникает необходимость разместить в шапке таблицы значений длинные наименования колонок. Штатный элемент формы ТаблицаЗначений не предоставляет встроенных свойств для настройки высоты шапки — параметр Ширина задает только горизонтальный размер колонок. Разберем по шагам, как решить эту задачу с помощью популярной внешней компоненты FormEx, выясним причину частых ошибок при настройке и рассмотрим альтернативные варианты реализации многострочных заголовков.

Решение с помощью внешней компоненты FormEx

Проанализируем ситуацию: стандартный интерфейс платформы 1С 7.7 жестко ограничивает работу со свойствами элементов формы. Однако внешняя библиотека FormEx добавляет объект РасширениеФормы, который позволяет управлять многими визуальными параметрами элементов управления, включая высоту заголовков таблиц.

Для изменения высоты шапки предназначен метод ВысотаЗаголовкаТаблицы().

Синтаксис метода:

ВысотаЗаголовкаТаблицы(<ТЗ>, <Высота>)

Параметры:

  1. <ТЗ> — строковое имя идентификатора элемента ТаблицаЗначений, расположенного на форме;
  2. <Высота> — число строк по высоте (если передать отрицательное число, будет установлена автовысота).

Пошаговая настройка в модуле формы

Разберем по шагам правильное подключение и инициализацию метода расширения формы:

  1. Проверяем версию компоненты: метод ВысотаЗаголовкаТаблицы доступен в актуальных версиях FormEx. При использовании устаревших сборок платформа может выдавать ошибку Поле агрегатного объекта не обнаружено (ВысотаЗаголовкаТаблицы).
  2. Связываем объект с формой: для корректной работы расширения формы необходимо явно привязать контекст формы с помощью метода УстановитьФорму().
  3. Выбираем правильное предопределенное событие: вызов метода в процедуре ПриОткрытии() не даст визуального эффекта, так как на этом этапе Windows-элементы формы еще не инициализированы до конца. Код настройки необходимо поместить в процедуру ПослеОткрытия().

Посмотрим на пример программного кода в модуле формы обработки или отчета:


Процедура ПослеОткрытия()
    // Создаем объект расширения формы из библиотеки FormEx
    ФормаРасш = СоздатьОбъект("РасширениеФормы");
    ФормаРасш.УстановитьФорму(Форма);
    
    // Устанавливаем высоту заголовка таблицы значений в 2 строки
    // "ТаблицаДанных" - идентификатор элемента ТЗ на форме
    ФормаРасш.ВысотаЗаголовкаТаблицы("ТаблицаДанных", 2);
КонецПроцедуры

Перенос текста в шапке колонок

Рассмотрим подробнее, как заставить текст заголовка колонки переноситься на несколько строк при увеличенной шапке. Если просто написать длинную строку, платформа может обрезать ее по ширине. Чтобы заголовок разбивался на строки строго в нужных местах, используйте системную константу РазделительСтрок или управляющие символы Симв(10) / Симв(13) при создании колонок:


// Добавление колонок с явным переносом строк в заголовке
ТаблицаДанных.НоваяКолонка("КодАртикула", "Строка", 15, , "Артикул" + РазделительСтрок + "товара", 12);
ТаблицаДанных.НоваяКолонка("КоличествоОстаток", "Число", 12, 2, "Остаток" + РазделительСтрок + "на складе", 15);

Важные нюансы и ограничения

Проанализируем специфические ситуации, с которыми можно столкнуться при использовании FormEx:

  1. Модальный режим открытия форм: предопределенная процедура ПослеОткрытия() не вызывается при открытии формы через ОткрытьМодально(). В таких случаях для инициализации высоты заголовка следует использовать предопределенное событие ПослеСозданияФормы() либо отложенный вызов через ОбработкаОжидания().
  2. Динамическое перестроение колонок: если во время работы формы выполняется полная очистка таблицы (ТаблицаДанных.Очистить()) и колонки создаются заново программным путем, параметры заголовка могут сброситься к значениям по умолчанию. В этом случае вызов ВысотаЗаголовкаТаблицы() нужно повторить после переформирования структуры колонок.
  3. Высота строк данных: базовый элемент ТаблицаЗначений в 1С 7.7 жестко связывает высоту строк с текущим размером системного шрифта элемента управления. При изменении общего шрифта таблицы увеличивается высота как шапки, так и всех строк с данными.

Альтернативные способы реализации многострочных шапок

Если возможностей штатной таблицы значений с компонентой FormEx недостаточно, рассмотрим другие варианты:

  1. Табличное поле (библиотека 1С++): мощный элемент управления, позволяющий создавать многоуровневые и составные шапки, объединять ячейки заголовков по горизонтали и вертикали, а также гибко управлять высотой каждой отдельной строки шапки без влияния на строки данных.
  2. Элемент управления «Таблица» в режиме ввода данных: штатный способ без внешних библиотек. На форму помещается встроенная таблица (табличный документ), в которой шапка рисуется с произвольным числом уровней, объединением ячеек и шрифтами, а строки документа заполняются и обрабатываются программно.
  3. Внешние сетки через ActiveX: размещение на форме компонентов MSFlexGrid, VSFlexGrid или iGrid через ActiveX-контейнер, предоставляющих полный контроль над отображением заголовков и ячеек.
← На главную