Как открыть форму на весь экран и запретить изменение её размера в 1С?

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

Разработка специализированных интерфейсов в среде 1С:Предприятие часто требует нестандартного поведения окон. Например, при создании рабочих мест кассиров (РМК), терминалов самообслуживания, складских мониторов или специализированных рабочих столов для производства возникает необходимость развернуть форму на весь физический экран. При этом крайне важно заблокировать возможность изменения ее размеров пользователем и скрыть стандартные панели управления системы, чтобы избежать случайного сворачивания или закрытия приложения.

В этой статье мы подробно разберем, как решить эту задачу как в режиме обычного приложения (обычные формы), так и в управляемом интерфейсе (управляемые формы "Такси"). Мы проанализируем неочевидные свойства окон, разберем причины появления графических дефектов (таких как черные полосы сверху экрана) и рассмотрим программные способы управления отображением.

Часть 1. Развертывание формы во весь экран в обычном приложении

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

Рассмотрим пошагово, какие свойства формы в Конфигураторе нужно изменить:

  1. РежимРабочегоСтола (Desktop Mode): Установите флаг в значение Истина. Это ключевое свойство, которое сообщает платформе, что данная форма должна вести себя как полноценный рабочий стол. Она будет стремиться занять все доступное пространство.
  2. СпособОтображенияОкна (Window Display Mode): Установите значение Максимизированное. Это принудительно развернет окно при его инициализации.
  3. СостояниеОкна (Window State): Здесь кроется важный нюанс. Если оставить состояние окна в значении Обычное, форма развернется только в пределах внутренней рабочей области главного окна 1С. Если же установить состояние окна в значение Свободное, форма станет независимой от родительского окна 1С и займет абсолютно все физическое пространство экрана, перекрывая в том числе системную панель задач Windows («Пуск»).
  4. Изменение размера (Resize): Для того чтобы пользователь не мог вручную потянуть за края формы и уменьшить её, установите это свойство в значение Не изменять.
  5. Изменять способ отображения окна: Установите в значение Ложь. Это уберет стандартные системные кнопки «Свернуть», «Развернуть» и «Закрыть» в заголовке формы (либо сделает их неактивными), лишая пользователя возможности случайно нарушить полноэкранный режим.

Устранение проблемы «черной области» или пустых полос сверху формы

Иногда при использовании полноэкранного режима разработчики сталкиваются с тем, что вверху экрана остается пустая или черная полоса (как описано в сообщении №9 обсуждения). Выясним причину этой проблемы и разберем способы ее устранения.

Причина №1. Некорректные привязки элементов интерфейса.
При принудительном максимизировании формы сама рамка окна растягивается на весь экран, но элементы управления внутри нее (кнопки, таблицы, панели) остаются привязанными к фиксированным координатам. В результате образуются пустые неперерисованные области.

Решение: Нам необходимо настроить автоматические привязки элементов. Откройте форму в Конфигураторе, нажмите сочетание клавиш Ctrl + R для перехода в режим проверки формы. Попробуйте вручную растянуть границы окна. Если вы увидите, что элементы не масштабируются пропорционально или «застревают», настройте привязки:

Причина №2. Аппаратный сбой отрисовки графики ОС Windows.
В редких случаях (особенно на встроенных видеокартах или терминальных серверах) операционная система некорректно обрабатывает команду максимизации свободного окна 1С при его создании.

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


Процедура ПриОткрытии()
    Попытка
        WSHShell = Новый COMОбъект("WScript.Shell");
        // Имитируем нажатие комбинации Alt + Пробел для вызова системного меню окна
        WSHShell.SendKeys("% "); 
        // Выбираем команду "Развернуть" с помощью клавиш управления курсором
        WSHShell.SendKeys("{UP}{UP}{ENTER}"); 
    Исключение
        // Обработка исключения, если COM-объект недоступен в данной среде
    КонецПопытки;
КонецПроцедуры

Часть 2. Реализация полноэкранного режима в Управляемых формах (Такси)

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

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

Разберем основные варианты значения свойства РежимОткрытияОкна:

Использование специальных режимов основного окна (для версий платформы 8.3.10 и выше)

Если перед нами стоит задача сделать полноценное специализированное рабочее место (киоск самообслуживания, ТСД, монитор склада), стандартного блокирования интерфейса будет недостаточно. Нам требуется скрыть системные панели 1С (панель разделов, панель функций, заголовок программы).

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

Проанализируем, как программно включить режим «Киоска» при запуске программы. Данный режим устанавливается в модуле управляемого приложения в предопределенной процедуре ПередНачаломРаботыСистемы:


Процедура ПередНачаломРаботыСистемы(Отказ)
    // Устанавливаем режим отображения основного окна в режим "Киоск"
    КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.Киоск);
КонецПроцедуры

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


&НаКлиенте
Процедура КнопкаВыходНажатие(Команда)
    // Завершаем работу системы без выдачи дополнительных вопросов
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Полезный лайфхак для пользователей управляемого приложения

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

Нажатие клавиш Ctrl + Shift + ~ (тильда, на русской раскладке буква «Ё») мгновенно скрывает все вспомогательные панели управляемого интерфейса, разворачивая активную форму на максимально возможную область. Повторное нажатие этой же комбинации возвращает панели интерфейса на свои места. Это крайне удобно при работе на мониторах с небольшим разрешением или ноутбуках.

← На главную