← На главную
При переносе базы данных 1С:Предприятия 7.7 на другой компьютер системные администраторы и программисты нередко сталкиваются с ситуацией, когда торговое оборудование перестает функционировать должным образом. Типичный сценарий: сканер штрихкода успешно считывает данные в блокнот или текстовый документ внутри программы, однако штатная обработка штрихкода в 1С не срабатывает, так как процедура ОбработкаВнешнегоСобытия не вызывается.
Разберем детально, почему так происходит, как устроена работа сканера в режиме клавиатурного ввода и как настроить рабочее место на Windows XP без перепрошивки устройства.
Анализ причин сбоя при смене операционной системы
Выясним причину такого поведения оборудования. Если при сканировании штрихкод отображается в текстовых редакторах, это означает, что сканер физически исправен и работает в режиме эмуляции клавиатуры (USB HID POS / Keyboard Wedge). В Windows 7 внешняя компонента перехватывала этот поток данных и транслировала его в 1С как событие, а на Windows XP эта цепочка прервалась. Рассмотрим ключевые факторы сбоя:
- Локальное хранение настроек оборудования. Параметры торгового оборудования и драйверов не сохраняются внутри файла конфигурации или информационной базы. Они записываются в системный реестр локального компьютера (в ветку текущего пользователя
HKEY_CURRENT_USER). При простом копировании папки с базой на новый компьютер под управлением Windows XP параметры драйвера оказываются сброшенными к значениям по умолчанию. Обычно драйвер по умолчанию пытается слушать порт COM1, полностью игнорируя символы, приходящие от клавиатурного интерфейса.
- Отсутствие суффикса и некорректная чувствительность. Чтобы драйвер отделил ввод со сканера от обычного набора текста пользователем, ему требуются четкие маркеры — префикс, суффикс (обычно возврат каретки с кодом
#13) и минимальный тайм-аут между символами. Если в параметрах драйвера на новой системе суффикс не задан, драйвер не может зафиксировать окончание посылки и не инициирует внешнее событие.
- Проблемы регистрации внешней компоненты и системных библиотек. Бесплатные версии драйверов устройств ввода (в частности, компонента
Scaner1C.dll от АТОЛ) зависят от вспомогательных библиотек среды исполнения. Если эти библиотеки отсутствуют в каталоге System32 или компонента не зарегистрирована системной утилитой regsvr32, объект драйвера не сможет перехватывать системные прерывания клавиатуры.
Пошаговое восстановление работы в режиме клавиатуры
Рассмотрим по шагам, как настроить драйвер сканера на компьютере с Windows XP без изменения настроек самого сканера.
- Проверяем регистрацию внешней компоненты. Убедимся, что файл
Scaner1C.dll и зависимые библиотеки присутствуют в рабочей директории 1С (папка BIN) либо в каталоге базы данных. Выполним регистрацию библиотеки в командной строке от имени администратора с помощью команды regsvr32 Scaner1C.dll.
- Тестируем сканер через сервисную утилиту драйвера. Запустим приложение «Тест драйвера устройств ввода». Перейдем в раздел настройки свойств и нажмем кнопку «Поиск оборудования». Отсканируем произвольный штрихкод. В окне поиска мы увидим, как именно операционная система идентифицирует устройство. Если сканер работает как клавиатура, определится порт «Клавиатура», а в строке данных отобразится сам штрихкод и управляющий символ в конце (например,
#13). Зафиксируем эти значения.
- Настраиваем параметры в 1С:Предприятии 7.7. Запустим 1С в режиме «Предприятие». Перейдем в меню настройки параметров торгового оборудования (обычно
Сервис -> Параметры -> Драйвер сканера штрихкода). Установим порт в значение «Клавиатура». В поле суффикса укажем значение, полученное при тестировании (символ с кодом 13). Обязательно установим флаг «Устройство включено».
- Проверяем отработку внешнего события. Откроем журнал документов или форму подбора номенклатуры. При считывании кода форма должна перехватить событие и выполнить поиск позиции, не выводя при этом текст штрихкода на экран как клавиатурный ввод.
Ограничения клавиатурного режима
Проанализируем специфику работы сканера в режиме разрыва клавиатуры. Несмотря на простоту запуска, такой режим имеет фундаментальные недостатки:
- Зависимость от раскладки клавиатуры. Если в штрихкоде присутствуют буквы, при включенной русской раскладке в операционной системе Windows символы будут искажены, и поиск товара завершится ошибкой.
- Конфликт фокуса ввода. Если оператор случайно поставит курсор в редактируемое текстовое поле, данные могут продублироваться: часть символов пойдет в открытое поле ввода, а часть вызовет системное прерывание, что приведет к повреждению данных в форме.
Перевод сканера в режим эмуляции виртуального COM-порта
Рассмотрим наиболее надежный и профессиональный способ подключения модели Metrologic MS9520. Данный сканер при подключении по USB поддерживает эмуляцию последовательного интерфейса (Virtual COM Port). В этом режиме сканер отправляет данные напрямую в виртуальный последовательный порт, минуя клавиатурный буфер Windows XP.
Разберем процедуру перевода устройства в режим COM-порта:
- Установим на Windows XP специализированный драйвер виртуального COM-порта (USB Serial Driver) для сканеров Metrologic / Honeywell.
- По сервисной инструкции к сканеру найдем управляющий настроечный штрихкод «Recall Defaults», а затем штрихкод активации режима «Enable USB Serial Emulation» (или «Uni-Directional USB Serial Emulation»). Считаем эти коды сканером.
- Откроем «Диспетчер устройств» Windows XP и развернем ветку «Порты (COM и LPT)». Убедимся, что устройство определилось как виртуальный последовательный порт с присвоенным номером (например,
COM3).
- В настройках торгового оборудования 1С:Предприятия 7.7 укажем соответствующий номер COM-порта, установим скорость (по умолчанию 9600) и включим устройство. В таком варианте внешнее событие формируется гарантированно независимо от языка ввода, фокуса активного окна и версии операционной системы.