Почему в 1С самопроизвольно переключаются окна или открываются на заднем плане при работе через RemoteApp?

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

Работа с 1С:Предприятие через RemoteApp — это удобный способ предоставить пользователям доступ к базе без необходимости транслировать весь рабочий стол сервера. Однако многие сталкиваются с неприятными спецэффектами: окна выбора файлов открываются «под» основным приложением, фокус внезапно улетает на Excel или браузер, а меню «Файл — Открыть» начинает мерцать. Разберем детально, почему это происходит и как настроить систему для стабильной работы.

Проблема чаще всего кроется в механизмах взаимодействия локального оконного менеджера (на компьютере пользователя) и удаленного сеанса на сервере. Когда приложение работает в режиме RemoteApp, оно пытается интегрироваться в локальную оболочку explorer.exe, что при определенных настройках вызывает конфликты приоритетов окон (Z-order).

Корректировка времени ожидания блокировки фокуса (ForegroundLockTimeout)

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

Для решения этой задачи нам потребуется внести изменения в реестр на локальных рабочих станциях пользователей. Рассмотрим последовательность действий:

  1. Нажмите Win + R, введите regedit и нажмите Enter.
  2. Перейдите по пути: HKEY_CURRENT_USER\Control Panel\Desktop.
  3. Найдите параметр ForegroundLockTimeout.
  4. По умолчанию его значение может составлять 200000 (в десятичной системе). Нам необходимо установить его в 0. Это позволит окнам 1С мгновенно получать фокус при открытии.

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

Тонкая настройка параметров RDP-подключения

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

Откройте ваш .rdp файл любым текстовым редактором (например, Блокнотом) и проверьте или добавьте следующие строки:


bpp:i:16
redirectx:i:0
disable menu anims:i:1
disable themes:i:0
font smoothing:i:0

Выясним, на что влияют эти параметры:

Отключение аппаратного ускорения и визуальных эффектов

Рассмотрим ситуацию с мерцанием и «заваливанием» окон с точки зрения графической подсистемы сервера. Современные версии Windows Server пытаются использовать аппаратное ускорение для RemoteApp, что не всегда корректно обрабатывается платформой 1С.

Попробуем отключить аппаратное ускорение графики через групповые политики на сервере:

  1. Запустите gpedit.msc.
  2. Перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Среда удаленных сеансов.
  3. Найдите параметр «Использовать аппаратный графический адаптер для всех сеансов служб удаленных рабочих столов» и установите значение «Отключено».
  4. Также рекомендуется отключить «Использовать расширеный графический режим RemoteFX».

Кроме того, на самом сервере в свойствах системы (sysdm.cpl) на вкладке «Дополнительно» -> «Быстродействие» выберем пункт «Обеспечить наилучшее быстродействие». Это уберет анимацию при сворачивании и разворачивании окон, которая часто является причиной того, что модальное окно 1С «зависает» в невидимой области.

Проблема масштабирования (DPI) и мониторов

Часто окна «теряются», если у пользователя подключено несколько мониторов или установлено масштабирование экрана (например, 125% или 150%). RemoteApp может некорректно вычислять координаты для новых окон (таких как выбор файла или печатная форма).

Разберем, как это исправить:

Щелкните правой кнопкой мыши по ярлыку 1С (или по файлу mstsc.exe в папке System32), перейдите в «Свойства» -> «Совместимость» -> «Изменить параметры высокого DPI». Установите галочку «Переопределите режим масштабирования...» и выберите в выпадающем списке значение «Приложение». Это заставит систему передавать управление масштабами самой платформе 1С, что минимизирует риск «улета» окон за границы видимости.

Настройка платформы 1С и режим модальности

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

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

В коде вместо метода Вопрос() или Предупреждение() следует использовать неблокирующие аналоги:


&НаКлиенте
Процедура ВыполнитьДействие(Команда)
    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект);
    ПоказатьВопрос(Оповещение, "Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, ДополнительныеПараметры) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
        // Продолжаем логику
    КонецЕсли;
КонецПроцедуры

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

Влияние сетевого транспорта и VPN

Посмотрим на ситуацию со стороны канала связи. Если подключение идет через OpenVPN, пакеты RDP могут фрагментироваться. Это вызывает микро-задержки в отрисовке интерфейса, из-за которых клиент RDP может «рассинхронизироваться» с сервером по состоянию фокуса.

Попробуйте выполнить следующие настройки в конфигурационном файле OpenVPN (.ovpn):

  1. Добавьте или измените параметр mssfix 1300.
  2. Установите tun-mtu 1400.

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

Заключение

Устранение проблем с окнами в RemoteApp — это комплексный процесс. Рекомендуется начинать с правки реестра (ForegroundLockTimeout) и настройки параметров RDP-файла, так как это решает 90% случаев. Если проблема сохраняется, следует обратить внимание на настройки масштабирования и оптимизацию кода самой конфигурации 1С в части использования модальных диалогов.

← На главную