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

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

При разработке интерфейсов или печатных форм в 1С программисты часто сталкиваются с задачей: вывести длинную строку текста, в которой только одно слово или значение переменной должно быть выделено жирным шрифтом. Обычная конкатенация строк через оператор + здесь не поможет, так как стандартная переменная типа Строка не содержит информации об оформлении — она хранит только символы.

В этой статье мы подробно разберем, как обойти это ограничение, проанализируем различные механизмы платформы 1С 8.3 и выясним, какой способ лучше всего подходит для управляемых форм и табличных документов.

Почему обычное сложение строк не работает?

Рассмотрим ситуацию, описанную в вопросе. Автор пытается собрать строку следующим образом:


FIO = "Иванов Иван Иванович";
TekstZapolneniy = "" + FIO + " -" + RabotnikDolgnost + "(таб. № " + NomerTabely + ");

В данном случае переменная TekstZapolneniy — это примитивный тип данных Строка. В 1С оформление (цвет, шрифт, начертание) — это свойство не самой строки, а того элемента управления, который эту строку отображает (например, Поле ввода или Ячейка таблицы). Если мы установим свойство шрифта "Жирный" для ячейки, то жирным станет весь текст внутри нее.

Чтобы выделить только часть текста, нам нужно использовать специальные объекты-контейнеры, которые умеют хранить внутри себя фрагменты с разным оформлением.

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

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

Давайте разберем по шагам, как это реализовать программно:

  1. Создадим специальный шрифт с установленным признаком жирности.
  2. Подготовим текстовые фрагменты.
  3. Объединим их в один объект и выведем на форму.

Посмотрим на пример кода:


// 1. Создаем шрифт: (ИмяШрифта, Размер, Жирный, Наклонный)
ЖирныйШрифт = Новый Шрифт(,, Истина); 

// 2. Формируем массив фрагментов
МассивРезультат = Новый Массив;
МассивРезультат.Добавить(Новый ФорматированнаяСтрока(FIO, ЖирныйШрифт));
МассивРезультат.Добавить(" - " + RabotnikDolgnost + " (таб. № " + NomerTabely + ")");

// 3. Создаем итоговую форматированную строку
ИтоговаяСтрока = Новый ФорматированнаяСтрока(МассивРезультат);

// 4. Присваиваем результат реквизиту формы, который выведен как "Поле надписи"
Элементы.ДекорацияТекст.Заголовок = ИтоговаяСтрока;

Важное примечание: Чтобы этот текст отобразился корректно на форме, используйте элемент типа Декорация (вид — Надпись). Обычные поля ввода не всегда корректно поддерживают отображение ФорматированнаяСтрока.

Способ 2. Выделение жирным в Табличном документе (Печатные формы)

Если задача стоит в выделении текста внутри ячейки печатной формы, у нас есть два пути. Рассмотрим их подробнее.

Вариант А: Использование шаблона (ограниченный способ).
В свойствах ячейки табличного документа можно установить тип Шаблон. Если написать в ячейке [FIO] - [RabotnikDolgnost], 1С подставит значения. Однако программно сделать жирным только [FIO] внутри одной ячейки через свойства шаблона невозможно.

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

Проанализируем пример для печатной формы:


Область = Макет.ПолучитьОбласть("Строка");
Ячейка = Область.Области.ТекстИнформации;

// Формируем оформленный текст
Жирный = Новый Шрифт(,, Истина);
ТекстДляЯчейки = Новый ФорматированнаяСтрока(FIO, Жирный, , " - " + Должность);

// Устанавливаем значение в ячейку
Ячейка.СодержитЗначение = Ложь; // Убеждаемся, что тип - текст
Ячейка.Текст = ТекстДляЯчейки;

ТабДок.Вывести(Область);

Способ 3. Поле HTML-документа

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

Разберем алгоритм настройки:

  1. Добавьте на форму реквизит с типом Строка (неограниченной длины).
  2. Перетащите его на форму и установите вид — Поле HTML-документа.
  3. Сформируйте строку, используя стандартные теги HTML: <b> для жирности.

Пример формирования текста:


ТекстHTML = "<html><body>";
ТекстHTML = ТекстHTML + "<b>" + FIO + "</b>"; // Жирный текст
ТекстHTML = ТекстHTML + " - " + RabotnikDolgnost;
ТекстHTML = ТекстHTML + "</body></html>";

РеквизитТекстНаФорме = ТекстHTML;

Этот способ идеален, если текст должен выглядеть как динамическая справка или сложная пояснительная надпись. Чтобы упростить подготовку такой разметки без ручного набора кода, можно использовать редактор форматированного HTML-текста для управляемых форм.

Особенности для старых версий (1С 7.7 и обычные формы 8.2)

Рассмотрим ситуацию, если вы работаете в устаревших конфигурациях. Там объект ФорматированнаяСтрока отсутствует. В таких случаях программисты применяли "хитрости":

Подведем итог: Для современных конфигураций на платформе 8.3 лучшим выбором будет использование ФорматированнаяСтрока. Она поддерживается как в интерфейсе пользователя, так и при формировании печатных форм, обеспечивая чистоту кода и высокую производительность.

← На главную