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

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

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

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

Решение 1. Использование объекта ФорматированнаяСтрока (платформа 8.3.24 и выше)

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

Выясним, как это работает. Свойство Текст у объекта ОбластьЯчеекТабличногоДокумента теперь может принимать не только обычную строку, но и ФорматированнаяСтрока. Если в макете ячейка настроена как Параметр, в коде модуля можно передать в этот параметр составную форматированную строку.

Разберем по шагам пример формирования такой строки в коде:


// Создаем фрагменты строки с нужными шрифтами
ШрифтЖирный = Новый Шрифт(,, Истина);
ШрифтОбычный = Новый Шрифт(,, Ложь);

Фрагмент1 = Новый ФорматированнаяСтрока("Покупатель: ", ШрифтЖирный);
Фрагмент2 = Новый ФорматированнаяСтрока(Выборка.НаименованиеКонтрагента, ШрифтОбычный);

// Объединяем фрагменты в одну форматированную строку
МассивФрагментов = Новый Массив;
МассивФрагментов.Добавить(Фрагмент1);
МассивФрагментов.Добавить(Фрагмент2);

ИтоговаяСтрока = Новый ФорматированнаяСтрока(МассивФрагментов);

// Передаем значение в параметр области макета
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.ПокупательФорматированный = ИтоговаяСтрока;
ТабличныйДокумент.Вывести(ОбластьСтрока);

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

Решение 2. Разбиение строки на отдельные ячейки макета

Если конфигурация работает в режиме совместимости ниже 8.3.24, рассмотрим классический вариант обхода — физическое разделение текста на две соседние ячейки макета:

  1. В первой ячейке задаем статический текст (например, "Договор №:") и устанавливаем жирное начертание шрифта.
  2. Во второй ячейке устанавливаем заполнение Параметр и оставляем стандартный шрифт.
  3. Убираем внутреннюю границу между ячейками для визуального эффекта единой строки.

Ограничение метода: если текст параметра не помещается по ширине, стандартное свойство РазмещениеТекста.Переносить будет переносить строки только в пределах правой ячейки. Текст не сможет автоматически продолжить заполнение под левой ячейкой на следующей строке.

Решение 3. Использование HTML-разметки и Форматированного документа

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

  1. Формируем текст с помощью стандартных тегов (<b>, <span>, <p>).
  2. Отображаем результат в интерфейсе через объект ФорматированныйДокумент или элемент формы ПолеHTMLДокумента.
  3. При необходимости печати используем встроенные методы вывода HTML-документов платформы 1С.

Решение 4. Использование офисных макетов (DOCX / ODT)

Для сложных печатных форм договоров, соглашений и заявлений отличной альтернативой табличному документу выступают макеты на основе документов Microsoft Word (DOCX) или OpenDocument (ODT). В текстовых процессорах сквозной перенос строк и смешанное форматирование фрагментов внутри одного абзаца работают на уровне стандарта формата и не вызывают трудностей при заполнении параметров.

← На главную