Почему сканер штрихкода считывает штрихкод не полностью при работе через RDP в 1С и как это исправить?

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

При работе в терминальных сессиях (RDP) со сканерами штрихкодов (например, популярной моделью Zebra / Symbol LS2208) пользователи нередко сталкиваются с ситуацией, когда штрихкод считывается не целиком. В документ 1С попадает только часть кода: пропадают первые 2–3 цифры либо отсекается окончание последовательности. При этом при сканировании в текстовый редактор «Блокнот» код считывается полностью и без ошибок.

Проанализируем природу этой проблемы и подробно разберем все способы ее устранения.

Выясним причину потери символов

Когда сканер подключен в режиме эмуляции клавиатуры (USB-HID / USB-KB), он передает весь считанный штрихкод в операционную систему в виде непрерывного потока нажатий клавиш с минимальной задержкой. В среде RDP передача нажатий клавиш через сеть подвержена сетевым задержкам (джиттеру), буферизации пакетов и влиянию фоновых процессов терминального сервера.

Компонента интеграции подключаемого оборудования 1С использует специальный клавиатурный перехватчик (хук). Она ожидает поступления символов с определенной частотой. Если из-за сетевого лага интервал между двумя соседними символами превышает установленный тайм-аут, драйвер 1С считает ввод штрихкода завершенным. В результате во внешнее событие передается только первая порция символов, а остаток кода либо теряется, либо сбрасывается в активное поле как ручной ввод с клавиатуры. В «Блокноте» потерь нет, так как текстовый редактор не анализирует интервалы между нажатиями и выводит всё, что попадает в очередь сообщений Windows.

Способ 1. Перевод сканера в режим эмуляции виртуального COM-порта (USB CDC)

Это самый надежный и технически грамотный вариант интеграции торгового оборудования для работы в терминале. Передача данных через последовательный интерфейс не зависит от скорости набора на клавиатуре, сетевых лагов RDP и текущей раскладки клавиатуры.

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

  1. Перевод сканера в режим виртуального COM-порта. Найдем в официальном руководстве (Product Reference Guide) к сканеру Zebra/Symbol LS2208 сервисный штрихкод USB CDC Host (или Symbol Native API (SNAPI) / Simple COM Port Emulation) и отсканируем его. Сканер перезагрузится и издаст звуковой сигнал.
  2. Установка драйвера на локальный компьютер. Установим драйвер виртуального COM-порта от производителя (драйвер Zebra CDC Driver или Zebra CoreScanner). В диспетчере устройств локального ПК в разделе Порты (COM и LPT) появится новое устройство с назначенным номером порта (например, COM3).
  3. Настройка проброса портов в RDP. Откроем свойства подключения к удаленному рабочему столу (mstsc), перейдем на вкладку Локальные ресурсы, нажмем кнопку Подробнее... в блоке «Локальные устройства и ресурсы» и установим флаг напротив пункта Порты.
  4. Настройка оборудования в 1С:Управление торговлей. Запустим 1С в терминальной сессии, перейдем в раздел НСИ и администрирование → РМК и оборудование → Подключаемое оборудование. Откроем карточку сканера, выберем драйвер 1С:Сканеры штрихкода (NativeApi) или 1C:Сканеры штрихкода (COM), в параметрах укажем проброшенный номер COM-порта, скорость 9600 и протестируем считывание.

Способ 2. Увеличение задержки между символами на сканере (Intercharacter Delay)

Если перевод в режим COM-порта по каким-либо причинам невозможен и сканер должен оставаться в режиме клавиатуры (USB-KB), устранить рассинхронизацию можно аппаратной задержкой.

По умолчанию сканер шлет символы слишком быстро, из-за чего буфер клавиатуры RDP-клиента захлебывается. В руководстве по программированию LS2208 найдем раздел Intercharacter Delay / Keystroke Delay и установим задержку между отправкой символов (рекомендуемое значение — от 5 до 20 миллисекунд). Это замедлит эмуляцию печати, сделает передачу данных через сетевой стек равномерной и предотвратит разрыв штрихкода.

Способ 3. Корректировка параметров клавиатурного тайм-аута в 1С

Рассмотрим настройку параметров компоненты сканера внутри конфигурации 1С:

  1. Перейдем в карточку настройки сканера в 1С:Управление торговлей.
  2. Найдем параметр Таймаут клавиатуры (или Чувствительность).
  3. По умолчанию данный параметр может иметь значение от 30 до 75 мс. Если символы теряются, последовательно протестируем уменьшение интервала (например, 20–30 мс) либо его увеличение (до 100–120 мс) в зависимости от используемой версии драйвера и стабильности канала связи.
  4. Проверим корректность суффикса. Для клавиатурного режима обязательно должен быть настроен суффикс возврата каретки — CR (код 13) или CRLF, как в самом сканере, так и в таблице префиксов/суффиксов в 1С.

Способ 4. Сверка и обновление версий драйверов оборудования

Если в одной базе (например, 1С:Бухгалтерия предприятия 3.0) сканер работает стабильно, а в 1С:Управление торговлей 11 происходят сбои, проанализируем версию используемой компоненты БПО (Библиотеки подключаемого оборудования):

  1. Откроем в обеих конфигурациях форму настроек драйвера сканера.
  2. Сравним тип и номер версии подключенного драйвера (например, 1C:Сканеры штрихкода (NativeApi) версии 9.x / 10.x).
  3. При необходимости выполним обновление драйвера оборудования в УТ 11 через кнопку Установить драйвер / Обновить драйвер, загрузив актуальную версию компоненты.
← На главную