Как изменить основной шрифт и стиль управляемых форм в 1С

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

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

Архитектурные ограничения управляемых форм

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

Проанализируем основные архитектурные особенности платформы:

  1. Отсутствие глобального аналога «Главного стиля»: Базовые параметры шрифтов текста и заголовков зашиты в ядро платформы и динамически из конфигуратора для всей системы сразу не меняются.
  2. Особенности метаданного «Элемент стиля»: Если создать в конфигураторе Элемент стиля с типом Шрифт, платформа не станет автоматически применять его ко всем элементам управляемых форм. Элементы стиля работают только тогда, когда они явно назначены конкретному свойству конкретного реквизита или элемента формы.
  3. Отсутствие мультиязычности для оформительских свойств: Многоязычность в 1С реализована для строковых данных (синонимов, подсказок, заголовков), но не для элементов стиля, таких как цвета или шрифты. Задать разный шрифт для разных языков в свойствах элемента конфигурации напрямую нельзя.

Способ 1. Программный обход элементов формы при создании

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

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

Рассмотрим пример реализации функции установки шрифта:


Процедура УстановитьШрифтФормыПоЯзыку(Форма) Экспорт
    
    ЯзыкСеанса = ТекущийЯзык();
    
    // Определяем параметры шрифта в зависимости от языка
    Если ЯзыкСеанса = "ru" Тогда
        НовыйШрифт = Новый Шрифт("Arial", 10);
    ИначеЕсли ЯзыкСеанса = "en" Тогда
        НовыйШрифт = Новый Шрифт("Segoe UI", 11);
    Иначе
        Возврат;
    КонецЕсли;
    
    ОбходитьЭлементыФормы(Форма.Элементы, НовыйШрифт);
    
КонецПроцедуры

Процедура ОбходитьЭлементыФормы(КоллекцияЭлементов, НовыйШрифт)
    
    Для Каждого Элемент Из КоллекцияЭлементов Цикл
        
        // Проверяем наличие свойства Шрифт у элемента
        Попытка
            Элемент.Шрифт = НовыйШрифт;
        Исключение
            // У элемента может не быть свойства Шрифт
        КонецПопытки;
        
        // Если элемент содержит подчиненные элементы (например, группа)
        Если ТипЗнч(Элемент) = Тип("ГруппаФормы") Или ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
            ОбходитьЭлементыФормы(Элемент.ПодчиненныеЭлементы, НовыйШрифт);
        КонецЕсли;
        
    КонецЦикла;

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

Способ 2. Применение расширений конфигурации

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

Для этого создаем расширение и подключаем обработку события ПриСозданииНаСервере для нужных форм через аннотацию &После. В теле обработчика вызываем процедуру переопределения шрифтов из общего модуля расширения.


&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Расш1_ОбщийМодульКлиентСервер.УстановитьШрифтФормыПоЯзыку(ЭтаФорма);
    
КонецПроцедуры

Способ 3. Интерактивное масштабирование и системные настройки

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

  1. Интерактивное изменение масштаба: В режиме «1С:Предприятие» пользователь может открыть главное меню, выбрать пункт Изменить масштаб, отрегулировать процент отображения интерфейса и нажать кнопку Установить для всех. Это правило сохраняется в настройках текущего пользователя.
  2. Настройки операционной системы: Изменение параметров масштабирования экрана (DPI) в настройках ОС или включение масштабирования высокого разрешения в свойствах ярлыка файла 1cv8.exe или 1cv8c.exe позволяет масштабировать интерфейс глобально для всей программы.
← На главную