Почему управляемая форма перестала растягиваться на весь экран и как это исправить?

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

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

Причины изменения поведения компоновки формы

Начиная с версии платформы 8.3.10, разработчики 1С существенно переработали алгоритм автоматического размещения и выравнивания элементов интерфейса. Выделим ключевые причины сжатия форм:

  1. Изменение логики свойства АвтоМаксимальнаяШирина: по умолчанию у полей ввода и надписей включено свойство АвтоматическоеСохранениеДанных или автоматический расчет максимальной ширины. В новых версиях платформы включенное автоопределение максимальной ширины жестко ограничивает растяжение элемента шириной его типового контента, даже если для свойства РастягиватьПоГоризонтали установлено значение Да.
  2. Отсутствие растягиваемых таблиц: если на форме присутствуют только обычные поля ввода и кнопки (нет табличных частей, динамических списков или планировщиков), платформа предпочитает компактную компоновку и сжимает ширину формы по содержимому.
  3. Блокировка растяжения родительскими группами: если поле ввода вложено в группу с горизонтальной группировкой, отсутствие флага растяжения у самой группы или фиксированная ширина соседних элементов блокируют пересчет геометрии.
  4. Кэшированные пользовательские настройки: платформа сохраняет персональные настройки формы, которые могут препятствовать автоматическому расчету размеров при смене версии платформы.

Способ 1. Отключение автоматического определения максимальной ширины

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

  1. Откроем форму проблемного объекта в дереве конфигурации.
  2. Выделим элементы управления (поля ввода, надписи, текстовые блоки), которые должны растягиваться.
  3. В окне Свойства найдем параметр АвтоМаксимальнаяШирина (Автоматическое определение максимальной ширины) и снимем данный флаг (установим значение Ложь).
  4. Убедимся, что поле МаксимальнаяШирина очищено или равно 0.
  5. Проверим, что для свойства РастягиватьПоГоризонтали установлено значение Да.

Способ 2. Проверка иерархии групп и контейнеров

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

  1. Проверим корневой элемент Форма: свойства РастягиватьПоГоризонтали и РастягиватьПоВертикали должны иметь значение Да.
  2. Для каждой промежуточной группы в иерархии установим РастягиватьПоГоризонтали = Да, а свойства Ширина и МаксимальнаяШирина оставим равными 0.
  3. Если используется горизонтальная группировка элементов, установим для свойства группы ШиринаПодчиненныхЭлементов значение Одинаковая или ПоШирочайшему для равномерного распределения свободного пространства.

Способ 3. Добавление декорации-распорки (эластичного элемента)

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

  1. Добавим в нижнюю часть формы элемент Декорация — Надпись или пустую Группу — Без выделения.
  2. Очистим заголовок элемента (оставим пустую строку).
  3. Зададим следующие параметры элемента:
    1. РастягиватьПоГоризонтали = Да;
    2. АвтоМаксимальнаяШирина = Ложь;
    3. МаксимальнаяШирина = 0;
    4. АвтоМаксимальнаяВысота = Да;
    5. Высота = 1 (для минимального влияния на вертикальный размер).

Такой невидимый элемент заставит платформу растянуть родительский контейнер формы на всю ширину рабочей области.

Способ 4. Программная инициализация состояния окна

Посмотрим на программный способ управления геометрией формы при открытии. В модуле формы обработаем события создания и открытия:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Управляем свойствами растяжения формы
    ЭтаФорма.РастягиватьПоГоризонтали = Истина;
    ЭтаФорма.РастягиватьПоВертикали   = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Разворачиваем окно на весь доступный экран
    ЭтаФорма.СостояниеОкна = ВариантСостоянияОкна.Максимизированное;
КонецПроцедуры

Способ 5. Сброс настроек пользователя

Если в конфигураторе все настройки выставлены верно, но у конкретного пользователя форма по-прежнему открывается сжатой, выполним сброс пользовательских настроек:

  1. В режиме «1С:Предприятие» откроем форму.
  2. Нажмем кнопку Еще в правом верхнем углу и выберем пункт Изменить форму....
  3. В открывшемся окне настройки формы нажмем Еще → Установить стандартные настройки.
  4. Нажмем ОК и перезапустим форму.
← На главную