При переходе на современные операционные системы (Windows 7, Windows 10, Windows Server 2008, 2012 и новее) разработчики конфигураций на платформе 1С:Предприятие 7.7 часто сталкиваются с неприятным поведением отладчика. При выполнении пошаговой отладки (нажатии клавиш F10, F11 или соответствующих кнопок панели инструментов) активность автоматически перескакивает с окна отладчика на неактивное окно пользовательского режима «1С:Предприятие». В результате при каждом шаге приходится вручную возвращать фокус на отладчик, что делает процесс анализа кода крайне неудобным.
Разберем причины такого поведения платформы и подробно рассмотрим все способы устранения этой проблемы.
Проанализируем, почему отладчик ведет себя подобным образом на относительно новых версиях Windows:
SetForegroundWindow. Начиная с Windows Vista и Windows Server 2008, операционная система блокирует принудительный перехват фокуса другим процессом, если текущее активное окно принадлежит иному потоку. Из-за этого вызов завершается неудачей, и фокус возвращается в окно режима «1С:Предприятие».Самый простой и проверенный способ вернуть привычное поведение отладчика — задействовать встроенные механизмы совместимости Windows. Рассмотрим правильный порядок действий:
1cv7.exe (или 1cv7s.exe) в каталоге установки BIN либо ярлык, через который запускается среда разработки.Windows XP (пакет обновления 3) или Windows 2000.Важное замечание: Режим совместимости с Windows 2000 также помогает избавиться от эффекта «серого/белого зависшего экрана» при выполнении тяжелых длительных алгоритмов. Если вы опасаетесь влияния режима совместимости на стабильность базы при многопользовательской работе, настройте отдельный ярлык с совместимостью исключительно для целей разработки и отладки.
Если нет возможности изменить параметры совместимости (например, из-за ограниченных прав учетной записи), применим быстрый обходной маневр:
Когда окно «1С:Предприятия» свернуто, операционная система не может перевести на него визуальный фокус ввода, и фокус гарантированно остается в редакторе кода отладчика при каждом шаге.
Разберем системную настройку, позволяющую отключить блокировку мгновенной передачи фокуса между приложениями на уровне операционной системы:
regedit).HKEY_CURRENT_USER\Control Panel\Desktop.DWORD с именем ForegroundLockTimeout.0 (в шестнадцатеричной системе счисления). По умолчанию Windows устанавливает задержку на перехват активности другими процессами, а значение 0 полностью ее отключает.Проверим программы, работающие в системном трее. Если на компьютере или сервере установлены утилиты автоматического переключения раскладки (такие как Punto Switcher и их аналоги), они перехватывают нажатия клавиш F10 и F11 через глобальные хуки клавиатуры.
Для устранения проблемы добавим исполняемые файлы 1cv7.exe и 1cv7s.exe в список исключений переключателя раскладки либо временно отключим автопереключение на время сеанса разработки.
Поскольку платформа 1С 7.7 архитектурно создавалась для систем поколения Windows NT/2000/XP, наиболее надежным и изолированным вариантом для масштабной доработки конфигураций остается запуск конфигуратора и отладчика внутри виртуальной машины под управлением Windows XP или Windows Server 2003, либо применение расширений сред разработки (таких как OpenConf), адаптирующих интерфейс платформы к новым ОС.