Как устранить обрезание штрихкодов при использовании беспроводного сканера Атол Импульс в RDP-сессии?

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

При автоматизации складского учета или розничной торговли часто возникает ситуация, когда оборудование работает нестабильно в терминальной среде. Одной из специфических проблем является «проглатывание» или обрезка части штрихкода (например, передаются только последние 6 цифр из 13) при использовании беспроводного сканера Атол Импульс в связке с 1С через RDP. Примечательно, что при подключении по кабелю или при проверке в обычном блокноте проблема может не проявляться, но в учетной системе данные приходят искаженными.

В этой статье мы подробно разберем причины возникновения такой ошибки и проанализируем несколько способов ее решения: от простой корректировки параметров драйвера до изменения режима работы самого устройства.

Анализ причины проблемы: почему теряются символы?

Давайте разберем физику процесса. Когда сканер настроен в режиме эмуляции клавиатуры (HID), он отправляет считанные данные в систему как последовательность нажатий клавиш. В случае с беспроводным соединением и работой через протокол RDP возникает дополнительное звено — передача пакетов по сети. Если канал связи нестабилен или загружен, пакеты с «нажатиями клавиш» могут приходить с задержкой или теряться. 1С, ожидая поток данных, может интерпретировать задержку как окончание ввода и начать обрабатывать только ту часть штрихкода, которая успела «проскочить» в буфер.

Решение 1: Настройка чувствительности в драйвере «Атол: Драйвер устройств ввода»

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

Рассмотрим пошагово, как это сделать:

  1. Откроем настройки Драйвера устройств ввода непосредственно в сессии RDP (через тест драйвера или через параметры торгового оборудования в 1С).
  2. Найдем параметр Чувствительность (в некоторых версиях он может называться «Таймаут»).
  3. По умолчанию там может стоять значение около 30–100 мс. Нам необходимо увеличить его. Опытным путем установлено, что значения 500 мс или даже 1000 мс (1 секунда) позволяют системе гарантированно дождаться всех символов штрихкода, даже если сеть работает с задержками.
  4. Проверим работу устройства. После увеличения чувствительности драйвер будет дольше «держать фокус» на приеме данных, прежде чем передать их в модуль обработки 1С.

Решение 2: Перевод сканера в режим эмуляции COM-порта (VCOM)

Проанализируем более надежный технический подход. Режим клавиатуры (HID) всегда будет уязвим в RDP-среде из-за особенностей обработки клавиатурных прерываний. Перевод сканера в режим Virtual COM Port позволяет передавать штрихкод не посимвольно, а единым пакетом (событием), что исключает его разрыв.

Для реализации этого метода выполним следующие действия:

  1. Найдем в инструкции к сканеру Атол Импульс управляющий штрихкод для включения режима USB Virtual COM и считаем его.
  2. На локальном компьютере, к которому физически подключен USB-приемник сканера, установим соответствующий драйвер виртуального COM-порта (доступен на сайте Атол).
  3. В настройках RDP-клиента (mstsc) перед подключением перейдем на вкладку Локальные ресурсы, нажмем кнопку Подробнее и отметим галочкой пункт Порты. Это необходимо для проброса порта в терминальную сессию.
  4. В 1С изменим настройки торгового оборудования, выбрав тип подключения COM-порт и указав номер проброшенного порта.

При таком подходе 1С будет использовать механизм ExternalEvent (Внешнее событие), который работает гораздо стабильнее «клавиатурного» ввода.

Решение 3: Установка межсимвольной задержки на самом сканере

Если перевод в COM-режим по каким-то причинам невозможен, мы можем замедлить сам сканер. У Атол Импульс есть внутренний параметр Inter-character Delay (межсимвольная задержка).

Посмотрим, как это работает: сканер будет имитировать нажатия клавиш не мгновенно, а с микропаузой (например, 20–50 мс между каждой цифрой). Это позволит сетевому протоколу RDP успевать упаковывать каждый символ в пакеты и доставлять их на сервер без потерь.

Алгоритм действий:

  1. Возьмем руководство пользователя (Full Manual) для Атол Импульс.
  2. Найдем раздел настроек задержки передачи (Keyboard Delay / Inter-character Delay).
  3. Последовательно считаем штрихкоды для установки значения задержки. Рекомендуется начать с 40 мс.

Решение 4: Проверка префиксов и суффиксов в 1С

Иногда 1С «теряет» начало или конец штрихкода из-за некорректной настройки префиксов. В среде RDP крайне важно, чтобы 1С понимала начало ввода данных со сканера. Рассмотрим программную настройку в 1С:

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

Пример настройки префикса в коде (если вы пишете обработку внешнего события самостоятельно):


Процедура ВнешнееСобытие(Источник, Событие, Данные)
    // Данные — это считанный штрихкод
    Если Событие = "BarCodeValue" Тогда
        Штрихкод = СокрЛП(Данные);
        // Проанализируем длину считанного кода
        Если СтрДлина(Штрихкод) < 13 Тогда
            Сообщить("Внимание: считан неполный код! Длина: " + СтрДлина(Штрихкод));
        КонецЕсли;
        // Дальнейшая логика поиска товара
    КонецЕсли;
КонецПроцедуры

Дополнительные рекомендации по оптимизации RDP

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

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

← На главную