Как отформатировать надпись на управляемой форме в 1С и выделить отдельные числа жирным шрифтом?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке интерфейсов управляемых форм часто возникает необходимость вывести информирующий текст, в котором отдельные ключевые показатели (суммы, даты, проценты скидок) должны выделяться жирным шрифтом или определенным цветом. Например: «Скидка: 15%, минимальная скидка: 10%».

Рассмотрим распространенное заблуждение: размещение отдельных элементов декорации в горизонтальной группе. Такой подход неприменим для динамических и длинных текстов, поскольку платформа 1С не умеет выполнять автоматический перенос слов (Word Wrap) с одной надписи на другую при изменении ширины формы. Разберем наиболее эффективные и правильные способы решения этой задачи.

Способ 1. Использование объекта ФорматированнаяСтрока

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

Проанализируем программный пример формирования такой строки вручную через составной массив:


МассивФрагментов = Новый Массив;
МассивФрагментов.Добавить("Скидка: ");
МассивФрагментов.Добавить(Новый ФорматированнаяСтрока("15%", Новый Шрифт(,, Истина)));
МассивФрагментов.Добавить(", минимальная скидка: ");
МассивФрагментов.Добавить(Новый ФорматированнаяСтрока("10%", Новый Шрифт(,, Истина)));

РезультатСтрока = Новый ФорматированнаяСтрока(МассивФрагментов);
Элементы.НадписьСкидка.Заголовок = РезультатСтрока;

Если в конфигурации используется Библиотека Стандартных Подсистем (БСП), процесс можно существенно упростить. Выясним, как применить функцию СтроковыеФункцииКлиентСервер.ФорматированнаяСтрока(), которая автоматически преобразует простой HTML-подобный текст с тегами в объект ФорматированнаяСтрока:


ТекстСРазметкой = "Скидка: <b>15%</b>, минимальная скидка: <b>10%</b>";
Элементы.НадписьСкидка.Заголовок = СтроковыеФункцииКлиентСервер.ФорматированнаяСтрока(ТекстСРазметкой);

Преимущества метода: Высокая скорость работы, отсутствие внешних зависимостей, нативная поддержка переноса строк платформой 1С.

Способ 2. Использование элемента Поле HTML

Если текст имеет сложную структуру, содержит динамические таблицы или требует специфического выравнивания и стилей, целесообразно использовать элемент формы Поле браузера (вид Поле HTML).

Посмотрим на пример формирования содержимого для реквизита формы с типом Строка, связанного с полем HTML:


ТекстHTML = "
|<html>
|<head>
|	<style>
|		body { font-family: Arial, sans-serif; font-size: 12px; margin: 0; padding: 2px; }
|		.bold-text { font-weight: bold; color: #000000; }
|	</style>
|</head>
|<body>
|	<span>Скидка: <span class='bold-text'>15%</span>, минимальная скидка: <span class='bold-text'>10%</span></span>
|</body>
|</html>";

РеквизитПолеHTML = ТекстHTML;

Особенности применения: При работе с Полем HTML важно учитывать накладные расходы платформы на инициализацию встроенного браузерного движка, а также заранее отключать ненужные полосы прокрутки и настраивать отступы через CSS-стили.

Способ 3. Использование объекта ФорматированныйДокумент

Для отображения и редактирования сложных форматированных текстов на форме также доступен реквизит с типом ФорматированныйДокумент и соответствующий ему элемент формы Поле форматированного документа. Этот объект позволяет программно менять параметры шрифта и цвета для определенных областей выделения.

Сравнение методов и рекомендации по выбору

  1. ФорматированнаяСтрока — оптимальный вариант для большинства стандартных задач вывода текста с выделенными словами, датами или суммами на управляемой форме.
  2. Поле HTML — подходит для верстки сложных информационных блоков, где требуются гибкие CSS-стили или продвинутая разметка.
  3. Использование отдельных элементов Декорация для каждой части предложения крайне не рекомендуется из-за проблем с перепостроением интерфейса при переносе строк.
← На главную