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

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

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

📊 Какой версии 1С вы используете?
8.3 (управляемые формы)
8.2 (обычные формы)
Обе версии
Не знаю

1. Способы установки шрифтов в 1С: обзор методов

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

Наиболее универсальным считается метод с внешними компонентами (например, AddFont или NativeAPI), так как он позволяет динамически регистрировать шрифты непосредственно в сеансе 1С. Однако этот способ требует административных прав на рабочих станциях и может конфликтовать с политиками безопасности компании. Альтернативный вариант — правка реестра — подходит для развертывания шрифтов на множестве компьютеров через групповую политику, но не работает в терминальных сессиях или облачных решениях.

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

  • 🔧 Внешние компоненты: динамическая регистрация шрифтов в сеансе 1С (требует прав администратора).
  • 📝 Редактирование реестра: установка шрифтов на уровне ОС (подходит для массового развертывания).
  • 🖥️ Встроенные механизмы: изменение шрифтов в табличных документах, макетах и стилях (ограниченный функционал).

Выбор метода зависит от задачи:

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

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

2. Установка шрифта через внешнюю компоненту

Самый гибкий способ — использование внешних компонент, таких как AddFont или NativeAPI. Эти библиотеки позволяют регистрировать шрифты "на лету" прямо в сеансе 1С без перезагрузки системы. Основное преимущество — возможность динамически подгружать шрифты только для текущего пользователя, не затрагивая системные настройки.

Пример кода для регистрации шрифта с помощью AddFont:

ПодключитьВнешнююКомпоненту("C:\AddFont\AddFont.dll", "AddFont", ТипВнешнейКомпоненты.Native);

AddFont = Новый("AddFont.AddFont");

Результат = AddFont.InstallFont("C:\Fonts\MyFont.ttf", "MyFont", Истина);

Где:

  • InstallFont — метод компоненты, принимающий путь к файлу шрифта, имя для регистрации и флаг перезаписи.
  • Истина — разрешает перезапись, если шрифт с таким именем уже существует.

После регистрации шрифт становится доступен в ТабличныйДокумент:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Шрифт = Новый Шрифт("MyFont", 10);

⚠️ Внимание: Внешние компоненты требуют подписи и могут блокироваться антивирусом. Перед использованием добавьте исключение для DLL-файла в настройках защиты.
  • ✅ Плюсы: динамическая загрузка, не требует прав администратора на клиентских машинах (если шрифт уже установлен в системе).
  • ❌ Минусы: зависимость от сторонних библиотек, возможные конфликты с антивирусами.

Убедиться, что шрифт лицензионный и разрешен для встраивания|Скачать и зарегистрировать DLL-компоненту на сервере 1С|Проверить совместимость компоненты с версией платформы (8.2 или 8.3)|Тестировать на тестовой базе перед массовым развертыванием-->

3. Редактирование реестра Windows для установки шрифтов

Если шрифт нужно установить на всех рабочих станциях, проще всего внести изменения в реестр Windows. Этот метод подходит для развертывания через групповую политику (GPO) или скрипты запуска. Шрифты, добавленные таким образом, становятся доступны всем приложениям, включая 1С.

Ключ реестра, отвечающий за шрифты: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

Пример команды для добавления шрифта через reg add:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "MyFont (TrueType)" /t REG_SZ /d "myfont.ttf" /f

После этого файл шрифта (myfont.ttf) должен быть скопирован в системную папку: C:\Windows\Fonts\

Параметр Описание Пример значения
/v Имя параметра (отображаемое имя шрифта) "MyFont (TrueType)"
/t Тип данных REG_SZ
/d Значение (имя файла шрифта) "myfont.ttf"
/f Принудительное перезапись

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

⚠️ Внимание: Некоторые шрифты (например, с нелатинскими символами в названии файла) могут некорректно отображаться в реестре. В таком случае используйте короткие имена без пробелов и спецсимволов.
Как проверить, зарегистрировался ли шрифт?

Откройте Пуск → Панель управления → Шрифты или выполните в командной строке:

dir C:\Windows\Fonts\ /b | find "myfont"

Если шрифт отображается в списке, но не применяется в 1С, проверьте права доступа к файлу (icacls C:\Windows\Fonts\myfont.ttf).

4. Изменение шрифтов в табличных документах и макетах

Если задача ограничивается изменением шрифтов в печатных формах или отчетах, можно обойтись без внешних компонент. Платформа 1С:Предприятие позволяет программно настраивать шрифты в объектах типа ТабличныйДокумент, ТекстовыйДокумент и Макет.

Пример кода для изменения шрифта в табличном документе:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Шрифт = Новый Шрифт("Arial", 10, Истина, Ложь, 0); // (Имя, Размер, Полужирный, Курсив, Подчеркивание)

ТабДок.Вывести("Пример текста");

Для применения шрифта ко всему документу используйте метод УстановитьШрифт():

ТабДок.УстановитьШрифт(Новый Шрифт("Times New Roman", 12));

В макетах (например, для печатных форм) шрифт настраивается через свойства областей:

Макет = Документы.СчетНаОплату.ПечатнаяФорма();

Макет.Область("Шапка").Шрифт = Новый Шрифт("Calibri", 11, Истина);

  • 📌 Доступные свойства объекта Шрифт:
    • Имя — название шрифта (например, "Tahoma").
    • Размер — кегль в пунктах.
    • Полужирный, Курсив, Подчеркивание — логические флаги.
    • Цвет — объект типа Цвет (например, Новый Цвет(255, 0, 0) для красного).

Шрифты, установленные через код в табличном документе, действуют только в текущем сеансе и не сохраняются в базе данных. Для постоянного изменения печатных форм необходимо редактировать макеты в конфигураторе.

5. Ограничения и типичные ошибки

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

  • 🚫 Шрифт не отображается в списке:
    • Причина: шрифт не зарегистрирован в системе или имя файла содержит недопустимые символы.
    • Решение: проверьте регистрацию через Панель управления → Шрифты или переименуйте файл.
  • 🔄 Шрифт применяется не ко всем элементам:
    • Причина: в управляемых формах шрифт может переопределяться стилями или настройками темы.
    • Решение: используйте метод УстановитьСтиль() для глобальных изменений.
  • 🛡️ Ошибка доступа при регистрации шрифта:
    • Причина: недостаточно прав для записи в C:\Windows\Fonts\.
    • Решение: запустите 1С от имени администратора или используйте групповую политику.

Еще одна частая ошибка — попытка использовать шрифты с лицензионными ограничениями. Например, шрифты от Adobe или Microsoft Office могут требовать дополнительных лицензий для встраивания в корпоративные приложения. Перед использованием проверьте условия лицензии (файл LICENSE.txt в архиве со шрифтом).

В терминальных средах (RDS, Citrix) шрифты устанавливаются в профиль пользователя, а не в систему. Путь для установки: %USERPROFILE%\AppData\Local\Microsoft\Windows\Fonts\

⚠️ Внимание: В облачных решениях (1С:Fresh, 1С:ГISPRU) программная установка шрифтов невозможна из-за ограничений виртуальной инфраструктуры. Используйте только системные шрифты или обратитесь в поддержку за разрешением.
💡

Для стабильной работы избегайте динамической загрузки шрифтов в высоконагруженных системах. Предпочтительнее заранее установить шрифты на все рабочие станции через GPO.

6. Альтернативные подходы: стили и CSS

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

Стиль = Новый Стиль(Истина);

Стиль.Шрифт = Новый Шрифт("Segoe UI", 9);

Форма.ЭлементыУправления.ДляКаждого(Функция(Элемент)

Если ТипЗнч(Элемент) = Тип("ПолеНадписи") Тогда

Элемент.Стиль = Стиль;

КонецЕсли;

КонецФункции);

Для веб-клиента и тонкого клиента можно использовать CSS-стилизацию через свойство HTMLДокумент. Пример:

Форма.HTMLДокумент.Заголовок = "

";

Преимущества этого метода:

  • 🎨 Гибкость: можно задавать разные шрифты для разных элементов.
  • 🔄 Динамичность: стили применяются без перезагрузки формы.
  • 🛡️ Безопасность: не требует административных прав.

Однако у подхода есть и недостатки:

  • Не все элементы формы поддерживают стилизацию (например, табличные поля).
  • В толстом клиенте CSS может игнорироваться.

7. Практические примеры: отчеты и печатные формы

Рассмотрим типичную задачу: заменить шрифт в печатной форме счета на оплату. Для этого отредактируем макет документа в конфигураторе.

Шаг 1. Откройте макет печатной формы в режиме редактирования: Документы.СчетНаОплату.Формы.ПечатнаяФорма.Макет

Шаг 2. Выделите область (например, "Шапка") и установите шрифт через панель свойств:

Область.Шрифт = Новый Шрифт("DejaVu Sans", 10);

Шаг 3. Для динамического изменения шрифта в зависимости от организации используйте код в модуле формы:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Организация.Наименование = "ООО Ромашка" Тогда

Макет.Область("Шапка").Шрифт = Новый Шрифт("Arial Narrow", 10);

Иначе

Макет.Область("Шапка").Шрифт = Новый Шрифт("Times New Roman", 12);

КонецЕсли;

КонецПроцедуры

Для применения шрифта ко всем строкам табличного документа используйте цикл:

Для Каждого Строка Из ТабДок.Область("Таблица") Цикл

Строка.Шрифт = Новый Шрифт("Consolas", 9);

КонецЦикла;

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

Если ТабДок.ПолучитьОбласть(НомерСтроки, 5).Текст = "Итого:" Тогда

ТабДок.УстановитьШрифт(НомерСтроки, 5, Новый Шрифт("Arial", 10, Истина));

КонецЕсли;

FAQ: Частые вопросы по установке шрифтов в 1С

Можно ли установить шрифт только для одного пользователя?

Да, для этого зарегистрируйте шрифт в профиле пользователя (%USERPROFILE%\AppData\Local\Microsoft\Windows\Fonts\) и обновите реестр в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts. В терминальных сессиях этот метод предпочтительнее системной установки.

Почему шрифт отображается в Word, но не виден в 1С?

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

Сообщить(Строка(Новый Шрифт("ИмяШрифта", 10))); // Вернет "Шрифт: ИмяШрифта" или ошибку

Как заменить шрифт во всех отчетах сразу?

Создайте общую процедуру в глобальном модуле:

Процедура ПрименитьШрифтКОтчету(Отчет, ИмяШрифта, Размер) Экспорт

Макет = Отчет.Макет;

Для Каждого Область Из Макет.Области Цикл

Область.Шрифт = Новый Шрифт(ИмяШрифта, Размер);

КонецЦикла;

КонецПроцедуры

Затем вызывайте ее перед выводом каждого отчета:

ПрименитьШрифтКОтчету(Отчет.Продажи, "Calibri", 11);

Какие шрифты гарантированно работают в 1С?

Платформа поддерживает все шрифты, зарегистрированные в Windows, но для кросс-платформенной совместимости рекомендуются:

  • Arial, Times New Roman, Courier New (входят в стандартную поставку Windows).
  • DejaVu Sans, Liberation Sans (бесплатные аналоги с поддержкой кириллицы).
  • Segoe UI (оптимизирован для интерфейсов, но может отсутствовать в старых версиях Windows).

Избегайте экзотических шрифтов — они могут не отображаться на клиентских машинах.

Как вернуть стандартные шрифты после экспериментов?

Для сброса шрифтов в табличном документе используйте:

ТабДок.Шрифт = Неопределено;

Для форм и макетов удалите ручные настройки шрифта в конфигураторе или восстановите макет из резервной копии. Если шрифты были добавлены в реестр, удалите соответствующие ключи и перезагрузите систему.