При работе в толстом клиенте на платформе 1С:Предприятие 8.3 (в частности, на релизах ветки 8.3.9 и 8.3.10) пользователи и разработчики часто сталкиваются со странным поведением обычных (неуправляемых) форм. При первом открытии документа или справочника окно разворачивается во весь экран с нарушением расположения элементов управления (кнопки, табличные части и реквизиты смещаются или нарушается расчет границ). Однако после свертывания формы и повторного клика на разворачивание окна элементы встают на свои места, но при открытии следующего документа проблема воспроизводится снова.
Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам эффективные способы её решения.
Проанализируем ситуацию: сбой геометрии окна при открытии обычных форм связан с комбинацией следующих факторов:
Посмотрим на решение, которое помогает быстро устранить сбой без внесения изменений в конфигуратор:
Если на форме были внесены пользовательские изменения или добавлены новые элементы, разберем по шагам правильный порядок доработки:
Ctrl+R). Изменяя размер проверочного окна, убедимся, что границы элементов корректно растягиваются и не подсвечиваются ошибками.Состояние окна с «Обычное» на «Свободное». Это поможет избежать платформенной блокировки расчетных границ при открытии.Так как некорректная работа с привязками обычных форм является специфической ошибкой платформ ветки 8.3.9–8.3.10, для конфигураций на обычных формах (таких как Управление торговлей 10.3, Управление производственным предприятием 1.3 или Бухгалтерия предприятия 2.0) рекомендуется запуск под версией платформы, где этот баг отсутствует.
В параметрах запуска информационной базы в окне 1С:Предприятие укажем ключ запуска под платформой 8.3.8 или 8.2:
Параметр строки запуска: /V 8.3.8
В ситуациях, когда изменить масштаб системы или версию платформы нет возможности, применимы программные методы обхода. В модуле проблемной формы в обработчике события ПриОткрытии() принудительно инициируем пересчет координат элементов:
Процедура ПриОткрытии()
// Программно незначительно меняем высоту формы для принудительного перерасчета привязок
ЭтаФорма.Высота = ЭтаФорма.Высота + 1;
ЭтаФорма.Высота = ЭтаФорма.Высота - 1;
КонецПроцедуры
Дополнительно рекомендуется очистить сохраненные настройки положения окон пользователя. Для этого можно воспользоваться вызовом метода ХранилищеСистемныхНастроек.Удалить() для системных ключей конфигурации или сбросить настройки пользователя через стандартный интерфейс программы.