Почему обычная форма 1С 8.3.10 некорректно разворачивается во весь экран и как это исправить?

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

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

Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам эффективные способы её решения.

Выясним причину некорректного поведения формы

Проанализируем ситуацию: сбой геометрии окна при открытии обычных форм связан с комбинацией следующих факторов:

  1. Особенности рендеринга платформы: Начиная с версии 8.3.9, в платформе менялся механизм работы с высокими разрешениями экрана (DPI-awareness). При отображении обычных форм на платформах 8.3.9–8.3.10 расчет привязок элементов при автоматическом разворачивании окна происходил с ошибками.
  2. Нестандартный масштаб экрана в Windows: Если на рабочем месте пользователя или разработчика в настройках операционной системы установлен масштаб выше 100% (например, 125% или 150% на Full HD или 4K мониторах), платформенная сетка координат рассчитывается с искажением.
  3. Нарушение автоматических привязок: Добавление новых нетиповых реквизитов или редактирование формы в Конфигураторе на компьютере с включенным масштабированием Windows нарушает внутреннюю логику связей типовых элементов.

Способ 1. Изменение настроек масштаба экрана Windows

Посмотрим на решение, которое помогает быстро устранить сбой без внесения изменений в конфигуратор:

  1. Откроем параметры экрана операционной системы (Параметры Windows -> Система -> Дисплей).
  2. Установим значение масштаба текста, приложений и других элементов на 100% (96 DPI).
  3. Перезагрузим сеанс пользователя Windows или перезапустим клиент 1С:Предприятие.

Способ 2. Восстановление типовой формы и коррекция привязок в Конфигураторе

Если на форме были внесены пользовательские изменения или добавлены новые элементы, разберем по шагам правильный порядок доработки:

  1. Убедимся, что масштаб экрана на компьютере разработчика установлен строго в 100% перед запуском Конфигуратора.
  2. В Конфигураторе полностью откатим форму на типовую (путем сравнения и объединения с конфигурацией поставщика или загрузки исходного объекта).
  3. Откроем форму и проверим привязки через меню Форма -> Проверить (или комбинацию клавиш Ctrl+R). Изменяя размер проверочного окна, убедимся, что границы элементов корректно растягиваются и не подсвечиваются ошибками.
  4. Внесем нужные доработки (например, добавим новый флаг или поле ввода) и вручную настроим привязки для всех добавленных и смежных элементов.
  5. В свойствах формы изменим значение свойства Состояние окна с «Обычное» на «Свободное». Это поможет избежать платформенной блокировки расчетных границ при открытии.

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

Так как некорректная работа с привязками обычных форм является специфической ошибкой платформ ветки 8.3.9–8.3.10, для конфигураций на обычных формах (таких как Управление торговлей 10.3, Управление производственным предприятием 1.3 или Бухгалтерия предприятия 2.0) рекомендуется запуск под версией платформы, где этот баг отсутствует.

В параметрах запуска информационной базы в окне 1С:Предприятие укажем ключ запуска под платформой 8.3.8 или 8.2:

Параметр строки запуска: /V 8.3.8

Способ 4. Программный сброс параметров формы при открытии

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


Процедура ПриОткрытии()
    // Программно незначительно меняем высоту формы для принудительного перерасчета привязок
    ЭтаФорма.Высота = ЭтаФорма.Высота + 1;
    ЭтаФорма.Высота = ЭтаФорма.Высота - 1;
КонецПроцедуры

Дополнительно рекомендуется очистить сохраненные настройки положения окон пользователя. Для этого можно воспользоваться вызовом метода ХранилищеСистемныхНастроек.Удалить() для системных ключей конфигурации или сбросить настройки пользователя через стандартный интерфейс программы.

← На главную