При внедрении мобильных решений на складе часто возникает ситуация, когда на одной модели ТСД (например, Newland) всё работает «из коробки», а на другой (например, M3 Mobile SL20) мобильный клиент 1С запускается, но игнорирует нажатие кнопки сканирования. Разберем подробно, как настроить взаимодействие между «железом» Android-устройства и платформой 1С (поможет мобильное рабочее место кладовщика на ТСД), чтобы данные штрихкода попадали в базу корректно.
Проанализируем механику работы мобильного устройства. ТСД может передавать считанные данные в приложения двумя основными способами:
ВнешнееСобытие.Для профессиональной работы со складским ПО всегда следует выбирать второй вариант, так как он позволяет обрабатывать штрихкоды в фоновом режиме, независимо от того, где находится курсор.
Посмотрим на настройки самого ТСД. На устройствах M3 Mobile SL20 за работу сканера отвечает предустановленное приложение (обычно оно называется Scan Emulation или находится в разделе Settings -> Scan Settings). Выполним следующие шаги для перевода устройства в режим вещания:
Keyboard или KeyStroke установим Intent Broadcast.com.m3mobile.scanner.action.BARCODE или android.intent.ACTION_DECODE_DATA.com.m3mobile.scanner.extra.DATA или просто data.Важный нюанс: Обязательно проверим настройки префиксов и суффиксов. Если в настройках ТСД включена автоматическая вставка символа переноса строки (Enter) или табуляции, это может «сбивать» обработчик 1С. Рекомендуется отключить все лишние символы в настройках утилиты сканирования.
Теперь рассмотрим, что нужно сделать на стороне конфигурации 1С. Чтобы мобильный клиент мог подхватить событие от сканера, устройство должно быть опознано системой как рабочее место с подключенным оборудованием.
Проанализируем ситуацию, когда на складе используется большое количество ТСД (например, 30 штук). Для правильной работы бизнес-логики нам нужно не просто получить штрихкод, но и понять, какой именно терминал его прислал. Разберем, как идентифицировать ТСД программно.
Используем метод СредстваТелефонии.ПолучитьИдентификаторКлиента() для получения уникального ID устройства. Это позволит нам привязать конкретный физический ТСД к «Рабочему месту» в базе 1С.
Рассмотрим пример кода, который можно разместить в модуле управляемого приложения для инициализации оборудования:
Процедура ПриНачалеРаботыСистемы()
#Если МобильныйКлиент Тогда
ИдентификаторУстройства = СредстваТелефонии.ПолучитьИдентификаторКлиента();
// Логика поиска или создания рабочего места по ИдентификаторУстройства
УстановитьСоответствиеТСД(ИдентификаторУстройства);
#КонецЕсли
КонецПроцедуры
Когда настройки ТСД (Intent Action) и настройки 1С синхронизированы, платформа начнет генерировать событие ВнешнееСобытие (удобно через контроль складских операций с помощью сканера или ТСД). Нам нужно правильно его обработать в форме документа или обработки.
Посмотрим на пример обработки полученных данных:
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Параметр "Источник" обычно содержит имя драйвера, например "BarcodeScanner"
// Параметр "Данные" содержит сам считанный штрихкод
Если Событие = "Barcode" Или Событие = "Штрихкод" Тогда
Штрихкод = СокрЛП(Данные);
ОбработатьСканирование(Штрихкод);
КонецЕсли;
КонецПроцедуры
Если ваша конфигурация построена на базе БПО, проверьте, установлен ли драйвер «1С:Сканер штрихкода (NativeApi)». В мобильном клиенте этот драйвер является универсальным интерфейсом.
Разберем последовательность действий в интерфейсе 1С:
Если после всех манипуляций данные все равно не приходят, проанализируем следующие моменты:
Package Name. Это позволит использовать режим Intent только в 1С, сохраняя режим клавиатуры для других нужд.Таким образом, для успешного подключения M3 Mobile SL20 необходимо свести настройки аппаратной части (Intent Action) и программной части 1С (Рабочее место и БПО) к единому стандарту вещания данных.