Многие разработчики, перешедшие на платформу версии 8.3.27.1606 и смежные релизы, столкнулись с крайне неприятной проблемой: после выполнения операции «Поиск ссылок в объекте» или «Глобальный поиск» клавиатура в текстовом редакторе конфигуратора перестает реагировать на любые нажатия. При этом мышь продолжает работать, позволяя перемещаться по коду, но вводить текст становится невозможно.
В рамках данной статьи мы подробно разберем, почему возникает эта ошибка, проанализируем механизмы ее проявления и рассмотрим все доступные способы «реанимации» интерфейса без необходимости закрывать и снова открывать конфигуратор.
Проанализируем ситуацию с технической точки зрения. Проблема официально зарегистрирована в реестре ошибок 1С и связана с некорректной работой оконного менеджера платформы. Когда мы запускаем «Поиск ссылок», конфигуратор открывает модальное окно или запускает тяжелый фоновый процесс индексации. После завершения поиска и закрытия вспомогательных диалогов фокус ввода «теряется».
Платформа ошибочно считает, что в системе все еще активно невидимое модальное окно или процесс, блокирующий основной интерфейсный поток. Особенно часто это проявляется при использовании функций контекстной подсказки (IntelliSense) и автодополнения кода. Как только конфигуратор пытается предложить список реквизитов после ввода точки ., происходит окончательный захват фокуса, который не возвращается в текстовое поле.
Рассмотрим самый быстрый способ, который помогает большинству пользователей. Как показывает практика, команда сохранения инициирует обновление состояния интерфейса и пересчет активных окон.
Посмотрим на альтернативный вариант, который помогает «пробить» невидимую блокировку фокуса. Поскольку мышь в конфигураторе продолжает функционировать, мы можем использовать ее для передачи команд оконному менеджеру.
Handle окна), что часто возвращает возможность печатать.Выясним, как изменение геометрии окна влияет на баг. Иногда проблема связана с отрисовкой невидимых подсказок или окон сообщений, которые «зависли» поверх редактора.
Repaint) всех графических элементов и сбрасывает зависшие состояния фокуса.Проанализируем еще один «хитрый» метод. Вызов штатного диалогового окна справки иногда принудительно закрывает все застрявшие в очереди модальные запросы.
Чтобы минимизировать частоту зависаний на проблемных релизах платформы (таких как 8.3.27.1606), мы рекомендуем изменить настройки контекстной подсказки. Разберем по шагам, как это сделать:
Если вы часто работаете с ХранилищемКонфигурации или выполняете ГлобальныйПоиск, старайтесь не нажимать клавиши до полного завершения прогресс-бара операции. Преждевременный ввод текста в момент закрытия фонового процесса — основной триггер данного бага.
Подводя итог, отметим, что наиболее стабильным решением является обновление платформы до последних патчей ветки 8.3.27 (сборки 17xx и выше), где разработчики внесли исправления в механизм взаимодействия с оконным менеджером Windows. Однако, если вы вынуждены работать на релизе 1606, использование комбинации Ctrl+S и контекстного меню мыши является наиболее эффективным способом решения проблемы без потери времени на перезапуск среды разработки.