К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как открыть форму не на весь экран в 1С

Способы открыть форму 1С не на весь экран: свойства формы, режим открытия окна, код ОткрытьФорму с параметрами. Разбор для управляемых и обычных форм.

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

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

Ниже разобраны оба сценария: настройка без программирования через свойства формы и программное открытие с управлением размером и положением окна.

Определите режим работы: обычное или управляемое приложение

Способ управления размером окна принципиально различается. В обычном приложении форма рисуется средствами Windows, и у неё есть свойства ширины, высоты, возможности изменения размера и положения на экране. В управляемом приложении форма описывается декларативно, а итоговое отображение формирует платформа — точные пиксельные размеры задать нельзя, можно лишь влиять на компоновку и режим окна.

Проверить режим просто: откройте свойства корня конфигурации в конфигураторе и посмотрите свойство «Основной режим запуска». Если выбран «Обычное приложение» — доступна точная настройка окна. Если «Управляемое приложение» или «Выбирать автоматически» — ориентируйтесь на раздел про управляемые формы.

Форма занимает весь экранРежим обычного приложения или открытие в основном окне

Свойства формы: ширина, высота, режим открытия окна

Форма открывается вкладкой внутри окна 1СУправляемое приложение, такси-интерфейс

РежимОткрытияОкна при вызове ОткрытьФорму

Нужно модальное окно поверхБлокирующее открытие

БлокироватьОкноВладельца или БлокироватьВесьИнтерфейс

Настройка размера окна в обычном приложении

В обычной форме размер задаётся прямо в конфигураторе. Откройте форму объекта, перейдите в палитру свойств самой формы (не элемента) и найдите свойства «Ширина» и «Высота». Значения задаются в символах и строках — это условные единицы, а не пиксели. Уменьшив их относительно значений по умолчанию, вы получите окно, которое не разворачивается на весь экран.

Дополнительно проверьте свойство «ИзменениеРазмера»: если оно установлено в «Изменять», пользователь сможет растянуть окно мышью. Значение «НеИзменять» фиксирует окно в заданных размерах. Полезно также свойство «ПоложениеОкна» — оно определяет, где появится окно при открытии: по центру экрана, по центру родительского окна и т.д.

Как задать размер формы в конфигураторе
  1. 1
    Откройте нужную форму объекта в конфигураторе
  2. 2
    Кликните по корню дерева элементов — откроются свойства формы
  3. 3
    Установите «Ширина» и «Высота» меньше стандартных
  4. 4
    Установите «ИзменениеРазмера» = НеИзменять, если окно не должно растягиваться
  5. 5
    Установите «ПоложениеОкна» = ЦентрЭкрана или ЦентрРодительскогоОкна
  6. 6
    Обновите конфигурацию базы данных и проверьте открытие в режиме предприятия

Если после изменения свойств окно всё равно открывается большим, проверьте, не сохранены ли пользовательские настройки окна. Платформа запоминает размер и положение окон для каждого пользователя в хранилище настроек — старые значения могут перекрывать новые свойства формы. Сбросить их можно через «Администрирование → Пользователи и настройки» либо программно очисткой хранилища системных настроек.

Режим открытия окна: независимый или блокирующий

Свойство формы «РежимОткрытияОкна» определяет, как окно взаимодействует с остальными окнами. Вариант «Независимый» — обычное отдельное окно, пользователь может переключаться между ним и основным окном. Вариант «Блокировать окно владельца» — окно открывается поверх формы-владельца и не даёт с ней работать, пока не закрыто. Вариант «Блокировать весь интерфейс» — модальное окно на всё приложение.

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

Сравнение режимов открытия

Независимый

Отдельное окно, можно переключаться. Подходит для второстепенных форм, которые держат открытыми параллельно

Блокировать окно владельца

Диалог поверх вызвавшей формы. Подходит для подборов и ввода параметров; нельзя вернуться к владельцу, пока окно открыто

Блокировать весь интерфейс

Модальное окно на всё приложение. Только для критичных подтверждений — мешает многозадачности

Программное открытие формы с управлением окном

Когда форма открывается из кода, режим окна можно задать прямо в вызове, не меняя свойства формы. В управляемом приложении используется метод ОткрытьФорму() с последним параметром — режимом открытия окна:

ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора",

ПараметрыФормы, ЭтаФорма, , , , ,

РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

В обычном приложении аналогичный параметр есть у метода Открыть() и ОткрытьМодально() формы. Учтите, что ОткрытьМодально() в управляемом приложении запрещён в типовом режиме — модальность там заменена на блокирующие окна и обработчики оповещений.

bsl
&НаКлиенте
Процедура ПодборНажатие(Команда)
	ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе", Истина);
	ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора", ПараметрыФормы, ЭтаФорма, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

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

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

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

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

Проверка результата и типичные проблемы

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

Контрольные точки

Как проверить результат

Размер окна при первом открытии
Норма

Окно открывается заданного размера по центру

Тревожный признак

Окно развёрнуто или унаследовало старый размер — сбросьте настройки окна пользователя

Переключение между окнами
Норма

При блокирующем режиме владелец недоступен, при независимом — доступен

Тревожный признак

Независимое окно теряется за основным — измените режим на блокирующий

Открытие из разных мест вызова
Норма

Поведение одинаковое везде

Тревожный признак

Из одного вызова окно другое — режим задан локально в коде вызова

Типичные ошибки
01
Меняют свойства формы, но забывают сбросить сохранённые пользовательские настройки окна — у пользователей вид старый
02
Используют ОткрытьМодально() в управляемом приложении — код не работает или падает с ошибкой о запрете модальности
03
Задают режим окна только в одном месте вызова — из других точек форма открывается иначе
04
Пытаются задать пиксельные размеры в управляемой форме — свойств нет, настройка игнорируется
05
Делают окно слишком маленьким — часть элементов обрезается, появляются полосы прокрутки

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

Итог

Что важно запомнить

В обычном приложении размер окна задаётся свойствами формы «Ширина», «Высота», «ИзменениеРазмера» и «ПоложениеОкна». В управляемом — точных размеров нет, используйте режим открытия окна (блокирующий или независимый) и компактную компоновку. После изменения свойств сбрасывайте сохранённые настройки окон пользователей и проверяйте все точки вызова формы.

Частые вопросы

Как открыть форму по центру экрана, а не в углу?

В обычной форме установите свойство «ПоложениеОкна» в значение «ЦентрЭкрана» или «ЦентрРодительскогоОкна». В управляемом приложении положение определяет платформа: блокирующие окна открываются по центру владельца автоматически, отдельное позиционирование недоступно.

Почему изменения размера формы не видны у пользователей?

Платформа сохраняет размер и положение окон в хранилище системных настроек для каждого пользователя, и эти значения имеют приоритет над свойствами формы. Очистите сохранённые настройки окна — через интерфейс администрирования настроек пользователей или программно.

Можно ли задать размер окна в пикселях в тонком клиенте?

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

Чем отличается «Блокировать окно владельца» от «Блокировать весь интерфейс»?

Первый режим запрещает работу только с формой, из которой открыто окно, — остальные окна приложения доступны. Второй блокирует всё приложение до закрытия окна. Для диалогов и подборов почти всегда достаточно блокировки владельца.

Форма открывается вкладкой внутри окна 1С — как сделать отдельным окном?

В интерфейсе «Такси» формы по умолчанию замещают содержимое основного окна. Задайте при вызове ОткрытьФорму режим РежимОткрытияОкнаФормы.БлокироватьОкноВладельца или Независимый — тогда форма откроется отдельным окном поверх.

Работает ли ОткрытьМодально() в управляемом приложении?

Нет, в типовом режиме модальные вызовы запрещены, и метод вызывает ошибку. Вместо него используйте ОткрытьФорму с блокирующим режимом окна и получайте результат через обработчик оповещения ОписаниеОповещения.