Как открыть окно поверх других без блокировки интерфейса в 1С?

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

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

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

Ограничения платформы и свойства режима открытия окна

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

  1. Свойство РежимОткрытияОкна со значениями БлокироватьОкноВладельца или БлокироватьВесьИнтерфейс выводит окно поверх остальных, но полностью запрещает работу с заблокированными формами до момента закрытия всплывающего окна.
  2. Значение Независимый не блокирует интерфейс, но при клике пользователя в любое другое окно открытая форма сразу же уходит на задний план.
  3. Штатными средствами управляемой формы невозможно программно задать абсолютные экранные координаты для позиционирования окна в конкретный угол монитора.

Вариант 1. Использование метода ПоказатьОповещениеПользователя (штатный механизм)

Если цель заключается в выводе кратких сведений о событии (например, фото сотрудника, ФИО и статус прохода через турникет), наиболее правильным решением является использование процедуры ПоказатьОповещениеПользователя.

Данный метод обладает всеми необходимыми характеристиками:

  1. Окно всплывает в правом нижнем углу экрана поверх интерфейса программы.
  2. Интерфейс не блокируется — пользователь может продолжать непрерывную работу с документами и справочниками.
  3. Оповещение закрывается автоматически через фиксированный интервал времени.
  4. Поддерживается вывод кликабельной навигационной ссылки или обработка нажатия через ОписаниеОповещения.

Посмотрим на пример вызова всплывающего оповещения:


&НаКлиенте
Процедура ЗафиксироватьПроход(ФИОСотрудника, ТекстСобытия, КартинкаСотрудника, СсылкаНаСобытие)
    
    // Формируем неблокирующее оповещение в углу экрана
    ПоказатьОповещениеПользователя(
        "Проход через турникет: " + ФИОСотрудника,
        ПолучитьНавигационнуюСсылку(СсылкаНаСобытие),
        ТекстСобытия,
        КартинкаСотрудника
    );
    
КонецПроцедуры

Вариант 2. Автоматическое закрытие формы через обработчик ожидания

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

Разберем по шагам создание автозакрывающейся формы:

  1. В модуле формы в процедуре ПриОткрытии подключаем однократный обработчик ожидания с заданным интервалом в секундах.
  2. В вызванной клиентской процедуре выполняем закрытие текущей формы методом ЭтаФорма.Закрыть().

Рассмотрим пример кода в модуле всплывающей формы:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    // Подключаем однократный таймер на 5 секунд
    // Третий параметр Истина указывает на однократное выполнение
    ПодключитьОбработчикОжидания("АвтоматическоеЗакрытиеФормы", 5, Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура АвтоматическоеЗакрытиеФормы()
    
    Если ЭтаФорма.Открыта() Тогда
        ЭтаФорма.Закрыть();
    КонецЕсли;
    
КонецПроцедуры

Вариант 3. Альтернативные методы интеграции

Если стандартного функционала платформы недостаточно, рассмотрим следующие альтернативы:

  1. Внешняя компонента / WinAPI: для тонкого клиента под Windows можно использовать внешнюю компоненту, вызывающую функцию SetWindowPos с флагом HWND_TOPMOST. Это позволяет удерживать окно поверх всех окон операционной системы без захвата фокуса ввода.
  2. Поле HTML-документа: внедрение всплывающих информационных плашек (Toast/Popup) на базе JavaScript и CSS внутри рабочего стола или формы мониторинга.
  3. Системные уведомления Windows: отправка push-уведомлений через системные механизмы ОС, которые отображаются даже при свернутом окне 1С.
← На главную