При обновлении платформы 1С:Предприятие разработчики нередко сталкиваются с ситуацией, когда привычные управляемые формы обработок, документов или справочников перестают растягиваться на всю ширину рабочей области. При этом в отдельном всплывающем окне форма может вести себя корректно, а внутри основного интерфейса сжимается до компактных размеров. Проанализируем, почему возникает такое поведение платформы и как восстановить корректное отображение формы.
Начиная с версии платформы 8.3.10, разработчики 1С существенно переработали алгоритм автоматического размещения и выравнивания элементов интерфейса. Выделим ключевые причины сжатия форм:
АвтоМаксимальнаяШирина: по умолчанию у полей ввода и надписей включено свойство АвтоматическоеСохранениеДанных или автоматический расчет максимальной ширины. В новых версиях платформы включенное автоопределение максимальной ширины жестко ограничивает растяжение элемента шириной его типового контента, даже если для свойства РастягиватьПоГоризонтали установлено значение Да.Разберем основной способ устранения проблемы в конфигураторе. Для элементов, которые должны занимать всю ширину формы, необходимо переопределить свойства максимального размера:
Ложь).0.Рассмотрим структуру вложенности элементов. В управляемом интерфейсе растяжение подчиненного элемента невозможно без эластичности всех вышестоящих родителей. Пройдем по цепочке от целевого поля до корня формы:
РастягиватьПоГоризонтали и РастягиватьПоВертикали должны иметь значение Да.РастягиватьПоГоризонтали = Да, а свойства Ширина и МаксимальнаяШирина оставим равными 0.Если на форме нет динамических списков и таблиц, компактный движок компоновки может продолжать сжимать форму. Чтобы принудительно заставить форму занять все доступное пространство экрана, используем специальный элемент-распорку:
0;1 (для минимального влияния на вертикальный размер).Такой невидимый элемент заставит платформу растянуть родительский контейнер формы на всю ширину рабочей области.
Посмотрим на программный способ управления геометрией формы при открытии. В модуле формы обработаем события создания и открытия:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Управляем свойствами растяжения формы
ЭтаФорма.РастягиватьПоГоризонтали = Истина;
ЭтаФорма.РастягиватьПоВертикали = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Разворачиваем окно на весь доступный экран
ЭтаФорма.СостояниеОкна = ВариантСостоянияОкна.Максимизированное;
КонецПроцедуры
Если в конфигураторе все настройки выставлены верно, но у конкретного пользователя форма по-прежнему открывается сжатой, выполним сброс пользовательских настроек: