Интеграция мобильного терминала сбора данных (ТСД) с мобильной платформой 1С — задача, часто сопровождающаяся трудностями при установке драйверов и настройке оповещений. Рассмотрим ситуацию на примере популярной модели CipherLab RK25 и выясним, как заставить устройство «пикать», а приложение — корректно обрабатывать считанные данные через HTTP-сервисы или внутреннюю логику конфигурации.
Одной из первых преград, с которой сталкиваются разработчики, является ошибка «Не удалось установить драйвер устройства» при попытке подключения в режиме отладки через мобильную платформу 1С. Проанализируем причину: начиная с современных версий Android, политика безопасности ограничивает выполнение бинарного кода из временных папок, куда платформа пытается подгрузить внешнюю компоненту (драйвер) из XML-описания конфигурации.
Рассмотрим правильный подход к решению этой проблемы. Выясним, что наиболее стабильным методом работы является сборка собственного APK-файла. При сборке мобильного приложения через сборщик мобильных приложений 1С, внешние компоненты (библиотеки формата .so) включаются непосредственно в состав установочного пакета и размещаются в системных директориях приложения (/lib/). Это позволяет операционной системе Android доверять библиотеке и успешно инициализировать драйвер.
Если вы столкнулись с невозможностью подключения драйвера в режиме «1С:Предприятие» на мобильном устройстве (при подключении к серверу по HTTP), попробуйте собрать отладочный APK. Как показывает практика, после установки собранного приложения драйверы 1С (NativeApi) начинают устанавливаться без ошибок.
Даже если драйвер установлен успешно, часто возникает ситуация, когда при сканировании в приложении ничего не происходит. Проанализируем ситуацию: по умолчанию многие ТСД настроены на режим Key Emulation (эмуляция клавиатуры). В этом режиме сканер просто «печатает» символы в активное поле ввода. Для профессиональной работы в 1С нам необходимо использовать механизм Android Intent, который позволяет приложению перехватывать событие сканирования в фоновом режиме.
Разберем по шагам настройку системного приложения Reader Config на ТСД CipherLab:
com.cipherlab.barcode.general. Запомните или запишите это значение — оно понадобится в 1С.com.cipherlab.barcode.data.Таким образом, мы переводим сканер из режима «печаталки» в режим вещания системных сообщений, которые наше приложение 1С сможет «услышать».
Теперь перейдем к настройке внутри самой 1С. Рекомендуется использовать бесплатный драйвер «1С:Сканер штрихкода (NativeApi)», входящий в состав Библиотеки Подключаемого Оборудования (БПО). Рассмотрим параметры, которые необходимо указать в настройках драйвера:
com.cipherlab.barcode.general).com.cipherlab.barcode.data).UTF-8.Проанализируем важность этих настроек: если хотя бы один символ в названии Action будет отличаться, событие ОбработкаВнешнегоСобытия не будет вызвано, так как приложение не поймет, что пришедший сигнал предназначен именно для него.
Чтобы приложение реагировало на сканирование, необходимо правильно настроить обработку событий в модуле управляемого приложения и в формах. Рассмотрим пример кода, который обеспечивает передачу данных от драйвера к логике приложения (для быстрой генерации каркаса кода подойдет Консоль кода + ИИ-помощник (GigaChat)).
В модуле приложения пропишем перехват внешнего события:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
// Подготовим структуру данных для менеджера оборудования
ОписаниеСобытия = Новый Структура();
ОписаниеСобытия.Вставить("Источник", Источник);
ОписаниеСобытия.Вставить("Событие", Событие);
ОписаниеСобытия.Вставить("Данные", Данные);
// Передаем управление в специализированный общий модуль (БПО)
МенеджерОборудованияКлиент.ОбработатьСобытиеОтУстройства(ОписаниеСобытия);
КонецПроцедуры
В общем модуле МенеджерОборудованияКлиент (или его аналоге в вашей конфигурации) реализуем оповещение всех открытых форм:
Процедура ОбработатьСобытиеОтУстройства(ОписаниеСобытия) Экспорт
Событие = ОписаниеСобытия.Событие;
Данные = ОписаниеСобытия.Данные;
Источник = ОписаниеСобытия.Источник;
// Генерируем оповещение, которое «поймают» формы
Оповестить(Событие, Данные, "ПодключаемоеОборудование");
КонецПроцедуры
В самой форме (например, в документе «Приемка»), где требуется обработка штрихкода, добавим обработчик оповещения:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" Тогда
// Здесь вызываем вашу логику поиска товара или HTTP-запрос
ОбработатьШтрихкод(Параметр);
КонецЕсли;
КонецПроцедуры
Рассмотрим еще несколько важных моментов, которые помогут избежать ошибок при внедрении:
adb logcat. Подключите ТСД к компьютеру и посмотрите, какой именно Intent рассылает система при нажатии кнопки сканирования. Вы увидите строку вида Broadcast: Intent { act=com.cipherlab.barcode.general ... }. Это поможет точно определить правильное имя Action.Проанализировав все шаги, мы видим, что ключ к успеху кроется в связке «Собранный APK + Настроенный Intent в Reader Config + Соответствие Action в настройках 1С». Следуя этой инструкции, вы сможете интегрировать ТСД CipherLab с мобильным приложением 1С эффективно и без лишних затрат на покупку драйверов.