Как настроить внешнее событие при сканировании QR-кодов на ТСД Urovo в сессии RDP?

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

При организации работы складского персонала с терминалами сбора данных (ТСД) под управлением операционной системы Android часто применяется терминальный доступ. ТСД подключается к серверу по протоколу RDP, где запущена основная база данных 1С. Однако при такой схеме интеграции технические специалисты часто сталкиваются с проблемой: при сканировании штрихкодов или QR-кодов данные передаются только в режиме «разрыва клавиатуры» (keyboard wedge).

Режим эмуляции клавиатуры крайне неудобен для оператора. Во-первых, для успешного ввода необходимо держать фокус ввода в строго определенном текстовом поле. Во-вторых, при быстрой передаче длинных последовательностей (особенно многосимвольных QR-кодов маркировки «Честный Знак» или акцизных марок ЕГАИС) RDP-клиент может терять отдельные символы. В-третьих, раскладка клавиатуры на ТСД и на сервере RDP должна идеально совпадать, иначе русские символы превратятся в нечитаемые кракозябры. Чтобы решить эти проблемы, необходимо настроить полноценную генерацию Внешнего события в 1С. В данной статье мы подробно разберем, как реализовать этот механизм несколькими надежными способами.

Способ 1. Настройка стандартного драйвера клавиатуры 1С с использованием префиксов

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

Рассмотрим по шагам, как выполнить эту настройку:

  1. Настройка утилиты сканирования на ТСД Urovo:

    Откроем на ТСД предустановленное системное приложение для управления сканером. В зависимости от версии прошивки оно может называться Scanner, ScanWedge или Keyboard Emulator. Нам необходимо перевести сканер в режим передачи символов клавиатуры, но при этом обязательно настроить служебные символы:

    • Добавим уникальный Префикс. В качестве префикса можно использовать редкую комбинацию символов (например, ##) или функциональную клавишу, например, F7.
    • Добавим Суффикс. Обычно используется символ возврата каретки Enter (код клавиши 13) или перевод строки LF (код клавиши 10).
    • Критически важная настройка: найдем параметр «Межсимвольная задержка» (Inter-character delay или Char delay) и установим значение в диапазоне от 15 до 40 миллисекунд. Это необходимо, чтобы RDP-протокол успевал обрабатывать поток символов без потерь и искажений.
  2. Настройка драйвера в 1С на стороне RDP-сервера:

    Зайдем в информационную базу 1С под правами администратора. Перейдем в меню «Администрирование» — «Подключаемое оборудование». Создадим новое устройство с типом «Сканеры штрихкода».

    • В качестве обработчика выберем стандартный сертифицированный драйвер «1С:Сканер штрихкода (Native API)».
    • В окне настройки параметров подключения в поле «Порт» укажем значение «Клавиатура».
    • В соответствующих полях «Префикс» и «Суффикс» укажем те же управляющие символы, которые мы настроили на ТСД. Например, если в качестве префикса мы выбрали клавишу F7, то и в драйвере указываем ее код.

Выясним, как работает данный механизм. Драйвер 1С:Сканер штрихкода в фоновом режиме перехватывает все нажатия клавиш в сессии. Как только в потоке появляется заданный префикс, драйвер блокирует дальнейший вывод символов на экран и начинает накапливать их в буфере. Получив завершающий суффикс (например, перевод строки), драйвер моментально очищает буфер ввода и генерирует стандартное асинхронное внешнее событие 1С. В результате отрабатывает следующий код:


Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Источник = "СканерШтрихкода" Тогда
        // Переданные данные очищаются от префиксов и суффиксов самим драйвером
        ШтрихкодДанные = СокрЛП(Данные);
        // Запускаем логику поиска и обработки товара в базе
        ОбработатьСканирование(ШтрихкодДанные);
    КонецЕсли;
КонецПроцедуры

Способ 2. Использование сетевого моста по протоколу TCP/IP (Bridge-утилиты)

Если при сканировании сложных двумерных QR-кодов (например, DataMatrix кодов маркировки обуви, одежды, табака или лекарств) символы продолжают искажаться из-за переключения языковой раскладки на сервере, клавиатурный метод использовать нельзя. В этом случае лучшим решением будет трансляция отсканированных данных по сети Wi-Fi напрямую в 1С.

Проанализируем архитектуру этого решения:

На ТСД Urovo под управлением Android устанавливается специализированная сервисная утилита. Данная утилита перехватывает системные сообщения (Broadcast Intent), которые генерирует встроенный лазерный модуль сканера при успешном считывании штрихкода. Перехваченная строка не эмулирует клавиатуру, а упаковывается в TCP/IP пакет и отправляется по беспроводной сети Wi-Fi на IP-адрес терминального сервера.

На стороне терминального сервера запускается программа-приемник (серверная часть утилиты). Она слушает определенный TCP-порт. Получив пакет с ТСД, приемник может передать его в 1С двумя путями:

  1. Через виртуальный COM-порт: Серверная утилита создает в системе виртуальный COM-порт (например, COM9) и перенаправляет туда все полученные по сети штрихкоды. В 1С мы подключаем сканер на этот COM-порт через стандартный драйвер. Это гарантирует 100% стабильность передачи любых спецсимволов независимо от фокуса ввода и раскладки клавиатуры.
  2. Через специализированную внешнюю компоненту 1С: Приемником выступает непосредственно внешняя компонента, загруженная в сеанс 1С пользователя, которая самостоятельно слушает сетевой порт и при получении данных генерирует внешнее событие.

Способ 3. Переход на специализированное программное обеспечение и мобильный клиент

При интенсивной работе склада работа через классический RDP на ТСД постепенно уступает место специализированным решениям. Если перед нами стоит задача масштабной автоматизации, рассмотрим альтернативные варианты интеграции, которые изначально спроектированы под работу со встроенным сканером Urovo:

Способ 4. Выбор альтернативного RDP-клиента на Android

Если архитектурно перенос логики на мобильные платформы невозможен и требуется остаться в рамках терминальной сессии, обратим внимание на выбор RDP-клиента на ТСД. Стандартный клиент Microsoft Remote Desktop ориентирован на офисных пользователей и практически не имеет инструментов интеграции с аппаратными портами Android-устройств.

Для качественной проброски данных рекомендуется использовать альтернативные клиенты, например, Parallels Client (известный ранее как 2X Client). Этот клиент имеет расширенные настройки интеграции, позволяющие:

Таким образом, комбинируя настройку префиксов с регулировкой межсимвольной задержки или внедряя специализированные сетевые утилиты-мосты, мы можем добиться стабильного вызова внешнего события в 1С при работе с ТСД Urovo через удаленный рабочий стол.

← На главную