При разработке мобильных приложений на платформе 1С:Предприятие одной из самых трудоемких задач является корректная интеграция торгового оборудования, в частности терминалов сбора данных (ТСД). Модель АТОЛ Smart.Droid имеет свои специфические особенности настройки, которые отличают ее от более современных моделей, таких как Smart.Lite. Основная проблема часто заключается в том, что сканер штрихкода работает в системных приложениях, но «отказывается» передавать данные в мобильное приложение 1С. Разберем по шагам, как наладить связь между «1С:Библиотекой подключаемого оборудования для мобильных приложений» (БПО) и данным устройством.
Проанализируем ситуацию: если на устройстве АТОЛ Smart.Lite сканер работает корректно, а на Smart.Droid данные не поступают, причина кроется в способе передачи данных от сканирующего модуля в операционную систему Android. Существует два основных режима работы сканера:
ВнешнееСобытие при таком режиме, что делает невозможной автоматизированную обработку штрихкодов в коде.ОбработкаВнешнегоСобытия. Это наиболее правильный и профессиональный способ интеграции.Выясним причину: в Smart.Droid по умолчанию часто включена именно эмуляция клавиатуры или настроены специфические параметры Intent, которые драйвер 1С не может распознать автоматически.
Рассмотрим процесс подготовки самого устройства. Прежде чем настраивать 1С, необходимо сконфигурировать системное приложение, управляющее сканером (обычно оно называется Scanner, Scan Settings или Barcode Utility).
Keyboard Emulation на Intent Output или Broadcast.Action и Extra.Для модели АТОЛ Smart.Droid стандартными значениями являются:
com.android.serial.barcode.decodebarcode_stringЗапомним эти значения, так как их нужно будет в точности перенести в настройки 1С.
Теперь перейдем к настройке в самой информационной базе. Мы предполагаем, что вы уже объединили свою конфигурацию с 1С:БПО для мобильных приложений. Выполним следующие действия в интерфейсе приложения на ТСД:
В открывшемся окне настроек драйвера крайне важно правильно заполнить параметры связи:
com.android.serial.barcode.decode.barcode_string.Важный нюанс: Если данные все еще не приходят, попробуйте альтернативные настройки, которые встречаются в некоторых ревизиях Smart.Droid: com.atid.service.ACTION_BARCODE_DATA для Action и barcode_data для Extra.
Разберем, как должен выглядеть программный код в форме вашего приложения, чтобы перехват события работал корректно. Посмотрим на пример реализации в модуле формы. Нам необходимо подключить оборудование при открытии и обеспечить обработку события.
В процедуре ПриОткрытии или ПриСозданииНаСервере мы должны инициировать подключение устройства через механизмы БПО. Проанализируем типичный код:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Инициализация механизма БПО
ПоддерживаемыеТипы = Новый Массив;
ПоддерживаемыеТипы.Добавить("СканерШтрихкода");
ПараметрыПодключения = Новый Структура;
МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(ЭтаФорма,
ПоддерживаемыеТипы,
ПараметрыПодключения);
КонецПроцедуры
Теперь рассмотрим обработку самого события сканирования. Когда сканер сработает, платформа вызовет процедуру ВнешнееСобытие. Выясним, как правильно извлечь данные:
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Источник обычно соответствует имени устройства в БПО
// Событие для сканера обычно "Barcode"
ПеременнаяДанныеСканера = "";
Если МенеджерОборудованияКлиент.ИсточникСобытияСканер(Источник) Тогда
// Извлекаем штрихкод из данных
МенеджерОборудованияКлиент.ПолучитьДанныеСканера(Данные, ПеременнаяДанныеСканера);
// Здесь вызываем вашу бизнес-логику
ОбработатьПолученныйШтрихкод(ПеременнаяДанныеСканера);
КонецЕсли;
КонецПроцедуры
Если после всех настроек сканер так и не заработал, воспользуемся проверенным методом отладки: запустим демонстрационную базу, которая идет в составе 1С:БПО. В ней реализованы все необходимые механизмы тестирования. Если в «демке» сканер работает, значит, проблема в коде вашей формы (например, неверно указан Источник или форма не подписана на внешние события).
Посмотрим на алгоритм проверки в демо-базе:
Intent Action и Extra, которые мы определили ранее.В ситуациях, когда стандартные имена Action не подходят, рекомендуем использовать сторонние утилиты для Android, такие как Intent Interceptor. Установите ее на ТСД, запустите режим перехвата и нажмите кнопку сканирования. Утилита покажет точное системное имя сообщения и ключи данных, которые генерирует прошивка вашего АТОЛ Smart.Droid. Эти данные останется просто скопировать в настройки драйвера 1С:Сканер штрихкода (Android).
Резюмируем: Основной секрет настройки АТОЛ Smart.Droid заключается в точном совпадении параметров Broadcast Intent в настройках Android-утилиты и в настройках драйвера 1С. Помните, что регистр букв в именах Action и Extra имеет значение.