Как реализовать открытие управляемых форм во все окно или в полноэкранном режиме

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

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

Использование свойства Начальное состояние окна

Прежде чем прибегать к сложным программным методам или внешним компонентам, проанализируем стандартные возможности платформы. Самый простой и надежный способ заставить форму открыться на весь экран — это использование свойства НачальноеСостояниеОкна (в англоязычном варианте — InitialWindowState).

Это свойство можно установить двумя способами:

  1. В конфигураторе: Выберите нужную форму, перейдите в палитру свойств и в поле «Начальное состояние окна» выберите значение Максимизированное.
  2. Программно: Если форма создается или открывается динамически, мы можем управлять этим состоянием в коде.

Рассмотрим пример программной установки этого свойства перед открытием формы:


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

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

Различие методов ПолучитьРежимОсновногоОкна и УстановитьРежимОсновногоОкна

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

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


ТекущийРежим = ПолучитьРежимОсновногоОкна();
Если ТекущийРежим = РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто Тогда
    // Применяем специальную логику отображения элементов
    Элементы.ГруппаДетальнойИнформации.Видимость = Ложь;
КонецЕсли;

Настройка интерфейса «Такси» для имитации полноэкранного режима

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

Выясним, как это сделать программно. Мы можем программно скрывать панели, чтобы формы открывались максимально широко:


&НаКлиенте
Процедура СкрытьПанелиДляПолногоЭкрана()
    // Данный код обычно размещается в модуле управляемого приложения
    НовыеНастройки = Новый НастройкиКлиентскогоПриложения;
    НовыеНастройки.ОтображатьПанельРазделов = Ложь;
    НовыеНастройки.ОтображатьПанельТекущегоРаздела = Ложь;
    УстановитьНастройкиКлиентскогоПриложения(НовыеНастройки);
КонецПроцедуры

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

Особенности работы в Веб-клиенте и параметры браузера

Работа в браузере накладывает свои ограничения. Как было отмечено в обсуждении, методы типа WScript.Shell и SendKeys в веб-клиенте не работают, так как браузер блокирует прямой доступ к API операционной системы из соображений безопасности.

Для достижения полноэкранного эффекта в веб-клиенте рассмотрим следующие стратегии:

  1. Режим киоска (Kiosk Mode): Если 1С запускается на выделенном терминале, можно настроить ярлык браузера (например, Chrome) с флагом --kiosk. В этом случае браузер откроется без адресной строки и вкладок, на весь экран.
  2. Режим PWA: Современные браузеры позволяют «установить» веб-страницу как приложение. В этом случае окно 1С будет выглядеть как отдельное системное окно без интерфейса браузера.
  3. Full Screen API: Хотя напрямую из встроенного языка 1С вызвать полноэкранный режим браузера нельзя, это можно реализовать через элемент Поле HTML документа. Однако помните, что большинство браузеров позволяют переход в полноэкранный режим только по инициативе пользователя (например, при нажатии на кнопку внутри этого поля).

Программное управление размерами через ОкнаКлиентскогоПриложения

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


&НаКлиенте
Процедура ИзменитьРазмерОкна()
    Окна = ПолучитьОкнаКлиентскогоПриложения();
    Для Каждого Окно Из Окна Цикл
        Если Окно.Основное Тогда
            Продолжить; // Основное окно менять нельзя напрямую таким способом
        КонецЕсли;
        
        // Пытаемся задать размеры
        Окно.Ширина = 1920;
        Окно.Высота = 1080;
    КонецЦикла;
КонецПроцедуры

Важно: Учтите, что прямое управление координатами (Лево, Верх) и размерами работает не во всех режимах отображения интерфейса. В режиме «В закладках» эти свойства могут игнорироваться платформой.

Правильное растягивание элементов внутри формы

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

Альтернатива: Форма рабочего стола

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

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

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

← На главную