Почему при отладке в 1С фокус постоянно перескакивает в окно клиента и как это исправить?

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

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

Выясним причину: ошибка платформы и особенности системы

Основной причиной такого поведения является зарегистрированная ошибка платформы 1С:Предприятие с кодом 10185611. Эта ошибка часто проявляется на релизах ветки 8.3.10 (в частности, на версии 8.3.10.2466), а также на некоторых более ранних сборках.

Проблема проявляется в следующих ситуациях:

  1. Работа в терминальном режиме (RDP): При подлючении через удаленный рабочий стол системные механизмы передачи фокуса окон между процессами могут отрабатывать некорректно из-за специфики проброса графического интерфейса.
  2. Взаимодействие со службой DWM: Служба графического диспетчера окон Windows — Desktop Window Manager (dwm.exe) — при смене активного процесса во время отладочного останова может принудительно возвращать передний план окну клиента.
  3. Разница в уровнях привилегий (UAC): Если Конфигуратор и окно 1С:Предприятие запущены от имени разных пользователей или с разным уровнем прав (например, одно из окон запущено от имени администратора, а другое — в обычном режиме), операционная система блокирует передачу фокуса фоновому процессу.
  4. Сторонние перехватчики ввода: Утилиты автоматического переключения раскладки клавиатуры и перехватчики горячих клавиш могут перехватывать нажатия служебных клавиш и возвращать фокус активному приложению.

Способ 1. Обновление платформы 1С:Предприятие

Разберем по шагам наиболее эффективный и официальный способ устранения проблемы. Так как ошибка зарегистрирована в официальном багборде 1С, фирма «1С» исправила её в релизах платформы начиная с версии 8.3.11.

  1. Выясним текущую версию платформы через меню Справка — О программе.
  2. Если используется версия платформы 8.3.10 или ниже, необходимо выполнить обновление технологической платформы до актуального релиза ветки 8.3.11 или более свежей.
  3. После обновления платформы перезапустите сеанс Конфигуратора и клиентское приложение.

Способ 2. Отключение службы Desktop Window Manager (dwm.exe)

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

  1. Откройте службу управления ОС (запустите services.msc).
  2. Найдите службу Диспетчер окон рабочего стола (Desktop Window Manager Session Manager / dwm.exe).
  3. Остановите службу и переведите тип запуска в режим Отключено.

Обратите внимание: отключение DWM выключает визуальные эффекты интерфейса Windows (Aero), однако устраняет конфликт перехвата фокуса между клиентским сеансом 1С и Конфигуратором.

Способ 3. Выравнивание прав запуска и дополнительные рекомендации

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

  1. Запуск с едиными правами: Следите за тем, чтобы Конфигуратор и клиентский сеанс 1С:Предприятие запускались от одного и того же пользователя ОС с одинаковым уровнем прав UAC.
  2. Использование двух мониторов: Если разнести окно Конфигуратора и окно 1С:Предприятие на разные физические мониторы, Windows перестает перекрывать окна, и фокус удерживается в отладчике корректно.
  3. Исключения для утилит клавиатуры: Добавьте исполняемые файлы 1С (1cv8.exe) в список исключений программ автоматической смены раскладки клавиатуры.
← На главную