В современных конфигурациях 1С, работающих на интерфейсе «Такси», разработчики часто сталкиваются с проблемой «резиновости» форм. Платформа стремится максимально эффективно использовать рабочее пространство, из-за чего управляемые формы динамически меняют свой размер при изменении окна программы или переключении между закладками. Однако в ряде случаев — например, при создании небольших диалоговых окон, калькуляторов или вспомогательных инструментов — требуется жестко зафиксировать габариты окна. Разберем подробно, как это реализовать, учитывая специфику управляемого приложения.
Прежде чем приступать к техническим настройкам, проанализируем важный нюанс: поведение формы напрямую зависит от того, как она открывается. В интерфейсе «Такси» основные формы открываются в виде закладок в рабочей области. По правилам платформы, такие формы всегда занимают все доступное пространство. Зафиксировать размер формы, открытой в закладке, технически невозможно — она всегда будет подстраиваться под размер основного окна 1С.
Фиксация размеров доступна только для окон, которые открываются отдельно (всплывающие окна). Это могут быть модальные окна, блокирующие окна или независимые вспомогательные формы. Рассмотрим пошагово, какие свойства необходимо изменить в конфигураторе для достижения результата.
Самый простой и логичный способ — использование прямого запрета на изменение размера. Для этого выполним следующие действия:
ИзменениеРазмераОкна (WindowSizeChange) в значение Не изменять.Это отключит возможность растягивания окна пользователем за границы (курсор не будет превращаться в двунаправленную стрелку). Однако помним: если форма открывается в закладке, это свойство будет проигнорировано платформой.
Чтобы метод с фиксацией размера сработал, форма должна появиться поверх основного интерфейса. Для этого проанализируем свойство РежимОткрытияОкна (WindowOpeningMode). Рассмотрим доступные варианты:
Для создания фиксированного диалогового окна рекомендуется использовать режим Блокировать окно владельца.
Если свойство ИзменениеРазмераОкна по каким-то причинам не подходит, мы можем зажать форму в тиски ограничений. Посмотрим на свойства МаксимальнаяШирина, МинимальнаяШирина, МаксимальнаяВысота и МинимальнаяВысота.
Разберем алгоритм настройки:
АвтоМаксимальнаяШирина и АвтоМаксимальнаяВысота.АвтоМинимальнаяШирина и АвтоМинимальнаяВысота.МинимальнаяШирина = 400, МаксимальнаяШирина = 400.МинимальнаяВысота = 300, МаксимальнаяВысота = 300.СпособВыполненияРазмеров выберем Фиксированный.При таком подходе платформа не сможет изменить размер формы, так как ее минимальные и максимальные границы совпадают. Это самый надежный способ «забетонировать» геометрию окна.
В 1С реализован механизм запоминания настроек пользователя. Если пользователь один раз растянул форму (до того, как вы установили запрет), платформа может попытаться восстановить это состояние при следующем открытии. Чтобы исключить влияние старых настроек, проанализируем свойство СохранятьПоложениеОкна (SaveWindowSettings).
Если снять этот флажок, форма будет каждый раз открываться ровно с теми размерами, которые вы задали в конфигураторе, игнорируя любые действия пользователя в прошлом.
Иногда форма кажется «резиновой» не из-за своих границ, а из-за поведения элементов внутри. Если внутри формы есть группы или поля с установленным свойством РастягиватьПоГоризонтали = Да, платформа будет пытаться расширить форму при увеличении системного шрифта или изменении разрешения экрана. Для интерактивной проверки и корректировки свойств элементов прямо в пользовательском сеансе можно использовать обработку для редактирования свойств форм в режиме предприятия.
Для фиксации вида формы выполним следующие действия для всех ключевых элементов:
РастягиватьПоГоризонтали в значение Нет.РастягиватьПоВертикали в значение Нет.Группировка — Вертикальная или Горизонтальная (вместо «Авто»), чтобы четко контролировать размещение.Хотя большинство настроек задается в конфигураторе, иногда требуется вмешательство в коде. Важно помнить, что свойство ИзменениеРазмераОкна нельзя изменить в коде «на лету» — оно доступно только для чтения. Однако мы можем программно управлять параметрами открытия.
Если вы вызываете форму из кода, используйте структуру ПараметрыВыбора или настройки открытия окна. Посмотрим на пример вызова формы с блокировкой:
ПараметрыФормы = Новый Структура;
// Настройка режима открытия через параметры не всегда возможна напрямую,
// поэтому лучше задать РежимОткрытияОкна в самой форме в конфигураторе.
ОткрытьФорму("ОбщаяФорма.МояДиалоговаяФорма", ПараметрыФормы, ЭтаФорма, Истина, , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Для полной фиксации размеров управляемой формы в 1С (УНФ, Бухгалтерия или любая другая конфигурация на платформе 8.3) рекомендуется комбинированный подход:
РежимОткрытияОкна в значение Блокировать окно владельца.ИзменениеРазмераОкна в значение Не изменять.СохранятьПоложениеОкна.Следуя этим шагам, мы получим предсказуемый интерфейс, который не будет «разъезжаться» при работе пользователя, сохраняя задуманный дизайн и эргономику.