Как настроить работу ТСД Zebra через DataWedge в мобильном клиенте 1С?

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

Интеграция мобильных устройств сбора данных (ТСД) в экосистему 1С — задача, с которой сталкивается практически каждый разработчик складских или логистических приложений. ТСД фирмы Zebra являются стандартом индустрии, и их основной инструмент управления — DataWedge. Однако при попытке связать мобильный клиент 1С и API DataWedge через систему интентов часто возникают сложности. Рассмотрим подробно, как заставить этот «каменный цветок» ожить, и разберем типичные ошибки при настройке.

Основы взаимодействия: использование Intent API

Для управления аппаратным сканером в устройствах Zebra используется механизм Android Intent. В контексте 1С это реализуется через объект ЗапускПриложенияМобильногоУстройства. Проанализируем типичный пример кода, который часто вызывает затруднения у разработчиков при попытке программно отключить или включить плагин сканера:


ИнтентБлокировки = Новый ЗапускПриложенияМобильногоУстройства;
ИнтентБлокировки.Действие = "com.symbol.datawedge.api.ACTION";
ИнтентБлокировки.ДополнительныеДанные.Добавить("com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN", "DISABLE_PLUGIN");
Результат = ИнтентБлокировки.Запустить(Истина);
Сообщить(Результат);

В этой ситуации метод Запустить(Истина) может возвращать 0, но фактически действие не выполняется. Выясним причину: DataWedge ожидает широковещательные сообщения (Broadcast Intents), и для корректной отработки команды необходимо правильно настроить профиль самого приложения на ТСД.

Настройка профиля DataWedge на устройстве

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

  1. Откройте приложение DataWedge на ТСД Zebra.
  2. Создайте новый профиль (например, с именем 1C_Mobile_Inventory).
  3. Свяжите профиль с приложением 1С. Для этого в пункте Associated Apps выберите пакет com.e1c.mobile (или ID вашей сборки мобильного приложения).
  4. В разделе Barcode Input убедитесь, что плагин включен (Enabled).
  5. Перейдите в раздел Intent Output:
    • Установите флаг Enabled.
    • В поле Intent Action укажите уникальную строку, например ru.mycompany.scan.ACTION. Эту же строку мы будем использовать в 1С для фильтрации событий.
    • ВАЖНО: В поле Intent Delivery выберите значение Broadcast Intent. Это критично, так как другие режимы могут приводить к сворачиванию 1С при каждом сканировании.

Решение проблемы с параметром Category

Одной из самых коварных проблем при интеграции является использование категорий интентов. Проанализируем опыт разработчиков: во многих инструкциях и примерах для Android указывается, что необходимо передавать android.intent.category.DEFAULT. Однако практика показывает, что на многих моделях Zebra (например, TC25 с Android 7) наличие этого параметра блокирует передачу данных в 1С.

Вывод: При настройке профиля DataWedge в разделе Intent Output поле Intent Category следует оставить пустым. Если вы используете внешнюю компоненту для перехвата событий, также убедитесь, что в фильтрах не прописана категория по умолчанию.

Получение данных в 1С: ОбработкаВнешнегоСобытия

После того как сканер настроен на отправку Broadcast Intent, нам нужно научить 1С принимать эти данные. Рассмотрим основные подходы:

Использование внешних компонент (ВК)

Самый надежный способ для старых версий платформы — использование внешней компоненты для перехвата Android-интентов. Такая компонента подписывается на системные сообщения и транслирует их в стандартное событие 1С ОбработкаВнешнегоСобытия.

При получении данных из DataWedge следует обращать внимание на ключи в экстра-данных интента:

Нативная поддержка в новых версиях платформы

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

  1. В настройках оборудования в 1С выберите указанный драйвер.
  2. В параметрах драйвера укажите Action, который вы прописали в DataWedge (например, ru.mycompany.scan.ACTION).
  3. Платформа сама подпишется на нужные интенты и будет передавать данные в стандартные механизмы БПО без написания сложного программного кода на стороне 1С.

Программное управление лучом сканера

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


ИнтентСканирования = Новый ЗапускПриложенияМобильногоУстройства;
ИнтентСканирования.Действие = "com.symbol.datawedge.api.ACTION";
ИнтентСканирования.ДополнительныеДанные.Добавить("com.symbol.datawedge.api.SOFT_SCAN_TRIGGER", "START_SCANNING");
ИнтентСканирования.Запустить(Ложь);

Для остановки луча используется параметр STOP_SCANNING. Также полезно знать о командах SUSPEND_PLUGIN и RESUME_PLUGIN. В отличие от полной деактивации плагина (DISABLE_PLUGIN), приостановка работает мгновенно и не требует времени на повторную инициализацию оборудования, что повышает комфорт работы пользователя.

Советы по отладке

Если данные все равно не приходят, проанализируем ситуацию с помощью сторонних утилит. Рекомендуется установить на ТСД приложение типа Intent Interceptor. Это позволит увидеть:

Помните, что использование режима Keystroke Output (эмуляция клавиатуры) — это тупиковый путь для профессиональной разработки. Он медленный, зависит от фокуса ввода и не позволяет обрабатывать типы штрихкодов. Настройка через Intent требует больше времени на начальном этапе, но обеспечивает стабильную и быструю работу складского приложения.

← На главную