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

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

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

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

Различие между вариантом масштаба и числовым коэффициентом

Проанализируем ситуацию: часто разработчики путают две разные настройки платформы. Первая — это ВариантМасштабаФормКлиентскогоПриложения. Эта настройка позволяет переключаться между режимами «Обычный» и «Компактный». Компактный режим уменьшает отступы между элементами, делая интерфейс более плотным, но не изменяет размер шрифтов или графики пропорционально. Рассмотрим пример кода, который часто предлагают для решения, но который лишь переключает плотность интерфейса:


Настройка = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
Настройка.ВариантМасштабаФормКлиентскогоПриложения = ВариантМасштабаФормКлиентскогоПриложения.Компактный;
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "", Настройка);

Как мы видим, этот метод не решает задачу установления масштаба, например, в 120% или 80%. Для реального изменения размеров всех элементов формы используется свойство Масштаб объекта УправляемаяФорма.

Программное управление свойством Масштаб

Для каждой конкретной управляемой формы в 1С существует числовое свойство Масштаб. Оно измеряется в процентах и принимает значения в диапазоне от 50 до 400. Выясним, как применить его программно. Если нам нужно изменить масштаб текущей формы при ее открытии, мы можем прописать это непосредственно в модуле формы:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Устанавливаем масштаб формы в 80%
    ЭтаФорма.Масштаб = 80;
КонецПроцедуры

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

Массовое изменение масштаба для всех форм через расширение

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

  1. Создадим новое расширение конфигурации.
  2. Найдем в дереве объектов расширения тип УправляемаяФорма (базовый тип).
  3. Добавим в расширение обработчик события ПриСозданииНаСервере для всех форм.
  4. В коде обработчика пропишем установку масштаба.

Проанализируем пример кода в расширении:


&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Данный код выполнится для каждой формы, открываемой в системе
    ЭтаФорма.Масштаб = 120; 
КонецПроцедуры

Этот подход является наиболее «чистым» и современным, так как он позволяет централизованно управлять интерфейсом всех объектов метаданных (справочников, документов, форм выбора), не внося изменения в основную конфигурацию и не редактируя каждую форму вручную.

Использование параметра запуска /DisplayScale

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

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

/DisplayScale 1.25

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

Особенности хранения настроек в системном хранилище

Платформа 1С автоматически сохраняет настройки масштаба, которые пользователь выбрал интерактивно. Эти данные хранятся в ХранилищеСистемныхНастроек по ключу, содержащему путь к форме. Структура ключа выглядит следующим образом: Общее/НастройкиФорм/НастройкиОкна/<ИмяФормы>.

Посмотрим на технические нюансы: попытка массово записать настройки для всех возможных форм через ХранилищеСистемныхНастроек программно практически нереализуема, так как нужно знать точные имена всех форм в системе и во всех расширениях. Именно поэтому использование свойства ЭтаФорма.Масштаб в общем обработчике расширения или параметра запуска /DisplayScale является приоритетным решением.

Резюмируем: для разового или динамического изменения масштаба конкретного окна используем ЭтаФорма.Масштаб. Для глобального управления в рамках всей системы — применяем расширение с перехватом события создания формы или настраиваем параметры запуска ярлыка 1С.

← На главную