Разработка и Конфигурация · 12 мин
Как программно установить жирный шрифт в 1С
Как программно установить жирный шрифт в 1С: объект Шрифт, ЖирностьШрифта, форматированный текст, оформление табличного документа и условное оформление. Примеры кода.
В платформе 1С:Предприятие жирность текста задаётся через объект Шрифт (Font), у которого есть свойство Жирный (Bold). В зависимости от того, где нужно выделить текст — в поле формы, в табличном документе, в форматированной строке или через условное оформление — применяются разные механизмы, и именно выбор правильного механизма чаще всего вызывает вопросы у разработчиков.
Ключевая особенность: объект Шрифт в 1С неизменяем. Нельзя взять существующий шрифт элемента и просто переключить ему свойство — нужно создать новый шрифт через конструктор Новый Шрифт, указав нужные параметры, и присвоить его целиком. Это принципиально отличается от привычного подхода в других средах разработки.
Ниже разобраны все основные сценарии: установка жирного шрифта для элементов управляемой и обычной формы, выделение области табличного документа, работа с форматированной строкой и документом, условное оформление динамических списков и таблиц, а также типичные ошибки и способы проверки результата.
Базовый принцип: объект Шрифт и его неизменяемость
Тип Шрифт доступен и на толстом, и на тонком, и на веб-клиенте. Конструктор имеет вид: Новый Шрифт(ИсходныйШрифт, ИмяШрифта, Размер, Жирный, Наклонный, Подчеркнутый, Зачеркнутый). Все параметры необязательны, но порядок позиционный, поэтому для установки только жирности чаще удобнее передать исходный шрифт первым параметром.
Типовой пример для элемента управляемой формы:
НовыйШрифт = Новый Шрифт(Элементы.Наименование.Шрифт,,, Истина);
Элементы.Наименование.Шрифт = НовыйШрифт;
Здесь первым параметром передаётся текущий шрифт элемента, второй и третий параметры (имя и размер) пропущены — они наследуются, а четвёртый параметр Истина включает жирное начертание. Если исходный шрифт не указать, платформа возьмёт шрифт по умолчанию, и визуально элемент может «поплыть» относительно остальных.
Жирный шрифт в элементах управляемой формы
В управляемых формах доступ к элементам выполняется через коллекцию Элементы. Свойство Шрифт есть у полей ввода, надписей, кнопок, таблиц и групп. Изменение применяется мгновенно, без обновления формы.
Надпись и поле ввода
&НаКлиенте
Процедура СделатьЖирным(Команда)
ЖирныйШрифт = Новый Шрифт(Элементы.ЗаголовокИтога.Шрифт,,, Истина);
Элементы.ЗаголовокИтога.Шрифт = ЖирныйШрифт;
КонецПроцедуры
Если нужно переключать жирность по условию — например, подсвечивать итог только при превышении лимита — создавайте шрифт на основе текущего и проверяйте его свойство Жирный, чтобы не плодить лишние объекты:
&НаСервере
Процедура ОбновитьОформлениеИтога()
Если Объект.Сумма > 100000 Тогда
Элементы.ИтоговаяСумма.Шрифт = Новый Шрифт(Элементы.ИтоговаяСумма.Шрифт,,, Истина);
Иначе
Элементы.ИтоговаяСумма.Шрифт = Новый Шрифт(Элементы.ИтоговаяСумма.Шрифт,,, Ложь);
КонецЕсли;
КонецПроцедуры
Шрифт заголовка формы и групп
У самой формы и у групп есть свойства ШрифтЗаголовка. Они работают по тому же принципу: ЭтаФорма.ШрифтЗаголовка = Новый Шрифт(,,, Истина). Учтите, что в некоторых такси-интерфейсах заголовок формы управляется системой и переопределение может не отображаться — проверяйте результат в целевом клиенте.
Жирный шрифт в табличном документе
Табличный документ (ТабличныйДокумент) — основной инструмент печатных форм и отчётов ручной постройки. У области ячеек есть свойство Шрифт, которое принимает тот же объект Шрифт.
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетОтчета");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
ОбластьЯчейки = ТабДок.Область("R1C1");
ОбластьЯчейки.Шрифт = Новый Шрифт(ОбластьЯчейки.Шрифт,,, Истина);
Обращаться к области можно по имени (R1C1), по именованной области или через ТабДок.Область(НомерСтроки, НомерКолонки). Если выводите область из макета, проще задать жирный шрифт прямо в макете конфигуратора — это снижает объём кода и упрощает поддержку. Программная установка оправдана, когда жирность зависит от данных: например, выделение строк с отрицательным остатком.
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Остаток = Число(ТабДок.Область(НомерСтроки, 3).Текст);
Если Остаток < 0 Тогда
ТабДок.Область(НомерСтроки, 3).Шрифт = Новый Шрифт(,,, Истина);
КонецЕсли;
КонецЦикла;
- 1Сформируйте табличный документ или получите область макета
- 2Получите ссылку на область ячеек через ТабДок.Область()
- 3Создайте Новый Шрифт с параметром Жирный = Истина
- 4Присвойте шрифт свойству Шрифт области
- 5Выведите документ на экран или печать и проверьте начертание
Жирный для части текста: форматированная строка и документ
Когда жирным нужно сделать не весь элемент, а отдельные слова — например, сумму в тексте уведомления — используется ФорматированнаяСтрока. Она собирается из частей через массив, где каждая часть может иметь свой шрифт, цвет и гиперссылку.
ЖирныйШрифт = Новый Шрифт(,,, Истина);
Части = Новый Массив;
Части.Добавить("Итоговая сумма заказа: ");
Части.Добавить(Новый ФорматированнаяСтрока("125 000 руб.", ЖирныйШрифт));
Элементы.ТекстУведомления.Заголовок = Новый ФорматированнаяСтрока(Части);
Форматированная строка поддерживается в заголовках полей, декораций, в поле форматированного документа и в сообщениях пользователю (через СообщениеПользователю с ограничениями). Для полноценного редактируемого текста с выделением жирным существует ФорматированныйДокумент, где начертание задаётся через методы установки шрифта для выделенного диапазона.
ЖирныйШрифт = Новый Шрифт(,,, Истина);
ФСтрока = Новый ФорматированнаяСтрока("Внимание: ", Новый ФорматированнаяСтрока("срок оплаты истёк", ЖирныйШрифт));
Элементы.ИнфоНадпись.Заголовок = ФСтрока;Условное оформление: жирный шрифт по условию
Для динамических списков, таблиц значений и данных формы правильный способ выделить строки жирным — условное оформление формы, а не перебор строк. Оно выполняется платформой на уровне отображения и не замедляет форму при прокрутке.
&НаСервере
Процедура УстановитьУсловноеОформление()
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Просрочено");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,, Истина));
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Список");
КонецПроцедуры
Аналогичным способом жирный шрифт задаётся в отчётах на СКД: в настройках отчёта на закладке «Условное оформление» добавляется элемент, где параметру «Шрифт» присваивается значение с включённой жирностью. Пользователь может сделать это и без программирования — прямо в режиме «Ещё → Изменить вариант отчёта».
Сравнение подходов
Подходит для статичного выделения конкретного элемента или области табличного документа. Простое, но требует кода на каждый случай.
Единственный вариант, когда жирной должна быть часть текста внутри одной надписи. Не работает для обычных полей ввода.
Правильный выбор для списков и таблиц, где жирность зависит от данных строки. Не применимо к одиночным полям вне таблиц.
Оптимально, если жирность постоянна. Не требует кода, но не реагирует на данные.
Обычные формы и внешние обработки
В обычных формах (режим совместимости, старые конфигурации) синтаксис почти идентичен: ЭлементыФормы.Надпись1.Шрифт = Новый Шрифт(,,, Истина). Отличие в имени коллекции — ЭлементыФормы вместо Элементы — и в том, что обычные формы работают только в толстом клиенте.
Для поля табличного документа на обычной форме шрифт меняется через область, как описано выше. Если обработка должна работать в обоих режимах, выносите установку шрифта в отдельную процедуру и вызывайте её с учётом директив компиляции.
Проверка результата и ограничения
Программно проверить, что шрифт стал жирным, можно чтением свойства: Если Элементы.Поле.Шрифт.Жирный Тогда .... Для табличного документа аналогично — ТабДок.Область("R1C1").Шрифт.Жирный. Это удобно в модульных тестах и при отладке.
Учитывайте ограничения платформы. В веб-клиенте набор доступных шрифтов зависит от браузера и операционной системы пользователя, поэтому экзотические шрифты могут подменяться, хотя жирность обычно сохраняется. В мобильной платформе часть свойств оформления игнорируется. При выгрузке табличного документа в Excel жирное начертание переносится, а при выгрузке в текстовый или CSV-формат — естественно, теряется.
Как проверить результат
Значение равно Истина после присваивания
Ложь — присваивание не выполнилось или шрифт переопределён позже
Текст визуально жирнее соседних элементов
Изменился размер или гарнитура — создан шрифт без исходного
Нужные области выделены жирным
Оформление пропало после Вывести() — шрифт установлен до вывода области
Жирными становятся только строки, удовлетворяющие отбору
Жирные все строки или ни одной — ошибка в условии отбора условного оформления
Часто задаваемые вопросы
Как сделать жирным только часть текста в надписи?
Используйте ФорматированнуюСтроку: соберите массив из обычных строк и вложенных форматированных строк с жирным шрифтом, затем присвойте результат свойству Заголовок поля надписи или декорации. Обычное свойство Шрифт элемента действует только на весь текст целиком.
Почему после Новый Шрифт(,,, Истина) текст стал другого размера?
Конструктор без исходного шрифта берёт системный шрифт по умолчанию, который может отличаться от шрифта элемента. Передайте текущий шрифт первым параметром: Новый Шрифт(Элементы.Поле.Шрифт,,, Истина) — тогда имя и размер сохранятся, изменится только жирность.
Можно ли сделать жирный шрифт в отчёте на СКД без кода?
Да. Откройте настройки варианта отчёта, перейдите на закладку «Условное оформление», добавьте элемент, задайте условие отбора и в параметре «Шрифт» включите жирное начертание. Это доступно и разработчику в схеме компоновки, и пользователю в режиме предприятия.
Работает ли установка жирного шрифта на тонком и веб-клиенте?
Да, объект Шрифт и свойство Жирный доступны на всех клиентах, включая веб-клиент. Различия возможны только в отрисовке конкретных гарнитур: если указанный шрифт отсутствует в системе пользователя, браузер подставит похожий, но жирность при этом обычно сохраняется.
Как выделить жирным строки таблицы значений на форме по условию?
Через условное оформление формы: добавьте элемент в коллекцию УсловноеОформление, настройте отбор по полю данных формы, установите параметр оформления «Шрифт» равным Новый Шрифт(,,, Истина) и укажите оформляемые поля. Перебирать строки в цикле и менять шрифт ячеек для динамических таблиц не нужно.
Сохранится ли жирный шрифт при сохранении табличного документа в Excel?
Да, при сохранении в формате Excel (MXL → XLSX) начертание шрифта переносится. При выгрузке в текстовые форматы (TXT, CSV) любое оформление теряется, так как эти форматы не хранят атрибуты шрифта.
Что важно запомнить
Шрифт в 1С неизменяем: жирность задаётся через Новый Шрифт с параметром Жирный = Истина и присваиванием целого объекта. Для части текста — ФорматированнаяСтрока, для строк по условию — условное оформление, для печатных форм — шрифт области табличного документа или настройка макета.