Как правильно изменить размер окна 1С и настроить масштабирование форм?

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

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

Выясним причину появления пустых полей при масштабировании

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

Проанализируем основные свойства, влияющие на адаптивность:

  1. Растягивать по горизонтали и Растягивать по вертикали: Эти свойства определяют, будет ли элемент увеличиваться вслед за изменением размера контейнера (группы или всей формы). Если у всех элементов формы эти флаги сняты или установлены в значение Ложь, платформа просто центрирует содержимое или прижимает его к левому верхнему углу, заполняя остальное пространство фоновым цветом.
  2. Группировка элементов: Рассмотрим ситуацию, когда элементы объединены в группу. Если у самой группы стоит свойство Группировка: Горизонтальная, но внутренние элементы имеют фиксированную ширину, группа не сможет "раздвинуть" свои границы.
  3. Максимальная и минимальная ширина/высота: Проверьте, не заданы ли в конфигураторе жесткие значения в пикселях. Для адаптивных форм рекомендуется оставлять эти поля пустыми (значение 0).

Использование горячих клавиш для восстановления интерфейса

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

Разберем действие комбинации Ctrl + Alt + R. Эта команда выполняет функцию "Восстановить положение окна". Попробуйте нажать ее, когда активна проблемная форма. Платформа сбросит все пользовательские настройки размеров к тем, которые были заданы разработчиком в конфигураторе "по умолчанию". Это самый быстрый способ вернуть форму в рабочее состояние, если она "поехала" только у одного сотрудника.

Также стоит упомянуть механизм общего масштабирования интерфейса, появившийся в последних версиях платформы 8.3. Если элементы кажутся слишком мелкими или крупными, мы можем использовать:

Программное управление режимом основного окна

В некоторых случаях нам необходимо программно контролировать, как открывается приложение. Для этого в платформе предусмотрена функция ПолучитьРежимОсновногоОкна(). Рассмотрим подробнее, как это работает.

Данная функция возвращает значение системного перечисления ВариантРежимаОсновногоОкна. Это позволяет нам узнать, открыто ли окно в обычном режиме, максимизировано ли оно (на весь экран) или находится в полноэкранном режиме без заголовков.

Посмотрим на пример кода, который позволяет проанализировать текущее состояние:


ТекущийРежим = ПолучитьРежимОсновногоОкна();
Если ТекущийРежим = ВариантРежимаОсновногоОкна.Максимизированное Тогда
    Сообщить("Окно развернуто на весь экран");
ИначеЕсли ТекущийРежим = ВариантРежимаОсновногоОкна.Обычное Тогда
    Сообщить("Окно имеет свободный размер");
КонецЕсли;

Хотя напрямую "приказать" окну изменить размер в пикселях из встроенного языка управляемого приложения довольно сложно, мы можем влиять на поведение форм через параметры открытия. Используя метод ОткрытьФорму(), мы можем передать структуру параметров, где указать, должно ли окно быть уникальным или блокировать владельца. Для изменения состояния самого окна 1С (свернуть/развернуть) часто прибегают к использованию внешних компонент или скриптов WScript.Shell, но в рамках типового функционала рекомендуется полагаться на настройки конфигурации.

Настройка свойств в конфигураторе для исключения пустых полей

Рассмотрим по шагам, что нужно сделать разработчику в конфигураторе, чтобы форма всегда занимала все предоставленное ей место:

  1. Откройте нужную форму и перейдите в корень дерева элементов (самый верхний пункт).
  2. В палитре свойств найдите раздел Размещение.
  3. Убедитесь, что свойство Способ изменения размера установлено в значение Изменять. Если там стоит Не изменять, форма будет иметь фиксированный размер, и при растягивании окна 1С появятся те самые пустые поля.
  4. Проверьте свойство Автомаксимальная ширина. Если оно установлено в Да, платформа может ограничить растягивание формы по горизонтали, чтобы текст не становился "слишком длинным" и нечитаемым. Чтобы форма занимала все окно, установите Нет.
  5. Для каждого элемента (особенно для табличных частей и динамических списков) проверьте свойства Растягивать по горизонтали и Растягивать по вертикали. Хотя бы один крупный элемент на форме должен иметь разрешение на растягивание в обе стороны, чтобы "поглощать" свободное пространство.

Влияние системного масштабирования (High DPI)

Проанализируем ситуацию, когда в 1С форма отображается некорректно из-за настроек Windows. На современных мониторах с высоким разрешением (4K и выше) пользователи часто ставят масштаб 125% или 150%. Старые версии платформы 1С могли некорректно обрабатывать такие настройки, что приводило к размытости шрифтов или "наползанию" элементов друг на друга.

Начиная с версии 8.3.14, 1С поддерживает режим High DPI. Если вы столкнулись с системными искажениями размеров, проверьте файл настроек conf.cfg в каталоге установки платформы. Параметр DPIAware позволяет управлять тем, как приложение сообщает операционной системе о своей готовности к масштабированию.

Рассмотрим варианты настройки:

Особенности работы в расширениях

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


&НаСервере
Процедура ИмяРасширения_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Убираем ограничение по ширине
    ЭтаФорма.АвтоМаксимальнаяШирина = Ложь;
    
    // Принудительно заставляем группу элементов растягиваться
    Элементы.ГруппаОсновныеРеквизиты.РастягиватьПоГоризонтали = Истина;
КонецПроцедуры

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

Подведем итог: Чтобы окна 1С не имели пустых полей, необходимо комбинировать правильную настройку свойств элементов в конфигураторе (разрешение на растягивание, отключение авто-максимальной ширины) и, при необходимости, сбрасывать пользовательские настройки окна через Ctrl + Alt + R. Понимание механики работы управляемых форм позволит вам создавать интерфейсы, которые будут одинаково хорошо выглядеть на мониторах с любым разрешением.

← На главную