При развертывании мобильного клиента 1С (например, конфигурации 1С:Управление нашей фирмой) на терминалах сбора данных (ТСД) под управлением ОС Android разработчики нередко сталкиваются с проблемой: при попытке подключить драйвер сканера штрихкодов NativeAPI система запрашивает установку компоненты, после чего выдает сообщение о том, что нужная компонента отсутствует или не найдена. Попытки загрузить сторонние внешние драйверы через макеты конфигуратора часто приводят к аналогичной ошибке.
Разберем детально, почему возникает эта ошибка, как правильно связать мобильное приложение 1С со встроенным сканирующим модулем ТСД и какие варианты подключения существуют.
Проанализируем техническую сторону работы внешних компонент в среде Android. В отличие от настольных операционных систем Windows, где используются библиотеки .dll, для мобильной платформы 1С требуются скомпилированные Linux-библиотеки .so, упакованные по строгим правилам:
MANIFEST.xml и бинарные библиотеки. Если в манифесте не описана ветка для целевой процессорной архитектуры вашего терминала (например, современные 64-битные устройства требуют arm64-v8a, а старые — armeabi-v7a), платформа 1С сообщает об отсутствии подходящего модуля.ДрайверыОборудования разработчики часто допускают неточности в реквизитах идентификатора объекта и версиях.Посмотрим на пример программного кода, который часто используется для ручной регистрации драйвера из макета:
Драйвер = Справочники.ДрайверыОборудования.СоздатьЭлемент();
Драйвер.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.СканерШтрихкода;
Драйвер.ИдентификаторОбъекта = "AddIn.com_ptolkachev_AndroidScannerExtension";
Драйвер.Наименование = "ДрайверСканерыШтрихкодаAndroid";
Драйвер.СпособПодключения = Перечисления.СпособПодключенияДрайвера.ИзМакета;
Драйвер.ИмяМакетаДрайвера = "ДрайверСканерыШтрихкодаAndroid";
Драйвер.ВерсияДрайвера = "1.0.1.1";
Драйвер.Записать();
Если макет содержит архив, в котором отсутствуют библиотеки под архитектуру Android конкретного ТСД, при инициализации драйвера неизбежно возникнет ошибка.
В современных конфигурациях 1С, включая 1С:УНФ, используется Библиотека подключаемого оборудования (БПО), в которую уже включен кроссплатформенный драйвер «1С:Сканеры штрихкода (NativeAPI)». Этот драйвер изначально поддерживает работу с Android без необходимости ручной сборки сторонних компонент. Оптимальным способом интеграции является работа через системный механизм широковещательных намерений (Broadcast Intent).
Разберем по шагам правильную настройку связки ТСД и 1С:
armeabi-v7a и arm64-v8a.android.intent.ACTION_DECODE_DATA) и Intent Extra (имя переменной, в которой передается штрихкод, например, barcode_string).Подключаемое оборудование:
Сканер штрихкода.1С:Сканеры штрихкода (NativeAPI).Action и Extra, которые задали в утилите ТСД.При таком подходе данные от лазерного модуля ТСД напрямую передаются в платформу 1С и обрабатываются стандартным событием ВнешнееСобытие на управляемых формах документов и обработок.
Если по какой-либо причине подключение через Broadcast Intent и NativeAPI недоступно, рассмотрим альтернативные варианты работы:
В аппаратных настройках ТСД переключаем вывод сканера в режим передачи нажатий клавиатуры с добавлением завершающего символа (суффикса) Enter или Tab. Плюс: не требуется установка драйверов и внешних компонент в 1С. Минусы: для считывания штрихкода курсор всегда должен находиться в фокусе конкретного поля ввода, на экране может нежелательно всплывать виртуальная клавиатура, а раскладка языка в ОС может искажать символы.
Большинство вендоров складского оборудования выпускают собственные сертифицированные фирмой «1С» драйверы. Как правило, они устанавливаются на Android в виде отдельного APK-приложения службы (сервиса) и интегрируются в БПО через соответствующий сертифицированный профиль оборудования.
Платформа предоставляет программный метод для сканирования штрихкодов встроенной фотокамерой мобильного устройства:
ПараметрыСканирования = Новый ПараметрыСканированияШтрихКода;
ПараметрыСканирования.ИспользоватьАвтофокус = Истина;
СредстваМультимедиа.ПоказатьСканированиеШтрихКодов("Отсканируйте ШК", ОписаниеОповещения, ПараметрыСканирования);
Этот способ не требует драйверов, однако он задействует камеру, а не аппаратный сканирующий модуль ТСД, поэтому уступает аппаратному сканеру по скорости считывания и автономности устройства.
Таким образом, для стабильной работы сканера на ТСД в среде мобильного клиента 1С не требуется внедрять самописные компоненты в конфигуратор: достаточно обновить версию БПО в информационной базе, актуализировать клиентское приложение на терминале и настроить обмен данными через Broadcast Intent.