Фирма 1С разработала Библиотеку подключаемого оборудования для мобильной платформы, однако нормального описания и примеров использования не предоставлено. В результате пришлось повозиться некоторое время, чтобы подключить Сканер штрих кодов к мобильному приложению на Андроид
Прежде всего идем на сайт 1С и скачиваем Библиотеку подключаемого оборудования для мобильной платформы.
Там прилагается конфигурация Библиотека подключаемого оборудования Демо.
Используя эту конфигурацию мне не удалось запустить Сканер штрих кодов в мобильном приложении на Андроид.
Пришлось писать работу со сканером штрихКодов без использования БСП
Прежде всего берем Макет "Драйвер1СУстройствоВводаNative" из Демо конфигурации и переносим его в ОбщиеМакеты нашей конфигурации.
Мы хотим использовать сканер ШтрихКодов на Андроид в режиме "BROADCАST", когда ловим сообщения которые генерируются сканером ТСД.
Заходим в ТСД на Андроиде в настройки сканера:
Настройки → ScanWedge Profiles → Default.
Устанавливаем параметры:
"Output via Intent" = Да
Смотрим параметры настройки сканера (они нам потребуются для настройки драйвера):
"Intent action" = android.intent.ACTION_DECODE_DATA
"Intent string extra" = barcode_string
В модуле приложения пишем:
//
//========= Модуль Приложения =======================
//
Перем глСканер Экспорт;
Процедура ПриНачалеРаботыСистемы()
ПодключитьСканерМобильноеПриложение();
КонецПроцедуры
Процедура ПодключитьСканерМобильноеПриложение()
ИмяДрайвера = "Драйвер1ССканерШтрихкода";
ИмяМакета = "ОбщийМакет." + ИмяДрайвера;
ОписаниеОшибки = "";
Попытка
Результат = ПодключитьВнешнююКомпоненту( ИмяМакета , "InputDevice", ТипВнешнейКомпоненты.Native);
Исключение
Результат = Ложь;
ОписаниеОшибки = ОписаниеОшибки();
Текст = "Ошибка подключения внешней компоненты """+ИмяМакета+"""!!!"+"
|" + ОписаниеОшибки;
Сообщить(Текст, СтатусСообщения.Важное);
Возврат;
КонецПопытки;
Попытка
глСканер = Новый ("AddIn.InputDevice.InputDevice");
Исключение
глСканер = Неопределено;
ОписаниеОшибки = ОписаниеОшибки();
Текст = "Ошибка создания компоненты """+ИмяДрайвера+"""!
|"+ОписаниеОшибки;
Сообщить(Текст, СтатусСообщения.Важное);
Возврат;
КонецПопытки;
// ==== Установка параметров Компоненты
глСканер.УстановитьПараметр("EquipmentType" , "УстройствоВвода"); // В параметрах драйвера этого нет, поэтому может быть не работает
глСканер.УстановитьПараметр("EventName" , "Штрихкод"); //Вероятнее всего это не используется.
глСканер.УстановитьПараметр("BluetoothDevice" , "BROADCAST"); // Broadcаst сообщения Android
глСканер.УстановитьПараметр("Prefix" , -1); // NONE
глСканер.УстановитьПараметр("Suffix" , 3338); // CRLF
глСканер.УстановитьПараметр("GSSymbolKey" , 7); // F8, заменяем GS на F8
// BROADCAST
Интент = "android.intent.ACTION_DECODE_DATA"; //Указано в настройках Сканера
ИнтентДанные = "barcode_string"; //Указано в настройках Сканера
глСканер.УстановитьПараметр("Action" , Интент);
глСканер.УстановитьПараметр("Extra" , ИнтентДанные);
глСканер.УстановитьПараметр("ExtraType" , "String");
глСканер.УстановитьПараметр("OutputDataType" , 0); // Строка
глСканер.УстановитьПараметр("LogType" , -1); // NONE
глСканер.УстановитьПараметр("LogFilePath" , "");
//==== Подключаем компоненту ======
IDParametr = ""; //Идентификатор устройства после подключения InputDevice#123213498554
Результат = глСканер.Подключить(IDParametr); // подключаем компоненту
НомерВерсии = глСканер.ПолучитьНомерВерсии();
ОписаниеУстройства = "";
глСканер.ПолучитьОписание(ОписаниеУстройства);
ПараметрыКомпонентыXML = ""; // Получаем XML документ описывающий возможные параметры Компоненты
глСканер.ПолучитьПараметры(ПараметрыКомпонентыXML);
Текст = "Драйвер сканера ШтрихКодов """+ ИмяДрайвера+"""
|Успешно подключен!";
Сообщить(Текст);
КонецПроцедуры
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Событие = "Штрихкод" Или Событие = "Barcode" Тогда
Событие = "ШтрихКод";
Источник = "Scaner";
КонецЕсли;
Оповестить(Событие, Данные, Источник);
КонецПроцедуры
В форме, где надо получать отсканированные ШтрихКод пишем:
//
// ===================== Форма Сканирования ===================
//
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Данные, Источник)
Если ИмяСобытия = "ШтрихКод" И ВводДоступен() Тогда
ШтрихКод = Данные;
Сообщить("Источник: "+Источник + " ИмяСобытия: "+ ИмяСобытия + " Данные: "+Данные);
КонецЕСли;
КонецЕсли;
КонецПроцедуры
Теперь сканер ШтрихКодов подключен и работает в Мобильном Приложении на Андроид
Добавление команды в общую форму отчета на БСП
Присоединение печатной формы в виде файла к объекту-основанию
ИР Кнопка "Сравнить" в окне "Выражение"
ИР Кнопка "Условие останова" в окне "Выражение"
ИР кнопки "Вертикаль" и "Горизонталь" окна "Тип элемента" редактора формы