Как открыть управляемую форму на весь экран в 1С:Предприятии 8.3 и управлять ее поведением?

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

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

Решение 1: Использование расширенных режимов основного окна

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

Различают несколько основных режимов:

  1. РабочееМесто: Этот режим скрывает все панели и область системных команд (главное меню, вспомогательные команды), надпись "Начальная страница", кнопки навигации "Вперед/Назад", а также отключает связанные с ними сочетания клавиш.
  2. ПолноэкранноеРабочееМесто: Делает все то же, что и "РабочееМесто", но дополнительно разворачивает основное окно на весь экран и скрывает кнопки управления окном (Свернуть, Восстановить, Закрыть).
  3. Киоск: Помимо всех изменений режима "РабочееМесто", скрывает гиперссылку с именем пользователя и кнопку "О программе". Этот режим идеально подходит для "внешних" пользователей, где персональная информация не нужна (например, платежные терминалы или банкоматы).

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

Чтобы установить режим основного окна программно, мы можем использовать следующий код в модуле обычного приложения или в модуле управляемого приложения:


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

Управление кнопкой закрытия формы

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

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

Чтобы полностью контролировать закрытие формы, мы можем добавить следующий код в обработчик события ПередЗакрытием формы:


&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    Отказ = Истина; // Запрещаем стандартное закрытие формы
КонецПроцедуры

И затем предоставить пользователю кнопку для программного завершения работы системы:


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

Решение 2: Использование свойства формы "Режим открытия окна" и метода "ОткрытьФорму"

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

  1. В свойствах формы: Откройте форму в конфигураторе и в палитре свойств найдите свойство РежимОткрытияОкна. Установите для него значение "Независимый".
  2. При программном открытии формы: Если мы открываем форму программно с помощью метода ОткрытьФорму, мы можем переопределить это свойство, передав соответствующий параметр. Восьмой параметр метода ОткрытьФорму отвечает за режим открытия окна формы.

Пример программного открытия формы в независимом режиме:


// Предположим, что мы открываем форму обработки "МойРабочийСтол"
// Создаем структуру для параметров (если нужны)
ПараметрыОткрытия = Новый Структура();
// ... заполняем ПараметрыОткрытия если необходимо ...

// Открываем форму, указывая РежимОткрытияОкнаФормы.Независимый
ОткрытьФорму("Обработка.МойРабочийСтол.Форма.ФормаРабочегоСтола", ПараметрыОткрытия, , , , , , РежимОткрытияОкнаФормы.Независимый);

Особый случай: Начальная страница

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

Начиная с версии 8.3.5.1068, появилась возможность программной настройки состава и расположения форм на начальной странице с использованием объекта НастройкиНачальнойСтраницы. Это позволяет динамически изменять вид начальной страницы для разных пользователей или в зависимости от состояния программы.

Важное ограничение: Модальные окна

Мы должны учитывать, что окно, открытое в режиме "Независимый", разворачивается на весь экран только в том случае, если нет других открытых модальных окон. Если перед открытием независимой формы уже открыто модальное окно, то независимая форма может остаться маленькой по центру экрана. Это критически важно для понимания поведения форм. Если вам необходимо динамически управлять составом полей в таких окнах, рекомендуем изучить добавление реквизитов и элементов формы на управляемые формы программным методом.

Платформа 1С активно движется в сторону отказа от модальных окон, особенно в контексте веб-клиента, где браузеры могут блокировать всплывающие окна. Вместо модальных окон рекомендуется использовать "блокирующие окна", которые визуально работают аналогично, но не блокируют выполнение программного кода.

Решение 3: Комбинированный подход (Киоск + Начальная страница + Независимые формы)

Один из наиболее надежных и комплексных подходов для создания полноэкранного рабочего стола пользователя, особенно для тонкого и мобильного клиента, выглядит следующим образом:

  1. Установите режим киоска при старте системы: В обработчике события ПередНачаломРаботыСистемы установите для клиентского приложения режим Киоск. Это обеспечит максимальное скрытие стандартных элементов интерфейса 1С.
  2. 
    // В модуле обычного приложения или модуле управляемого приложения
    // Обработчик события ПередНачаломРаботыСистемы
    Процедура ПередНачаломРаботыСистемы(Отказ)
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.Киоск);
    КонецПроцедуры
    
  3. Разместите основную форму на начальной странице: Создайте нужную форму обработки (например, "Рабочий стол пользователя") и добавьте ее в состав начальной страницы конфигурации. Убедитесь, что у самой этой формы свойство РежимОткрытияОкна установлено в "Независимый".
  4. Открывайте последующие окна как независимые и немодальные: Все другие формы, которые будут открываться из этой основной формы, также следует открывать методом ОткрытьФорму, указывая РежимОткрытияОкнаФормы.Независимый и избегая модального режима.

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

Решение 4: Использование COM-объекта WScript.Shell для имитации нажатий клавиш

В некоторых случаях, когда стандартные средства платформы не дают желаемого результата или требуется более низкоуровневое управление окном (например, когда нужен запуск 1С на полный экран без заголовка окна), мы можем прибегнуть к использованию COM-объекта WScript.Shell. Этот объект позволяет имитировать нажатия клавиш и таким образом взаимодействовать с операционной системой и окнами приложений.

Этот метод является специфическим для операционной системы Windows и не будет работать, например, в веб-клиенте или мобильном клиенте.

Для максимизации окна в обработчике формы ПриОткрытии мы можем использовать следующий код:


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

Дополнительные советы и важные моменты

  1. Тестирование на различных клиентах: Мы должны тщательно тестировать поведение форм на разных типах клиентов (тонкий клиент, веб-клиент, мобильный клиент), так как некоторые методы могут работать по-разному или не работать вовсе.
  2. Встроенные горячие клавиши: Помимо программного воздействия, в 1С существует встроенное сочетание клавиш Ctrl+Shift+~ (тильда), которое скрывает все лишние панели.
  3. Управление размером элементов формы: Если наша цель не просто развернуть окно, а сделать так, чтобы элементы формы занимали все доступное пространство, мы должны правильно настроить свойства элементов формы. Также стоит учитывать текущие настройки отображения: смена интерфейса пользователя на компактный или обычный может существенно повлиять на плотность размещения элементов.
  4. Особенности в веб-клиенте: В веб-клиенте переход в полноэкранный режим обычно требует подтверждения пользователя браузером.

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

← На главную