С выходом обновлений платформы 1С:Предприятие версии 8.3.27.хххх (в частности, сборки 8.3.27.1644 и соседних) многие пользователи и администраторы столкнулись с крайне неприятным поведением интерфейса. Проблема проявляется следующим образом: при открытии формы или переходе между полями ввода клавиатура перестает реагировать на нажатия. Символы не печатаются, хотя курсор может стоять в поле. В некоторых случаях фокус «улетает» с активного окна, и для его возврата требуются дополнительные манипуляции мышью. Особенно остро проблема проявилась в базовых версиях программ «1С:Розница» и «1С:УНФ», для которых разработано специализированное решение проблемы с пропаданием фокуса.
В этой статье мы подробно разберем, почему это происходит, проанализируем имеющиеся решения и рассмотрим программные методы исправления ситуации, которые помогут вашим операторам вернуться к нормальной работе.
Проанализируем ситуацию: платформа 8.3.27 привнесла значительные изменения в ядро отрисовки интерфейса и механизмы взаимодействия с оконным менеджером Windows. Это было необходимо для унификации работы тонкого и веб-клиента. Однако эти изменения привели к конфликтам при обработке модальных окон, выпадающих списков и форм подбора. Выясним причину, почему это чаще заметно в базовых версиях: такие конфигурации часто работают в однопользовательском режиме с жесткой привязкой к лицензии, и дополнительные фоновые проверки (например, проверка легальности или поиск обновлений) могут перехватывать фокус ввода в момент открытия основных рабочих окон. В сообществе уже опубликован детальный разбор багов платформы 8.3.27.1644 с готовыми патчами для исправления ситуации.
Одним из первых и наиболее эффективных способов «лечения» без изменения программного кода является корректировка настроек запуска информационной базы. Рассмотрим, как это сделать по шагам:
Толстый клиент, это может провоцировать баг на новой платформе.Как показывает практика, при автоматическом выборе режима платформа корректнее отрабатывает дескрипторы окон, и проблема с клавиатурой во многих случаях исчезает сама собой.
Если изменить настройки подключения не удается или это не помогает, разберем методы, которые позволяют оператору вернуть фокус ввода «здесь и сейчас». Эти действия заставляют операционную систему перерисовать активное окно 1С:
Alt активирует меню, а повторное нажатие возвращает фокус в текущее поле ввода.Win + D или сворачивание мышью принудительно обновляет состояние окна приложения.Win также часто помогает вернуть «зависший» ввод.Если вы сопровождаете нетиповую конфигурацию и планируете вынос всех доработок в расширение для упрощения обновлений, или используете второй способ приведения конфигурации к типовой, стоит рассмотреть программные методы возврата фокуса. Проанализируем ситуацию, когда после закрытия вспомогательной формы (например, ввода количества в подборе) фокус не возвращается в основную форму. Мы можем принудительно вернуть его с помощью встроенного языка.
Посмотрим на пример кода, который устанавливает текущий элемент формы явно после выполнения логики закрытия модальных окон:
// В обработчике оповещения о закрытии окна или после открытия модальной формы
ЭтаФорма.ТекущийЭлемент = Элементы.СправочникНоменклатураСписок;
// Вместо СправочникНоменклатураСписок укажите имя вашего элемента
Если же стандартные методы 1С не помогают, можно прибегнуть к эмуляции нажатия системных клавиш через COMОбъект. Рассмотрим вариант автоматизации нажатия Alt-Alt через WScript.Shell, который имитирует системное переключение фокуса:
Попытка
Shell = Новый COMОбъект("WScript.Shell");
// Эмулируем нажатие и отпускание клавиши Alt (код %)
Shell.SendKeys("%");
Shell.SendKeys("%");
Исключение
// Обработка ошибки, если объект недоступен (например, в Linux или при ограничениях прав)
КонецПопытки;
Этот метод фактически автоматизирует «ручное» решение с двойным Alt и помогает операторам не отвлекаться на лишние действия.
Проанализируем техническую сторону взаимодействия платформы с видеокартой. В 8.3.27 были обновлены механизмы использования аппаратного ускорения. Если вышеперечисленные методы не помогают, попробуем изменить параметры запуска самой платформы:
/gpu off. Это отключит аппаратное ускорение графики, что часто решает проблемы с «невидимыми» окнами, перехватывающими фокус.1cv8.exe на вкладке «Совместимость» включить опцию «Переопределить режим масштабирования высокого разрешения» (Система).Подводя итог, отметим, что проблема ввода в 8.3.27 является признанной ошибкой, которую разработчики 1С постепенно исправляют в новых минорных релизах (сборки 17хх, 18хх и выше). Если вы связаны требованиями по маркировке товаров и ФФД 1.2, вам критически важно оставаться на 27-й платформе. В этом случае мы рекомендуем:
ТекущийЭлемент или использовать проверенное расширение для восстановления работы клавиатуры.Помните, что комфорт работы пользователя напрямую влияет на скорость обслуживания клиентов, поэтому данные «костыли» оправданы до момента выхода стабильного исправления от вендора.