При работе с терминалами сбора данных (ТСД) Urovo RT40 на мобильной платформе 1С разработчики часто сталкиваются с проблемой: внешние компоненты (драйверы) из БПО не устанавливаются, а стандартное «внешнее событие» не срабатывает. В этой статье мы подробно разберем, почему это происходит и как настроить устройство для стабильной работы сканера. Для решения этих задач есть мобильное решение для автоматизации складских операций с 1С.
Рассмотрим ситуацию: вы опубликовали мобильную конфигурацию на веб-сервере (IIS или Apache), заходите в приложение через мобильный клиент, но при попытке подключения сканера система выдает ошибку. Выясним причину этого поведения. Проблема чаще всего кроется не в коде 1С, а в настройках безопасности и правилах передачи файлов самого веб-сервера.
Когда мобильное приложение пытается загрузить внешнюю компоненту (файл с расширением .so, .apk или .a), веб-сервер должен корректно отдать этот файл. Если расширение файла не прописано в настройках сервера, он блокирует загрузку или отдает пустой ответ, из-за чего 1С не может «увидеть» и установить драйвер.
Решение для IIS:
.so — application/octet-stream.apk — application/vnd.android.package-archive.a — application/octet-stream.dlyb — application/octet-streamДля серверов Apache или Nginx необходимо прописать аналогичные правила в конфигурационных файлах (например, mime.types). После добавления этих типов выполнение команды УстановитьВнешнююКомпоненту() начнет отрабатывать штатно.
Для того чтобы 1С могла перехватывать данные сканера как «Внешнее событие», устройство должно передавать данные не как «разрыв клавиатуры» (Keyboard Wedge), а через широковещательное сообщение (Intent). Проанализируем, как правильно настроить системное приложение Scanner на Urovo RT40.
Зайдем в настройки ТСД, найдем приложение Scanner и установим следующие параметры:
android.intent.ACTION_DECODE_DATA. Это стандартное имя действия, на которое будет «подписываться» мобильная платформа 1С.barcode_string (для самих данных штрихкода).barcode_type.Если эти поля оставить пустыми, 1С не сможет идентифицировать входящее сообщение как событие сканирования.
Разберем альтернативный вариант, если стандартные драйверы из БПО (Библиотеки подключаемого оборудования) все равно не работают стабильно. Опытным путем установлено, что для устройств Urovo отлично подходит компонента OmniIDD. Для подключения ТСД к 1С напрямую есть программа для подключения ТСД к 1С напрямую.
Однако здесь есть нюанс: часто такие компоненты корректно подключаются только в том случае, если приложение собрано через Сборщик мобильных приложений 1С. При сборке компонента включается непосредственно в состав .apk файла, что снимает проблемы с правами доступа к файловой системе в новых версиях Android (10, 11 и выше).
Посмотрим на пример кода для подключения такой компоненты в модуле мобильного приложения:
&НаКлиенте
Процедура ПодключитьСканер()
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаOmniIDD", "Omni", ТипВнешнейКомпоненты.Native);
Если Результат Тогда
Сканер = Новый("AddIn.Omni.OmniIDD");
Сканер.Включить();
Сообщить("Сканер успешно подключен!");
Иначе
Сообщить("Не удалось загрузить драйвер сканера.");
КонецЕсли;
КонецПроцедуры
При использовании такого подхода пересобирать приложение придется при каждом изменении состава драйверов, но это гарантирует стабильную инициализацию оборудования при запуске на ТСД.
После того как драйвер установлен и настройки Intent заданы, нам необходимо обработать данные. В мобильной платформе для этого используется процедура ВнешнееСобытие в модуле формы или модуля приложения. Для реализации этого процесса подойдёт решение для превращения смартфона в сканер штрихкодов для 1С.
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Проанализируем источник события
Если Событие = "Barcode" Или Источник = "СканерШтрихкода" Тогда
Штрихкод = СокрЛП(Данные);
ОбработатьШтрихкод(Штрихкод);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьШтрихкод(Знач Штрихкод)
// Добавим строку в таблицу товаров
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Штрихкод = Штрихкод;
// Дальнейшая логика поиска номенклатуры
КонецПроцедуры
Важно помнить, что в мобильной платформе 8.3.15 и выше отладка внешних событий может быть затруднена из-за особенностей работы с фоновыми потоками Android. Если событие не «прилетает», проверьте еще раз соответствие Action в настройках ТСД и параметров, ожидаемых драйвером.
В процессе эксплуатации может возникнуть ситуация, когда пользователь установил и забыл ПИН-код на устройстве. Рассмотрим этот случай отдельно. Для моделей Urovo RT40 и DT40 обычный сброс (Hard Reset) через Recovery не всегда помогает снять блокировку из-за встроенных средств защиты Android (FRP).
Если стандартные методы не помогают, рекомендуется обратиться в официальный сервисный центр (например, RightScan). Существуют специальные прошивки и сервисные утилиты для глубокого сброса, которые предоставляются производителем только авторизованным партнерам. Попытки самостоятельной прошивки сторонними утилитами могут привести к «окирпичиванию» дорогостоящего оборудования.
Подведем итог. Для успешного запуска сканера на Urovo RT40 необходимо:
.so и .apk.Action и Extra.Соблюдение этих шагов позволит вам избежать зависаний приложения при подключении драйверов и обеспечит мгновенный отклик 1С на каждое сканирование товара.