После обновления конфигурации 1С:Управление торговлей 11.4 (в частности, на релиз 11.4.12.61 и смежные) многие пользователи столкнулись с критической проблемой: при подключении USB-сканера штрихкода стандартная компьютерная клавиатура перестает реагировать на нажатия. Стоит физически отключить сканер — работа клавиатуры восстанавливается. Разберем детально, почему это происходит и как вернуть работоспособность системы, используя различные методы: от настройки оборудования до манипуляций с программным кодом и драйверами.
Проанализируем техническую сторону вопроса. Большинство современных сканеров штрихкода по умолчанию работают в режиме HID (Human Interface Device), то есть эмулируют обычную клавиатуру. Проблема кроется в драйвере 1С:Сканеры штрихкода (NativeApi) версий 10.0.2.7 и 10.0.2.8.
В этих версиях разработчики реализовали механизм «глобального перехвата» (hook) клавиатурного ввода. Рассмотрим подробнее, как это работает: при инициализации драйвера в 1С компонента пытается «захватить» поток данных от устройства, которое она считает сканером. Из-за ошибки в алгоритме драйвер блокирует вообще весь ввод с клавиатуры в операционной системе Windows, ожидая, что любые нажатия — это данные штрихкода. В результате операционная система не передает стандартные нажатия клавиш активному окну 1С, и пользователь не может вводить текст или цифры.
Самый быстрый и надежный способ исправить ситуацию без глубокого обновления конфигурации — это смена режима работы сканера. Если драйвер NativeApi работает некорректно с клавиатурным потоком, нам нужно направить данные через другой канал.
Разберем по шагам, как перевести сканер в режим эмуляции COM-порта:
Администрирование — Подключаемое оборудование.1С:Сканеры штрихкода (COM). В настройках укажем соответствующий номер COM-порта (его можно посмотреть в диспетчере устройств Windows).В этом режиме сканер перестает конфликтовать с клавиатурой на уровне драйверов ОС, так как данные передаются через последовательный порт, а не через поток ввода текста.
Если использование COM-порта невозможно или нежелательно, проанализируем ситуацию с обновлением программных компонентов. Ошибка была официально признана и исправлена в версии драйвера 10.0.2.11. Рассмотрим подробнее, где взять этот драйвер и как его внедрить.
Исправленные драйверы входят в состав свежих версий БПО (Библиотека подключаемого оборудования). Посмотрим на алгоритм обновления драйвера внутри 1С:
Драйверы оборудования.1С:Сканер штрихкода.Обновить из файла или Загрузить, если у вас есть актуальная поставка БПО.В этой версии разработчики изменили логику работы с хуками Windows: теперь драйвер корректно фильтрует данные и не блокирует основной клавиатурный поток, если данные не соответствуют формату штрихкода.
Рассмотрим ситуацию, когда обновление всей конфигурации «Управление торговлей» затягивается, а работать нужно сейчас. Мы можем заменить файл внешней компоненты вручную. Файл драйвера обычно называется Scanner1C_Native.dll.
Проанализируем процесс замены:
Если вышеуказанные способы недоступны, можно попробовать применить "костыль" через настройки драйвера. Посмотрим на логику обработки входящих данных. Иногда установка обязательного префикса (например, F7) в настройках драйвера в 1С заставляет компоненту переключаться в другой режим ожидания данных.
Однако, как показывает практика, этот метод не гарантирует стабильности во всех окнах системы (например, в окнах подбора товаров или при вводе серийных номеров клавиатура может снова «отваливаться»).
Подводя итог, можно сказать, что проблема носит исключительно программный характер на стыке взаимодействия внешней компоненты 1С и API операционной системы. Мы рекомендуем придерживаться следующего приоритета в решениях:
1. Приоритетный вариант: Перевод всех сканеров в режим Virtual COM Port. Это избавляет от проблем с раскладкой клавиатуры (русская/английская), исключает «залипание» клавиш Shift/Ctrl и полностью устраняет конфликты с вводом текста.
2. Альтернативный вариант: Обновление драйвера до версии 10.0.2.11. Это вернет работоспособность режима NativeApi без изменения физических настроек сканеров.
Для проверки корректности установки драйвера всегда используйте кнопку Тест устройства в настройках оборудования. В исправном состоянии в окне теста должны отображаться данные штрихкода, при этом вы должны сохранять возможность печатать текст в любом другом поле ввода 1С.