При организации работы складского персонала с терминалами сбора данных (ТСД) под управлением операционной системы Android часто применяется терминальный доступ. ТСД подключается к серверу по протоколу RDP, где запущена основная база данных 1С. Однако при такой схеме интеграции технические специалисты часто сталкиваются с проблемой: при сканировании штрихкодов или QR-кодов данные передаются только в режиме «разрыва клавиатуры» (keyboard wedge).
Режим эмуляции клавиатуры крайне неудобен для оператора. Во-первых, для успешного ввода необходимо держать фокус ввода в строго определенном текстовом поле. Во-вторых, при быстрой передаче длинных последовательностей (особенно многосимвольных QR-кодов маркировки «Честный Знак» или акцизных марок ЕГАИС) RDP-клиент может терять отдельные символы. В-третьих, раскладка клавиатуры на ТСД и на сервере RDP должна идеально совпадать, иначе русские символы превратятся в нечитаемые кракозябры. Чтобы решить эти проблемы, необходимо настроить полноценную генерацию Внешнего события в 1С. В данной статье мы подробно разберем, как реализовать этот механизм несколькими надежными способами.
Самый простой способ, не требующий установки стороннего программного обеспечения на сервер, заключается в тонкой настройке стандартного драйвера 1С и утилиты сканирования на самом ТСД. Мы заставим систему воспринимать клавиатурный ввод как поток данных для сканера штрихкодов, который будет автоматически конвертироваться во внешнее событие.
Рассмотрим по шагам, как выполнить эту настройку:
Откроем на ТСД предустановленное системное приложение для управления сканером. В зависимости от версии прошивки оно может называться Scanner, ScanWedge или Keyboard Emulator. Нам необходимо перевести сканер в режим передачи символов клавиатуры, но при этом обязательно настроить служебные символы:
##) или функциональную клавишу, например, F7.Enter (код клавиши 13) или перевод строки LF (код клавиши 10).Зайдем в информационную базу 1С под правами администратора. Перейдем в меню «Администрирование» — «Подключаемое оборудование». Создадим новое устройство с типом «Сканеры штрихкода».
F7, то и в драйвере указываем ее код.Выясним, как работает данный механизм. Драйвер 1С:Сканер штрихкода в фоновом режиме перехватывает все нажатия клавиш в сессии. Как только в потоке появляется заданный префикс, драйвер блокирует дальнейший вывод символов на экран и начинает накапливать их в буфере. Получив завершающий суффикс (например, перевод строки), драйвер моментально очищает буфер ввода и генерирует стандартное асинхронное внешнее событие 1С. В результате отрабатывает следующий код:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "СканерШтрихкода" Тогда
// Переданные данные очищаются от префиксов и суффиксов самим драйвером
ШтрихкодДанные = СокрЛП(Данные);
// Запускаем логику поиска и обработки товара в базе
ОбработатьСканирование(ШтрихкодДанные);
КонецЕсли;
КонецПроцедуры
Если при сканировании сложных двумерных QR-кодов (например, DataMatrix кодов маркировки обуви, одежды, табака или лекарств) символы продолжают искажаться из-за переключения языковой раскладки на сервере, клавиатурный метод использовать нельзя. В этом случае лучшим решением будет трансляция отсканированных данных по сети Wi-Fi напрямую в 1С.
Проанализируем архитектуру этого решения:
На ТСД Urovo под управлением Android устанавливается специализированная сервисная утилита. Данная утилита перехватывает системные сообщения (Broadcast Intent), которые генерирует встроенный лазерный модуль сканера при успешном считывании штрихкода. Перехваченная строка не эмулирует клавиатуру, а упаковывается в TCP/IP пакет и отправляется по беспроводной сети Wi-Fi на IP-адрес терминального сервера.
На стороне терминального сервера запускается программа-приемник (серверная часть утилиты). Она слушает определенный TCP-порт. Получив пакет с ТСД, приемник может передать его в 1С двумя путями:
При интенсивной работе склада работа через классический RDP на ТСД постепенно уступает место специализированным решениям. Если перед нами стоит задача масштабной автоматизации, рассмотрим альтернативные варианты интеграции, которые изначально спроектированы под работу со встроенным сканером Urovo:
Эти решения используют клиент-серверную архитектуру. На ТСД Urovo устанавливается специализированное Android-приложение, которое напрямую работает с аппаратным сканером через Native-библиотеки производителя (RightScan). Обмен данными с базой 1С происходит в реальном времени через веб-сервисы (HTTP/SOAP). Это полностью исключает необходимость настройки RDP-подключения, гарантирует мгновенный отклик интерфейса и безошибочное чтение любых кодов маркировки.
Компания RightScan, являющаяся дистрибьютором оборудования Urovo, поставляет специализированные драйверы, сертифицированные фирмой 1С. Этот драйвер интегрируется непосредственно в мобильную платформу 1С и обеспечивает корректную обработку событий сканирования.
Вместо RDP-клиента мы можем запустить на ТСД Urovo «1С:Мобильный клиент». В современной мобильной платформе реализована нативная поддержка внешних компонент для работы с торговым оборудованием. Это позволяет использовать встроенный сканер ТСД с генерацией внешнего события напрямую внутри мобильного приложения 1С без каких-либо сетевых костылей.
Если архитектурно перенос логики на мобильные платформы невозможен и требуется остаться в рамках терминальной сессии, обратим внимание на выбор RDP-клиента на ТСД. Стандартный клиент Microsoft Remote Desktop ориентирован на офисных пользователей и практически не имеет инструментов интеграции с аппаратными портами Android-устройств.
Для качественной проброски данных рекомендуется использовать альтернативные клиенты, например, Parallels Client (известный ранее как 2X Client). Этот клиент имеет расширенные настройки интеграции, позволяющие:
Таким образом, комбинируя настройку префиксов с регулировкой межсимвольной задержки или внедряя специализированные сетевые утилиты-мосты, мы можем добиться стабильного вызова внешнего события в 1С при работе с ТСД Urovo через удаленный рабочий стол.