При разработке интерфейсов в 1С:Предприятие часто возникает задача компактного размещения большого количества колонок в табличных частях или списках. В системе компоновки данных (СКД) или при формировании печатных форм в объекте ТабличныйДокумент мы привыкли к возможности просто повернуть текст на 90 градусов через свойство ОриентацияТекста. Однако при работе непосредственно с управляемыми формами разработчики сталкиваются с тем, что в свойствах элементов ДополнениеПоляФормы (заголовков) такого параметра попросту нет. В этой статье мы подробно проанализируем ситуацию, выясним причины ограничений платформы и рассмотрим доступные обходные пути для решения этой задачи.
Для начала проанализируем текущее состояние платформы 1С (включая актуальные релизы ветки 8.3). Как справедливо замечено в обсуждении, свойство ГоризонтальноеПоложениеВШапке управляет лишь выравниванием (лево, право, центр), но не углом наклона текста. Разберем, почему штатная реализация до сих пор отсутствует:
Таким образом, мы должны констатировать: стандартного свойства для поворота текста в заголовке колонки таблицы формы не существует.
Рассмотрим креативный метод, упомянутый в обсуждении. Платформа позволяет выводить картинку в заголовок колонки. Мы можем автоматизировать процесс создания изображений с вертикальным текстом "на лету" при открытии формы. Разберем этот процесс по шагам:
Идея заключается в использовании невидимого объекта ТабличныйДокумент в качестве графического движка. Мы записываем в него нужный текст, поворачиваем его штатными средствами и преобразуем область ячеек в картинку.
// Пример функции для получения картинки с вертикальным текстом
Функция ПолучитьКартинкуЗаголовка(ТекстЗаголовка)
ТабДок = Новый ТабличныйДокумент;
Область = ТабДок.Область(1, 1);
Область.Текст = ТекстЗаголовка;
// Устанавливаем вертикальную ориентацию (90 градусов)
Область.ОриентацияТекста = 90;
// Настраиваем шрифт и выравнивание для красоты
Область.Шрифт = Новый Шрифт("Arial", 10);
Область.АвтоВысотаСтроки = Истина;
Область.ШиринаКолонки = 5; // Узкая колонка
// Получаем картинку из области
Картинка = ТабДок.ПолучитьКартинку(ТабДок.Область(1, 1, 1, 1));
Возврат Картинка;
КонецФункции
После получения картинки ее можно назначить свойству КартинкаШапки соответствующего элемента формы. Однако у этого метода есть существенные недостатки:
Проанализируем более продвинутый, но сложный вариант — полную замену стандартной таблицы 1С на элемент формы ПолеHTMLДокумента. В HTML и CSS управление ориентацией текста реализовано очень гибко.
Рассмотрим пример CSS-свойства, которое позволяет добиться нужного эффекта в заголовках <th>:
/* CSS для вертикального текста */
.vertical-header {
writing-mode: vertical-rl;
transform: rotate(180deg);
white-space: nowrap;
padding: 10px;
text-align: center;
}
Разберем плюсы и минусы данного подхода:
ПриНажатии в 1С.Если вышеописанные методы кажутся слишком радикальными ("БДСМ-развлечениями", как выразился автор темы), рассмотрим стандартные приемы компоновки UI, которые помогают решить проблему нехватки места:
1. Использование иерархии групп колонок. Мы можем объединить несколько узких колонок под одним общим заголовком. Для самих узких колонок можно использовать короткие аббревиатуры или индексы (1, 2, 3...), а полную расшифровку выводить в подсказке (свойство Подсказка) или в отдельной информационной надписи под таблицей.
2. Свойство "Автомаксимальная ширина". Установите для колонок минимально возможную ширину и включите РастягиватьПоГоризонтали = Ложь. Это позволит максимально плотно упаковать данные.
3. Использование перечислений с картинками. Если колонки содержат логические значения (Да/Нет), вместо текста в заголовке можно использовать иконки, которые интуитивно понятны пользователю и занимают гораздо меньше места.
Подводя итог нашему анализу, выясним, какой путь выбрать:
Если вам критически важно иметь именно вертикальный текст в интерактивной форме, и вы готовы пожертвовать типовым функционалом 1С (сортировки, отборы), то ваш выбор — Поле HTML-документа. Это обеспечит наиболее профессиональный визуальный результат.
Если же задача стоит в рамках типовой конфигурации и требует минимальных затрат, мы рекомендуем пересмотреть дизайн формы. Использование групп колонок в сочетании с краткими заголовками и подробными подсказками — это "путь наименьшего сопротивления", который сохранит стабильность системы и будет понятен пользователям. Платформа 1С развивается, и, возможно, в будущих версиях 8.3.x или 1С:Элемент мы увидим долгожданный флаг ориентации текста, но на данный момент разработчикам приходится полагаться на свою смекалку и знание альтернативных технологий.