Как исправить ошибку отсутствия внешней компоненты и настроить сканер ШК на ТСД под Android?

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

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

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

Выясним причину: почему платформа 1С не находит внешнюю компоненту

Проанализируем техническую сторону работы внешних компонент в среде Android. В отличие от настольных операционных систем Windows, где используются библиотеки .dll, для мобильной платформы 1С требуются скомпилированные Linux-библиотеки .so, упакованные по строгим правилам:

  1. Несоответствие архитектуры процессора ТСД: Архив внешней компоненты содержит файл MANIFEST.xml и бинарные библиотеки. Если в манифесте не описана ветка для целевой процессорной архитектуры вашего терминала (например, современные 64-битные устройства требуют arm64-v8a, а старые — armeabi-v7a), платформа 1С сообщает об отсутствии подходящего модуля.
  2. Несовпадение версий драйвера: Версия драйвера оборудования, зарегистрированная в справочнике информационной базы на сервере, должна в точности соответствовать версии компоненты, передаваемой мобильному клиенту.
  3. Блокировка веб-сервером: При работе мобильного клиента скачивание архива драйвера происходит по HTTP/HTTPS с веб-сервера публикации базы. Если на сервере (например, IIS) не заданы MIME-типы для скачивания бинарных файлов и архивов либо действуют правила фильтрации запросов, клиент не может загрузить файл компоненты на ТСД.
  4. Ошибки программного добавления драйвера: При ручном заполнении справочника ДрайверыОборудования разработчики часто допускают неточности в реквизитах идентификатора объекта и версиях.

Посмотрим на пример программного кода, который часто используется для ручной регистрации драйвера из макета:


Драйвер = Справочники.ДрайверыОборудования.СоздатьЭлемент();
Драйвер.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.СканерШтрихкода;
Драйвер.ИдентификаторОбъекта = "AddIn.com_ptolkachev_AndroidScannerExtension";
Драйвер.Наименование = "ДрайверСканерыШтрихкодаAndroid";
Драйвер.СпособПодключения = Перечисления.СпособПодключенияДрайвера.ИзМакета;
Драйвер.ИмяМакетаДрайвера = "ДрайверСканерыШтрихкодаAndroid";
Драйвер.ВерсияДрайвера = "1.0.1.1";
Драйвер.Записать();

Если макет содержит архив, в котором отсутствуют библиотеки под архитектуру Android конкретного ТСД, при инициализации драйвера неизбежно возникнет ошибка.

Основное решение: использование штатного драйвера БПО и широковещательных сообщений (Broadcast)

В современных конфигурациях 1С, включая 1С:УНФ, используется Библиотека подключаемого оборудования (БПО), в которую уже включен кроссплатформенный драйвер «1С:Сканеры штрихкода (NativeAPI)». Этот драйвер изначально поддерживает работу с Android без необходимости ручной сборки сторонних компонент. Оптимальным способом интеграции является работа через системный механизм широковещательных намерений (Broadcast Intent).

Разберем по шагам правильную настройку связки ТСД и 1С:

  1. Обновление конфигурации и клиентского приложения: Убедимся, что на ТСД установлена актуальная версия мобильного клиента 1С, а конфигурация информационной базы обновлена до актуальной версии с поддержкой свежей БПО. Это гарантирует наличие корректно скомпилированных библиотек под архитектуры armeabi-v7a и arm64-v8a.
  2. Настройка системной утилиты сканирования на ТСД: Каждый производитель терминалов (Zebra, Honeywell, Chainway, АТОЛ, Urovo и др.) предоставляет системную утилиту для управления аппаратным сканером (например, DataWedge, Scan Settings или Barcode Service). Откроем эту утилиту и выполним следующие действия:
    • Отключим режим вывода в поле ввода как нажатия клавиш (Keystroke output / Keyboard wedge).
    • Включим передачу результатов через широковещательные сообщения (Intent output или Broadcast Intent).
    • Зафиксируем два системных параметра: Intent Action (строка действия, например, android.intent.ACTION_DECODE_DATA) и Intent Extra (имя переменной, в которой передается штрихкод, например, barcode_string).
  3. Настройка драйвера в 1С: Перейдем в режим 1С:Предприятие в раздел Подключаемое оборудование:
    • Создадим новый экземпляр оборудования с типом Сканер штрихкода.
    • В качестве обработчика выберем штатный драйвер 1С:Сканеры штрихкода (NativeAPI).
    • В параметрах подключения выберем режим Broadcast (Широковещательные сообщения).
    • Укажем в полях настроек точно такие же строки Action и Extra, которые задали в утилите ТСД.
    • Сохраним настройки и проверим работу сканирования с помощью кнопки «Тест устройства».

При таком подходе данные от лазерного модуля ТСД напрямую передаются в платформу 1С и обрабатываются стандартным событием ВнешнееСобытие на управляемых формах документов и обработок.

Альтернативные способы интеграции сканера ТСД

Если по какой-либо причине подключение через Broadcast Intent и NativeAPI недоступно, рассмотрим альтернативные варианты работы:

  1. Режим эмуляции клавиатуры (Keyboard Wedge):

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

  2. Использование специализированных драйверов производителя:

    Большинство вендоров складского оборудования выпускают собственные сертифицированные фирмой «1С» драйверы. Как правило, они устанавливаются на Android в виде отдельного APK-приложения службы (сервиса) и интегрируются в БПО через соответствующий сертифицированный профиль оборудования.

  3. Встроенные мультимедийные средства платформы 1С:

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

    
    ПараметрыСканирования = Новый ПараметрыСканированияШтрихКода;
    ПараметрыСканирования.ИспользоватьАвтофокус = Истина;
    СредстваМультимедиа.ПоказатьСканированиеШтрихКодов("Отсканируйте ШК", ОписаниеОповещения, ПараметрыСканирования);
    

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

Таким образом, для стабильной работы сканера на ТСД в среде мобильного клиента 1С не требуется внедрять самописные компоненты в конфигуратор: достаточно обновить версию БПО в информационной базе, актуализировать клиентское приложение на терминале и настроить обмен данными через Broadcast Intent.

← На главную