Как правильно настроить USB-сканер штрихкода в клавиатурном режиме для работы в 1С:Розница

Системный администратор 1С v8.3 (Обычные формы) 1С:Розница Торговля и дистрибуция
← На главную

При автоматизации торговых точек часто используются бюджетные китайские сканеры штрихкода (например, Radall RD-1908 и его OEM-аналоги). По умолчанию такие устройства работают в режиме эмуляции клавиатуры (HID Keyboard) — считывают штрихкод, передают цифры в активное поле ввода и отправляют символ перевода строки (Enter / Carriage Return). В типовых конфигурациях 1С (в частности, «1С:Розница 1.0») для поиска товара без драйвера требуется предварительно вызвать диалоговое окно ввода по клавише F7. Если в документации к устройству отсутствуют управляющие штрихкоды для назначения префикса F7 или перевода в режим виртуального COM-порта (USB-VCP), стандартная интеграция вызывает затруднения.

Разберем причины некорректного считывания штрихкодов в клавиатурном режиме, выясним, почему стандартные драйверы могут терять символы, и рассмотрим рабочие способы стабильного подключения сканера к 1С.

Анализ проблемы: эмуляция F7 и пропуск символов

Попытка настроить сканер на посылку клавиши F7 вручную через таблицы префиксов имеет ряд существенных ограничений:

  1. Специфика функциональных клавиш: Для вызова окна поиска сканер должен передавать системный скан-код (Scan Code) клавиши, а не символьную строку «F» и «7». Бюджетные сканеры без расширенной таблицы управляющих ASCII/HID-кодов не умеют эмулировать нажатия функциональных клавиш F1–F12.
  2. Зависимость от раскладки и фокуса: В чистом клавиатурном режиме передача данных зависит от текущей раскладки клавиатуры (RU/EN) и активности нужного поля ввода.
  3. Потеря символов из-за отсутствия межлитерной задержки: В режиме HID Keyboard сканер отправляет весь массив символов практически мгновенно (задержка 0 мс). Обработчики системных хуков (Windows Hooks), которые используют драйверы торгового оборудования для перехвата клавиатурного ввода, не успевают зарегистрировать быстро идущие друг за другом события нажатий клавиш. В результате штрихкод искажается (например, вместо 2000000450095 в программу попадает 200000045095 с пропуском повторяющихся нулей). Изменение таймаута в настройках драйвера 1С (ScanOPOS) не устраняет аппаратную перегрузку буфера ввода.

Способ 1. Использование драйвера устройств ввода АТОЛ (DTO6)

Самое стабильное и проверенное решение для конфигураций на обычных формах («1С:Розница 1.0», «1С:Управление торговлей 10.3») при работе с клавиатурным сканером — использование классического пакета драйверов торгового оборудования АТОЛ. В отличие от штатных компонентов 1С, перехватчик клавиатуры в библиотеке АТОЛ корректно обрабатывает входящий поток данных без потери символов.

Разберем по шагам порядок настройки:

  1. Удаление конфликтующих компонентов: Если в системе был установлен драйвер 1С:Сканер штрихкода (ScanOPOS), удалим или отключим его в списке торгового оборудования 1С, чтобы избежать двойного перехвата системных событий клавиатуры.
  2. Установка драйвера: Установим дистрибутив DTO6_2009_02_11 (последняя полнофункциональная бесплатная редакция драйверов торгового оборудования АТОЛ). В состав пакета входит Драйвер устройств ввода.
  3. Проверка устройства: Запустим утилиту «Тест устройств ввода» из меню драйвера АТОЛ. В настройках укажем суффикс по умолчанию (#13 — символ возврата каретки CR). Выполним тестовое сканирование. Убедимся, что штрихкод отображается целиком без пропущенных цифр.
  4. Подключение в 1С:Розница: Перейдем в меню Сервис -> Торговое оборудование -> Подключение и настройка торгового оборудования. Выберем тип оборудования Сканеры штрихкода и добавим новое устройство. В качестве обработки обслуживания выберем внешнюю обработку для работы с драйвером АТОЛ (ATOLScaner.epf или соответствующую встроенную обработку).
  5. Параметры порта: В окне настройки параметров сканера укажем порт Клавиатура. Префиксы оставляем пустыми, суффикс устанавливаем #13.

После завершения настройки 1С перехватывает считывание штрихкода в любом окне конфигурации через внешнее событие, исключая необходимость ручного нажатия F7.

Способ 2. Альтернативные методы интеграции

Если требуется подключить подобный сканер в современных конфигурациях на управляемых формах или исключить работу с низкоуровневыми клавиатурными хуками, рассмотрим другие варианты:

  1. Установка межлитерной задержки (Inter-character delay): Если для сканера доступна полная инженерная таблица кодов (в том числе от совместимых OEM-платформ), можно отсканировать штрихкод задержки между символами (рекомендуется выставить 10–20 мс). Это позволит стандартному драйверу ScanOPOS успевать обрабатывать каждый символ без пропусков.
  2. Перевод в режим Virtual COM: Большинство сканеров на базе чипов общего назначения поддерживают считывание универсального сервисного кода USB Virtual COM / CDC ACM. При переводе устройства в данный режим в диспетчере устройств Windows появится виртуальный последовательный порт (может потребоваться установка универсального драйвера виртуального COM-порта). В 1С такой сканер подключается через стандартный COM-порт, что гарантирует стопроцентную точность считывания независимо от загрузки процессора и активной раскладки.
  3. Программные эмуляторы HID-to-COM: Использование специализированных утилит-мостов, перехватывающих данные по VID/PID USB-устройства и транслирующих их в виртуальный COM-порт операционной системы.
← На главную