При организации удаленной работы пользователей с базами данных «1С:Предприятие 8.3» системные администраторы часто выбирают технологию RemoteApp. Она позволяет запускать программу в бесшовном режиме, создавая у пользователя ощущение, что 1С работает локально на его компьютере. Однако при таком подходе иногда возникают специфические интерфейсные сбои. Один из самых неприятных дефектов — невозможность сдвинуть мышью разделители (сплиттеры) между табличными частями или панелями на формах документов и справочников. Пользователь пытается потянуть за разделитель, но интерфейс никак не реагирует, либо сдвигается на долю миллиметра и сбрасывает захват.
В этой статье мы подробно проанализируем, почему возникает данная проблема, рассмотрим техническую природу конфликта фокуса окон в RemoteApp и разберем по шагам все доступные способы решения — от простых пользовательских обходов до глубоких системных настроек реестра и групповых политик.
Давайте разберем физику процесса, которая приводит к зависанию разделителей. В отличие от полноценного сеанса удаленного рабочего стола (RDP), где весь рабочий стол транслируется клиенту в виде единого графического потока, в режиме RemoteApp каждое окно приложения обрабатывается индивидуально. Локальный менеджер окон пользователя взаимодействует с удаленными окнами через специальный прокси-процесс.
Когда пользователь наводит курсор мыши на разделитель формы в 1С и зажимает левую кнопку мыши, платформа 1С пытается захватить фокус ввода (выполняет операцию mouse capture). В этот момент графическая подсистема терминального сервера (особенно при активных оптимизациях RemoteFX) пытается синхронизировать координаты мыши и перерисовать рамку перетаскивания. В результате этой микрозадержки локальный клиент RDP (процесс mstsc.exe) ошибочно считает, что клик и удерживание произошли за пределами активной зоны окна RemoteApp. Происходит мгновенная потеря фокуса, захват мыши сбрасывается, и разделитель возвращается в исходное положение.
Интересно, что эта проблема часто избирательна:
Рассмотрим подробные инструкции по исправлению этой ошибки на разных уровнях ИТ-инфраструктуры.
Первым делом проанализируем версию используемой платформы 1С. Ошибка с потерей фокуса элементов RemoteApp была официально признана разработчиками 1С и зарегистрирована в реестре ошибок под номером #20171485.
Если на вашем сервере установлены релизы линеек 8.3.10 (например, популярные в свое время 8.3.10.2299 или 8.3.10.2561) или ранние версии 8.3.11, вы гарантированно столкнетесь с этой проблемой.
Решение: обновите платформу «1С:Предприятие 8.3» на сервере приложений до версии 8.3.12.1412 или выше. В этих релизах разработчики оптимизировали алгоритм удержания фокуса ввода при работе в бесшовных окнах терминального сервера.
Если серверная платформа обновлена, но у некоторых пользователей в филиалах проблема сохраняется, обратим внимание на клиентские компьютеры. Очень часто пользователи работают на устаревших операционных системах (например, Windows 7 без установленных пакетов обновлений) со старой версией протокола RDP.
Выполним следующие действия для исправления ситуации на стороне клиента:
mstsc.exe в системной папке C:\Windows\System32\ на проблемном компьютере.Если быстро обновить платформу 1С или операционные системы на сотнях клиентских ПК не представляется возможным, мы можем применить надежное серверное решение. Оно заключается в отключении расширенной оптимизации RemoteFX для приложений RemoteApp. Это заставит сервер обрабатывать окна в классическом, более стабильном режиме.
Рассмотрим, как внести изменения в реестр терминального сервера (подходит для Windows Server 2012 R2, 2016, 2019):
regedit и нажмите Enter для запуска редактора реестра.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStationsfEnableRemoteFXAdvancedRemoteApp.Для наглядности приведем пример готового файла реестра (с расширением .reg), который можно применить на сервере:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]
"fEnableRemoteFXAdvancedRemoteApp"=dword:00000000
После внесения изменений в реестр необходимо перезапустить службу удаленных рабочих столов (Terminal Services) или полностью перезагрузить сервер для вступления настроек в силу.
Если вы администрируете доменную структуру, гораздо удобнее отключить эту графическую оптимизацию централизованно с помощью редактора локальной групповой политики или доменных политик Active Directory. Выполним настройку по шагам:
gpedit.msc в строке «Выполнить»).gpupdate /force.В некоторых случаях операционная система локального компьютера блокирует попытки удаленного приложения вернуть себе фокус. Для устранения этой проблемы мы можем скорректировать таймаут блокировки переднего плана (Foreground Lock Timeout) в реестре пользователя. Это можно сделать как на сервере, так и на клиентской рабочей станции.
Выполним следующие шаги:
regedit) под учетной записью пользователя.HKEY_CURRENT_USER\Control Panel\Desktop200000 (в миллисекундах), что предотвращает передачу фокуса другим приложениям в течение 200 секунд.Пример reg-файла для быстрого применения этой настройки:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ForegroundLockTimeout"=dword:00000000
После изменения параметра пользователю необходимо выйти из своей учетной записи Windows (Log off) и зайти заново.
Что делать, если пользователь столкнулся с проблемой прямо сейчас, ему срочно нужно настроить интерфейс под себя (например, расширить табличную часть накладной), а администратора нет на месте или у него нет возможности оперативно применить системные настройки?
В этом случае мы можем предложить пользователям два простых практических обхода:
Проанализировав все указанные методы, мы можем сделать вывод, что наиболее комплексным и правильным решением является одновременное обновление платформы «1С:Предприятие 8.3» на сервере и отключение дополнительной графики RemoteFX для RemoteApp в групповых политиках терминального сервера. Это гарантирует стабильную работу интерфейса 1С у всех пользователей вне зависимости от версии их локальной операционной системы.