Разработка и Конфигурация · 10 мин
Как установить шрифт в 1С программно
Как программно установить шрифт в 1С: конструктор Шрифт, табличные документы, поля формы, условное оформление. Примеры кода, ошибки и проверка результата.
Программная установка шрифта в 1С нужна в трёх типовых ситуациях: при формировании печатных форм через табличный документ, при оформлении элементов управляемой формы и при выводе отчётов на СКД. Во всех случаях используется объект Шрифт (Font), который создаётся конструктором Новый Шрифт(...) либо берётся из стиля конфигурации.
Важно понимать ограничение платформы: шрифт, указанный в коде, должен быть установлен в операционной системе клиентского компьютера или сервера (в зависимости от того, где формируется документ). Если шрифта нет, система подставит ближайший доступный, и печатная форма «поедет»: изменятся переносы строк и ширина колонок.
Ниже разобраны рабочие способы установки шрифта для табличных документов, элементов формы, условного оформления и макетов, а также типичные ошибки и способы проверки результата.
Конструктор шрифта и его параметры
Базовый способ — создать объект шрифта через конструктор. Синтаксис: Новый Шрифт(ИмяШрифта, Размер, Жирный, Наклонный, Зачеркнутый, Подчеркнутый). Все параметры, кроме имени, необязательны.
Пример создания шрифта и применения к области табличного документа:
ТабДок = Новый ТабличныйДокумент;
Область = ТабДок.Область("R1C1");
Область.Текст = "Пример текста";
Область.Шрифт = Новый Шрифт("Arial", 12, Истина, Ложь);
Первый параметр — строка с именем шрифта точно так, как он зарегистрирован в операционной системе («Arial», «Times New Roman», «Courier New»). Регистр букв обычно не важен, но лишние пробелы и опечатки приводят к подмене шрифта без какого-либо сообщения об ошибке — это самая коварная особенность механизма.
Если вызвать конструктор без параметров (Новый Шрифт()), будет создан шрифт с настройками по умолчанию. Отдельные свойства можно менять и после создания, но удобнее задавать всё сразу в конструкторе — код получается короче и читается легче.
ШрифтЗаголовка = Новый Шрифт("Arial", 14, Истина);
ШрифтОбычный = Новый Шрифт("Times New Roman", 10);
ШрифтКурсив = Новый Шрифт("Arial", 10, Ложь, Истина);Установка шрифта в табличном документе и печатных формах
Чаще всего шрифт требуется при программном формировании печатной формы. Свойство Шрифт есть у области ячеек табличного документа, поэтому его можно задать как для одной ячейки, так и для диапазона или целой строки.
Макет = ПолучитьМакет("МакетСчета");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = НомерДок;
ТабДок.Вывести(ОбластьШапка);
// Изменить шрифт всей выведенной области
ОбластьЯчеек = ТабДок.Область("R1C1:R5C8");
ОбластьЯчеек.Шрифт = Новый Шрифт("Courier New", 9);
Если печатная форма строится на макете, шрифт лучше задавать прямо в макете конфигуратора — тогда код не понадобится вовсе. Программное переопределение оправдано, когда шрифт зависит от условий: например, крупный шрифт для суммы прописью или моноширинный для штрихкодов и артикулов.
Для вывода штрихкодов шрифт подбирается особенно аккуратно: специализированные шрифты (например, из состава компоненты печати штрихкодов) должны быть установлены на каждом рабочем месте, где печатается форма. Проверяйте это до запуска в эксплуатацию.
Шрифт элементов управляемой формы
У элементов управляемой формы (поля, надписи, кнопки, таблицы) есть свойство Шрифт, доступное в коде через коллекцию Элементы. Изменять его нужно в обработчике ПриСозданииНаСервере или при наступлении нужного события.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.НадписьИтог.Шрифт = Новый Шрифт(, 14, Истина);
Элементы.ТаблицаТовары.Шрифт = Новый Шрифт("Verdana", 9);
КонецПроцедуры
Обратите внимание на первый вызов: если имя шрифта не указано (пустой первый параметр), используется системный шрифт с изменёнными размером и начертанием. Это удобно, когда нужно просто сделать надпись крупнее или жирнее, не меняя гарнитуру.
Для динамического изменения шрифта по условию (например, подсветить просроченную задолженность) менять шрифт отдельных ячеек таблицы формы нельзя напрямую — используйте условное оформление формы, о котором ниже.
Шрифт через стили и условное оформление
Шрифты стиля
В конфигурации можно определить общие стили (ветка «Общие → Стили») и ссылаться на них из кода через ЦветаСтиля и ШрифтыСтиля. Это правильный подход для типовых решений: внешний вид меняется централизованно, без правки кода.
Элементы.НадписьВажно.Шрифт = ШрифтыСтиля.ВажнаяНадписьШрифт;
Условное оформление формы
Чтобы шрифт строки таблицы зависел от данных, добавьте элемент условного оформления формы программно:
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(, , Истина));
Отбор = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Просрочено");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Истина;
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Товары");
Тот же механизм работает в отчётах на СКД: параметр «Шрифт» доступен в настройках оформления как в конфигураторе, так и программно через Настройки.УсловноеОформление.
Сравнение вариантов
Гибко, подходит для разовых случаев и динамических условий. Минус — настройки разбросаны по коду и трудно меняются централизованно.
Самый простой вариант без кода. Не подходит, когда шрифт зависит от данных или прав пользователя.
Централизованное управление внешним видом. Требует заранее создать элементы стиля в конфигурации.
Единственный способ менять шрифт по условию в таблицах форм и отчётах СКД. Код заметно объёмнее.
Добавление нового шрифта в систему
Программно «установить» шрифт в Windows из кода 1С штатными средствами нельзя — это операция уровня операционной системы. Файл шрифта (.ttf, .otf) нужно скопировать в системный каталог шрифтов и зарегистрировать, что обычно делается вручную (правый клик по файлу → «Установить») или средствами администрирования домена.
Для массового развёртывания на рабочих местах используют групповые политики или скрипты установки. После установки шрифта сеанс 1С нужно перезапустить: платформа читает список доступных шрифтов при старте, и новый шрифт в уже открытом клиенте может не появиться.
Если шрифт нужен только для печати и нет возможности установить его на все машины, рассмотрите альтернативу: формировать документ на сервере, где шрифт установлен, и отдавать пользователю готовый PDF — тогда вёрстка сохранится независимо от клиентского компьютера.
Проверка результата и типичные ошибки
Проверить, какой шрифт реально применился, можно только визуально или косвенно. Быстрый способ — вывести тестовую строку с характерными символами (например, «Уу Gg 0123»), где различия гарнитур заметны, и сравнить с образцом. Для печатных форм полезно сохранить табличный документ в PDF и открыть на другом компьютере.
Контрольные точки после внедрения:
- текст не обрезается и не выходит за границы ячеек — признак того, что метрики шрифта совпадают с ожидаемыми;
- переносы строк в многострочных полях совпадают на разных рабочих местах;
- при печати на принтере вёрстка совпадает с предпросмотром;
- моноширинные шрифты (для кодов и артикулов) выравнивают символы строго по колонкам.
Что важно запомнить
Шрифт задаётся объектом Новый Шрифт и присваивается свойству Шрифт области, элемента формы или оформления. Шрифт должен быть установлен в ОС там, где формируется вывод. Для оформления по условию используйте условное оформление, для централизованного управления — стили. Ошибки в имени шрифта платформа не показывает — результат проверяйте визуально.
Частые вопросы
Как сделать шрифт жирным только для одной ячейки табличного документа?
Получите область нужной ячейки через ТабДок.Область("R3C2") и присвойте её свойству Шрифт новый объект: Новый Шрифт(, , Истина). Пустой первый параметр сохранит текущую гарнитуру, изменится только насыщенность.
Почему указанный в коде шрифт не применяется?
Чаще всего шрифт не установлен в операционной системе того компьютера, где формируется документ, или в имени есть опечатка. Платформа не выдаёт ошибку, а подставляет похожий шрифт. Проверьте наличие шрифта в панели шрифтов ОС и перезапустите сеанс 1С.
Можно ли задать шрифт по умолчанию для всей конфигурации?
Да, через общий стиль конфигурации: в ветке «Общие → Стили» настраивается основной стиль, включающий шрифт текста по умолчанию. Отдельные элементы затем могут переопределять его своими значениями.
Как изменить шрифт строки таблицы формы по условию?
Напрямую у ячеек динамической таблицы шрифт не меняется. Добавьте программно элемент условного оформления формы: задайте отбор по полю данных, установите параметр оформления «Шрифт» и укажите оформляемое поле таблицы.
Работает ли установка шрифта в обычных формах так же, как в управляемых?
Общий принцип тот же — свойство Шрифт есть у элементов и областей. Но в обычных формах изменение выполняется на клиенте в любой момент, а условное оформление формы как механизм отсутствует — оформление по условию приходится делать в обработчиках ПриВыводеСтроки.
Можно ли из кода 1С установить файл шрифта в Windows?
Штатных средств для этого нет. На практике копируют файл в каталог шрифтов и регистрируют его средствами ОС через внешние скрипты или групповые политики, но это задача системного администрирования, а не встроенного языка 1С.