При формировании печатных форм нередко возникает ситуация, когда строковое значение (например, должность руководителя или расшифровка подписи) переносится на две строки, нарушая визуальный стиль документа. При этом вносить изменения непосредственно в макет конфигурации разработчик не всегда хочет или может — например, если макет типовой или изменения должны применяться динамически в зависимости от условий.
Разберем подробно, почему возникает перенос текста, как программно настроить выравнивание по ширине и какие альтернативные подходы можно использовать для управления оформлением ячеек.
Прежде чем переходить к коду, проанализируем, почему текст разделяется на строки:
РазмещениеТекста в значение ТипРазмещенияТекстаТабличногоДокумента.Переносить, платформа при превышении видимой границы автоматически делит фразу по пробелам.Символы.ПС), которые принудительно разрывают строку независимо от ее ширины.АвтоВысотаСтроки табличный документ автоматически растягивает строку по вертикали, если содержимое ячейки не умещается в одну строчку.Для того чтобы текст распределился по всей ширине диапазона ячеек, мы можем обратиться к нужной области колонок внутри полученной секции макета и изменить ее свойство ГоризонтальноеПоложение.
Посмотрим на пример кода, предложенный автором:
Макет = ПолучитьМакет(ИмяМакета);
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьМакетаПодвал.Параметры.ДолжностьРуководителя = ВыбПодпись.Должность;
// Программно устанавливаем выравнивание по ширине для диапазона колонок
ОбластьМакетаПодвал.Область("C12:C16").ГоризонтальноеПоложение = ГоризонтальноеПоложение.ПоШирине;
Разберем подробнее, как работает эта адресация:
Область("C12:C16") указывает на диапазон колонок с 12 по 16. Если в секции Подвал содержится несколько строк, данная настройка применится ко всем ячейкам указанных столбцов внутри этой секции.R1C1, например Область("R1C12:R1C16"), либо передать числовые координаты: Область(1, 12, 1, 16).ГоризонтальноеПоложение.ПоШирине равномерно распределяет интервалы между словами, заполняя свободное пространство ячейки.При использовании выравнивания по ширине важно учитывать ограничения встроенного механизма платформы:
ГоризонтальноеПоложение.ПоШирине в некоторых релизах может сбрасываться до выравнивания по левому краю.Если задача заключается именно в том, чтобы текст гарантированно выводился в одну строку без увеличения высоты, рассмотрим альтернативные варианты программной корректировки.
Способ 1. Программное объединение ячеек
Если ячейки в строке еще не объединены, мы можем программно слить диапазон колонок, предоставив тексту больше места:
ОбластьМакетаПодвал.Область("R1C12:R1C16").Объединить();
Способ 2. Отключение переноса строк
Чтобы запретить платформе переносить строку вниз, изменим режим размещения текста на Авто или Обрезать:
Ячейка = ОбластьМакетаПодвал.Область("R1C12");
Ячейка.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Авто;
При значении Авто длинный текст будет накладываться на соседние ячейки справа, если они пусты, не вызывая расширения высоты строки.
Способ 3. Запрет автовысоты строки
Если нам критично сохранить фиксированную геометрию подвала документа, отключим автоматическое растягивание высоты:
ОбластьМакетаПодвал.АвтоВысотаСтроки = Ложь;
Таким образом, сочетание правильного позиционирования области через метод Область() и управления свойствами ГоризонтальноеПоложение или РазмещениеТекста позволяет гибко форматировать печатную форму непосредственно из встроенного языка, не меняя исходный макет конфигурации.