Подключение терминала сбора данных (ТСД) на платформе Android к мобильному приложению 1С может показаться нетривиальной задачей на первый взгляд, но мы с вами разберем ее по шагам. Часто возникают сложности с передачей данных со сканера штрихкодов и считыванием нажатий аппаратных клавиш. Давайте выясним, как настроить эту связку, чтобы все работало как часы.
Мы рассмотрим подробнее, что необходимо сделать как на стороне самого ТСД, так и в мобильном приложении 1С, чтобы обеспечить стабильную и корректную работу.
Для успешной работы с ТСД нам потребуется выполнить ряд настроек непосредственно на устройстве. Это ключевой этап, поскольку именно ТСД будет генерировать события, которые мы затем будем перехватывать в 1С.
Выясним причину необходимости: Для перехвата событий, генерируемых аппаратной клавиатурой ТСД (физические кнопки, а не экранная клавиатура), нам нужен специальный механизм Android. Стандартные средства 1С напрямую не "видят" эти события. Здесь на помощь приходит служба специальных возможностей (Accessibility Service).
Пример реализации: Одним из распространенных решений является установка специализированного приложения-брокера, такого как AWMSDeviceBrokerService.apk. Это приложение разворачивает необходимый сервис, который мониторит системные события клавиатуры и преобразует их в широковещательные сообщения (Broadcast Intents), понятные внешней компоненте 1С.
Пошаговая активация сервиса:
Установите приложение: Загрузите и установите AWMSDeviceBrokerService.apk на ваш ТСД.
Активируйте в системных настройках: После установки перейдите в системное меню Android. Обычно это "Настройки" -> "Специальные возможности" (или "Accessibility"). Найдите установленный сервис, например, "AWMS:Device broker", и включите его.
Обратите внимание: На последних версиях Android процесс включения служб специальных возможностей может быть неочевидным и требовать дополнительных подтверждений из соображений безопасности. Будьте внимательны и следуйте системным подсказкам.
Результат: После активации этот сервис будет генерировать события, например, с идентификатором com.awms.message.keycode и полем keycode, которые содержат информацию о нажатых аппаратных клавишах.
Понимание механизма: Для того чтобы данные, считанные сканером ТСД (штрихкоды), попадали в 1С, сам ТСД должен быть настроен на отправку этих данных в виде широковещательных сообщений (Broadcast Intents). Это стандартный способ межпроцессного взаимодействия в Android.
Поиск настроек сканера: Местоположение этих настроек сильно зависит от производителя ТСД (Zebra, Honeywell, Newland, Urovo и т.д.) и версии Android. Обычно их можно найти в разделах "Настройки" -> "Сканирование", "DataWedge" (для Zebra), "ScanSettings" (для Honeywell) или в специализированных утилитах производителя.
Ключевые параметры для настройки Intent'ов:
Intent Action (Идентификатор события): Это уникальная строка, по которой внешняя компонента 1С будет "слушать" сообщения от сканера. Укажите здесь значение, которое будет ожидать ваша внешняя компонента. Примеры часто встречающихся значений:
com.honeywell.decode.action.DECODEcom.symbol.datawedge.api.ACTION_DATAWEDGEscan.rcv.message (как упомянуто в исходной теме)ru.1c.mobile.barcode (как пример собственного идентификатора)Важно: Убедитесь, что это значение совпадает с тем, которое будет настроено во внешней компоненте 1С.
Intent Category: Часто требуется указать категорию android.intent.category.DEFAULT.
Extra (Имя поля данных): Это имя поля, в котором будет передаваться сам отсканированный штрихкод. Примеры:
barcodeDataDATA_STRINGbarcode_dataТакже необходимо, чтобы это имя поля совпадало с тем, что ожидает внешняя компонента 1С.
Рекомендация по сбросу настроек: Если вы столкнулись с трудностями или не можете найти нужные настройки, иногда помогает сброс ТСД к заводским настройкам. Многие ТСД поставляются с предустановленными настройками, которые могут конфликтовать с нашей задачей. После сброса мы сможем настроить все "с чистого листа".
После подготовки ТСД, наша следующая задача — научить мобильное приложение 1С принимать и обрабатывать события, которые генерирует терминал. Это достигается с помощью внешней компоненты.
Мы разберем, как внешняя компонента (ВК) выступает в роли посредника. Она устанавливается в мобильное приложение 1С и выполняет следующие функции:
Мониторинг Broadcast Intents: ВК "слушает" операционную систему Android на предмет появления широковещательных сообщений с определенными "Action" и "Extra", которые мы настроили на ТСД.
Передача данных в 1С: Как только ВК перехватывает нужное событие (например, сканирование штрихкода или нажатие аппаратной клавиши), она инициирует вызов обработчика ОбработкаВнешнегоСобытия в мобильном приложении 1С, передавая ему полученные данные.
Для работы с внешней компонентой в 1С нам потребуется выполнить ее подключение и настройку параметров.
Подключение компоненты: В коде мобильного приложения 1С мы сначала подключаем внешнюю компоненту. Обычно это делается с помощью метода Подключить() или аналогичного, предоставляемого компонентой.
Получение параметров компоненты: Чтобы понять, какие параметры поддерживает наша ВК и как ее правильно настроить, мы можем запросить у нее список возможных параметров. Это очень полезный шаг для отладки и понимания работы компоненты.
Рассмотрим пример кода:
ПараметрыКомпонентыXML = "";
// Предполагаем, что 'глСканер' - это глобальная переменная,
// в которой хранится объект внешней компоненты.
// Получаем XML документ, описывающий возможные параметры Компоненты.
глСканер.ПолучитьПараметры(ПараметрыКомпонентыXML);
// Теперь переменная ПараметрыКомпонентыXML будет содержать XML-строку
// с описанием всех настроек. Мы можем проанализировать ее,
// чтобы узнать, какие Action и Extra она ожидает.
Установка параметров компоненты: После того как мы выяснили, какие параметры нам нужно задать (на основе настроек ТСД и информации от компоненты), мы передаем их ВК. Это делается с помощью метода УстановитьПараметры().
Мы проанализируем, какие параметры необходимо передать:
ТипСобытия: Указываем BROADCAST, поскольку мы работаем с широковещательными сообщениями Android.Action: Здесь мы указываем тот же "Intent Action", который был настроен на ТСД для сканера или который генерируется сервисом для клавиатуры (например, com.awms.message.keycode или scan.rcv.message).Extra: Имя поля, в котором ВК должна искать данные штрихкода или код нажатой клавиши (например, barcodeData или keycode).ExtraType: Обычно String, так как штрихкоды и коды клавиш передаются в виде строк.BluetoothDevice, если ТСД подключается через Bluetooth.Посмотрим на пример кода установки параметров:
// Создаем соответствие для хранения параметров
ПараметрыДляКомпоненты = Новый Соответствие();
// Общие параметры для работы с Broadcast Intents
ПараметрыДляКомпоненты.Вставить("ТипСобытия", "BROADCAST");
// Параметры для перехвата событий аппаратной клавиатуры
ПараметрыДляКомпоненты.Вставить("ActionКлавиатуры", "com.awms.message.keycode");
ПараметрыДляКомпоненты.Вставить("ExtraКлавиатуры", "keycode");
ПараметрыДляКомпоненты.Вставить("ExtraTypeКлавиатуры", "String");
// Параметры для перехвата событий сканера штрихкодов
// (должны соответствовать настройкам на ТСД!)
ПараметрыДляКомпоненты.Вставить("ActionСканера", "scan.rcv.message"); // Пример из форума
// ПараметрыДляКомпоненты.Вставить("ActionСканера", "com.honeywell.decode.action.DECODE"); // Пример для Honeywell
ПараметрыДляКомпоненты.Вставить("ExtraСканера", "barcodeData");
ПараметрыДляКомпоненты.Вставить("ExtraTypeСканера", "String");
// Устанавливаем параметры внешней компоненте
глСканер.УстановитьПараметры(ПараметрыДляКомпоненты);
// После установки параметров, запускаем мониторинг событий
глСканер.НачатьМониторингСобытий();
Обработка внешнего события в 1С: После того как ВК перехватила событие, она вызывает процедуру ОбработкаВнешнегоСобытия в вашем мобильном приложении 1С. Здесь мы будем получать данные и выполнять необходимую логику.
Рассмотрим структуру этого обработчика:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
// Источник - обычно имя внешней компоненты
// Событие - строка, идентифицирующая тип события (например, "Barcode", "Keyboard")
// Данные - строка, содержащая отсканированный штрихкод или код клавиши
Если Источник = "ПодключаемоеОборудование" Тогда // Или другое имя вашей компоненты
Если Событие = "Barcode" Тогда
// Здесь Данные содержат отсканированный штрихкод
Сообщить("Отсканирован штрихкод: " + Данные);
// Добавьте свою логику обработки штрихкода
ИначеЕсли Событие = "Keyboard" Тогда
// Здесь Данные содержат код нажатой аппаратной клавиши
Сообщить("Нажата клавиша с кодом: " + Данные);
// Добавьте свою логику обработки нажатий клавиш
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Важно: Проанализируйте, какие именно значения Событие и Данные приходят от вашей конкретной внешней компоненты. Для этого используйте отладчик 1С.
После всех настроек нам необходимо убедиться, что все работает корректно. Этот этап критически важен для выявления и устранения возможных проблем.
Использование тестовых приложений Android: Существуют специальные утилиты для Android (например, упомянутое в теме форума тестовое приложение от AWMS), которые помогают отладить работу с событиями. Они показывают, какие коды клавиш генерируются при нажатии и какие данные сканирования отправляются с каким идентификатором события (Intent Action). Поиграйтесь с таким приложением, чтобы убедиться, что ТСД правильно настроен и генерирует ожидаемые Broadcast Intents.
Отладка в 1С: Используйте стандартный отладчик 1С для проверки, как внешняя компонента перехватывает события и какие именно данные передает в процедуру ОбработкаВнешнегоСобытия. Установите точки останова и проследите за значениями параметров Источник, Событие и Данные.
Устранение "кривых настроек": Как было упомянуто в теме, при некорректных настройках ТСД или внешней компоненты можно получить несколько событий на одно действие (например, одновременно событие сканера и событие клавиатуры при сканировании). Внимательно сверяйте "Intent Action" и "Extra" на ТСД с параметрами, которые вы передаете внешней компоненте в 1С. Убедитесь, что нет дублирующих или конфликтующих настроек.
Мы с вами подробно разобрали процесс подключения Android ТСД к мобильному приложению 1С. Как мы выяснили, успешная интеграция требует внимания к деталям и понимания механизмов взаимодействия:
ОбработкаВнешнегоСобытия.Следуя этим шагам и используя инструменты отладки, вы сможете добиться стабильной и эффективной работы вашего ТСД с мобильным приложением 1С. Удачи!
← К списку