Как настроить сканирование штрихкодов на ТСД Zebra для мобильного приложения 1С через БПО?

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

При работе с мобильными устройствами на базе Android, особенно с профессиональными терминалами сбора данных (ТСД) марки Zebra, разработчики часто сталкиваются с проблемой: драйвер установлен, устройство видит сканер, но данные в 1С не поступают. Рассмотрим подробно, как организовать взаимодействие между системной утилитой DataWedge и Библиотекой подключаемого оборудования (БПО) 1С для мобильных приложений, используя наиболее стабильный механизм — Intent.

Понимание механизмов передачи данных

Прежде чем приступать к настройкам, разберем, почему стандартный метод «эмуляции клавиатуры» (Keystroke) не всегда подходит для профессиональной автоматизации. При эмуляции клавиатуры сканер просто «печатает» символы в активное поле. Это неудобно, так как требует фокуса на конкретном элементе интерфейса. Механизм Intent (намерения) работает иначе: система Android рассылает широковещательное сообщение, которое драйвер 1С «слушает» в фоновом режиме. Это позволяет корректно обрабатывать штрихкоды даже в тех случаях, когда на экране нет активного поля ввода.

Шаг 1. Настройка профиля в Zebra DataWedge

Для начала проанализируем настройки на самом терминале Zebra. Нам необходимо создать или отредактировать профиль, который будет отвечать за передачу данных именно в наше мобильное приложение.

  1. Откроем приложение DataWedge на ТСД.
  2. Создадим новый профиль (например, с именем 1C_Scanner) или выберем существующий (обычно это Profile0, но лучше создать отдельный).
  3. Зайдем в пункт Associated Apps. Здесь нужно выбрать пакет вашего мобильного приложения 1С (обычно это com.e1c.mobile.client или уникальное имя, заданное при сборке). Это гарантирует, что настройки сработают только тогда, когда запущена 1С.
  4. Найдем раздел Keystroke output и снимем галочку Enabled. Это критически важно, чтобы данные не дублировались и не мешали работе интерфейса.
  5. Найдем раздел Intent output и установим галочку Enabled.
  6. В поле Intent delivery выберем значение Broadcast intent.
  7. Запомним или установим свои значения для полей:
    • Intent action: например, com.symbol.datawedge.ACTION или com.dwexample.ACTION.
    • Intent category: можно оставить пустым или указать android.intent.category.DEFAULT.

Шаг 2. Настройка драйвера в мобильной 1С

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

Проанализируем сопоставление полей:

  1. Идентификатор события (Intent Action): впишем сюда ровно то же самое значение, которое мы указали в DataWedge (например, com.dwexample.ACTION). Помним, что регистр букв важен!
  2. Идентификатор категории события: если в DataWedge поле было пустым, здесь также оставляем пустоту. Если указывали категорию, вписываем ее (например, android.intent.category.DEFAULT).
  3. Идентификатор поля данных (Intent Extra): это ключ, по которому 1С вытаскивает строку штрихкода из сообщения Android. Для устройств Zebra стандартным является значение: com.symbol.datawedge.data_string
  4. Тип данных: установим значение String.

Если в форме настройки драйвера в 1С присутствуют поля Standard android.intent.action и Standard Intent Extra, которые предлагают выбор из списка, выберем ACTION_MAIN или введем пользовательские значения вручную, если список не содержит нужного варианта.

Шаг 3. Обработка специфических форматов и кодов маркировки

Разберем ситуацию, когда штрихкод передается, но он некорректен (например, отсутствует контрольный символ в EAN13). ТСД Zebra по умолчанию могут отсекать часть данных. Чтобы это исправить, в настройках DataWedge внутри раздела Decoders (в подразделе EAN13) найдите опцию Check digit и убедитесь, что она включена.

Если мы работаем с маркировкой (DataMatrix), нам может потребоваться получение «сырых» данных для корректного разбора спецсимволов (FNC1). В этом случае в 1С вместо data_string иногда используют другой ключ:

com.symbol.datawedge.decode_data

Это поле передает штрихкод в виде массива байтов, что позволяет 1С более точно идентифицировать разделители в кодах GS1.

Шаг 4. Оптимизация работы Android (Android 8.1 и выше)

Проанализируем поведение системы в режиме ожидания. На Android 8.1 и новее агрессивные настройки энергосбережения могут «усыплять» процессы Intent-фильтров. Если сканирование перестает работать после выхода устройства из сна, выполним следующие действия:

  1. Зайдем в настройки Android — Приложения и уведомления.
  2. Выберем Специальный доступ — Оптимизация батареи.
  3. Найдем в списке приложение 1С и установим для него режим Не оптимизировать.

Пример программной настройки (для разработчиков)

Если вы самостоятельно дорабатываете мобильное приложение и не используете типовую форму БПО, важно понимать, как программно инициализируется слушатель событий. Рассмотрим концептуальную схему инициализации:


// Пример логики настройки Intent-фильтра в коде драйвера
ИнтентФильтр = Новый IntentFilter();
ИнтентФильтр.addAction("com.dwexample.ACTION"); // То самое действие из DataWedge
ИнтентФильтр.addCategory("android.intent.category.DEFAULT");

// Регистрация приемника для прослушивания сканера
AndroidПриемник = Новый BroadcastReceiver(ОбработкаСобытияСканирования);
КонтекстПриложения.registerReceiver(AndroidПриемник, ИнтентФильтр);

В самой функции ОбработкаСобытияСканирования мы будем извлекать данные по ключу:


Штрихкод = Интент.getStringExtra("com.symbol.datawedge.data_string");
ТипШтрихкода = Интент.getStringExtra("com.symbol.datawedge.label_type");
// Далее передаем Штрихкод в логику 1С

Проверка результата

Чтобы окончательно убедиться, что всё «взлетело», выполним простой тест. Откроем в 1С форму, готовую к приему штрихкодов (например, подбор товаров). При нажатии на кнопку сканирования на корпусе Zebra, лазер должен активироваться, а после считывания в 1С должно сработать событие ВнешнееСобытие. Если лазер срабатывает, но в 1С ничего не происходит — проверьте еще раз соответствие строк Action и Extra. Они должны совпадать до последнего знака.

Рассмотренный метод является наиболее надежным для промышленной эксплуатации, так как он полностью изолирует процесс сканирования от пользовательского интерфейса, исключая ошибки ввода «не в то поле».

← На главную