Как зафиксировать размеры управляемой формы в 1С

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

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

Особенности поведения управляемых форм в интерфейсе «Такси»

Прежде чем приступать к техническим настройкам, проанализируем важный нюанс: поведение формы напрямую зависит от того, как она открывается. В интерфейсе «Такси» основные формы открываются в виде закладок в рабочей области. По правилам платформы, такие формы всегда занимают все доступное пространство. Зафиксировать размер формы, открытой в закладке, технически невозможно — она всегда будет подстраиваться под размер основного окна 1С.

Фиксация размеров доступна только для окон, которые открываются отдельно (всплывающие окна). Это могут быть модальные окна, блокирующие окна или независимые вспомогательные формы. Рассмотрим пошагово, какие свойства необходимо изменить в конфигураторе для достижения результата.

Метод 1. Свойство ИзменениеРазмераОкна

Самый простой и логичный способ — использование прямого запрета на изменение размера. Для этого выполним следующие действия:

  1. Откроем нужную управляемую форму в конфигураторе.
  2. Перейдем в палитру свойств (правая кнопка мыши на корне формы — «Свойства»).
  3. Найдем категорию свойств «Окно».
  4. Установим свойство ИзменениеРазмераОкна (WindowSizeChange) в значение Не изменять.

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

Метод 2. Управление режимом открытия окна

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

  1. Независимый: Форма может открыться как в закладке, так и в отдельном окне (зависит от настроек системы и способа вызова).
  2. Блокировать окно владельца: Форма откроется как модальное окно относительно вызвавшей её формы. Это гарантирует появление отдельного окна, размеры которого можно зафиксировать.
  3. Блокировать весь интерфейс: Аналог классического модального режима. Форма перекроет всю работу пользователя, пока не будет закрыта. Габариты такого окна будут жестко следовать настройкам.

Для создания фиксированного диалогового окна рекомендуется использовать режим Блокировать окно владельца.

Метод 3. Жесткая фиксация через габариты (Min/Max размеры)

Если свойство ИзменениеРазмераОкна по каким-то причинам не подходит, мы можем зажать форму в тиски ограничений. Посмотрим на свойства МаксимальнаяШирина, МинимальнаяШирина, МаксимальнаяВысота и МинимальнаяВысота.

Разберем алгоритм настройки:

  1. Снимем флажки АвтоМаксимальнаяШирина и АвтоМаксимальнаяВысота.
  2. Снимем флажки АвтоМинимальнаяШирина и АвтоМинимальнаяВысота.
  3. Установим конкретные значения (в пикселях). Например, если мы хотим форму размером 400х300, установим это число во все четыре поля:
    • МинимальнаяШирина = 400, МаксимальнаяШирина = 400.
    • МинимальнаяВысота = 300, МаксимальнаяВысота = 300.
  4. В свойстве СпособВыполненияРазмеров выберем Фиксированный.

При таком подходе платформа не сможет изменить размер формы, так как ее минимальные и максимальные границы совпадают. Это самый надежный способ «забетонировать» геометрию окна.

Метод 4. Отключение сохранения положения окна

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

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

Метод 5. Управление внутренним содержимым (растягивание элементов)

Иногда форма кажется «резиновой» не из-за своих границ, а из-за поведения элементов внутри. Если внутри формы есть группы или поля с установленным свойством РастягиватьПоГоризонтали = Да, платформа будет пытаться расширить форму при увеличении системного шрифта или изменении разрешения экрана. Для интерактивной проверки и корректировки свойств элементов прямо в пользовательском сеансе можно использовать обработку для редактирования свойств форм в режиме предприятия.

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

  1. Установим РастягиватьПоГоризонтали в значение Нет.
  2. Установим РастягиватьПоВертикали в значение Нет.
  3. Для групп установим Группировка — Вертикальная или Горизонтальная (вместо «Авто»), чтобы четко контролировать размещение.

Программный контроль размеров

Хотя большинство настроек задается в конфигураторе, иногда требуется вмешательство в коде. Важно помнить, что свойство ИзменениеРазмераОкна нельзя изменить в коде «на лету» — оно доступно только для чтения. Однако мы можем программно управлять параметрами открытия.

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


ПараметрыФормы = Новый Структура;
// Настройка режима открытия через параметры не всегда возможна напрямую, 
// поэтому лучше задать РежимОткрытияОкна в самой форме в конфигураторе.
ОткрытьФорму("ОбщаяФорма.МояДиалоговаяФорма", ПараметрыФормы, ЭтаФорма, Истина, , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Резюме

Для полной фиксации размеров управляемой формы в 1С (УНФ, Бухгалтерия или любая другая конфигурация на платформе 8.3) рекомендуется комбинированный подход:

Следуя этим шагам, мы получим предсказуемый интерфейс, который не будет «разъезжаться» при работе пользователя, сохраняя задуманный дизайн и эргономику.

← На главную