Использование в Мобильном Приложении (Андроид) сканера ШтрихКодов с компонентой Драйвер1СУстройствоВводаNative от 1С

Фирма 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";								
	КонецЕсли;	
	
	Оповестить(Событие, Данные, Источник);
КонецПроцедуры

В форме, где надо получать отсканированные ШтрихКод пишем:

//
// =====================  Форма Сканирования ===================
//
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Данные, Источник)
	
	Если ИмяСобытия = "ШтрихКод" И ВводДоступен() Тогда		
		ШтрихКод = Данные;		
		Сообщить("Источник: "+Источник + " ИмяСобытия: "+ ИмяСобытия + " Данные: "+Данные);
		КонецЕСли;		
	КонецЕсли;
КонецПроцедуры

Теперь сканер ШтрихКодов подключен и работает в Мобильном Приложении на Андроид

0

Еще в "Все"

Добавление команды в общую форму отчета на БСП

Присоединение печатной формы в виде файла к объекту-основанию

ИР Кнопка "Сравнить" в окне "Выражение"

ИР Редактировать таблицу

ИР Найти в окнах

ИР Кнопка "Условие останова" в окне "Выражение"

ИР кнопки "Вертикаль" и "Горизонталь" окна "Тип элемента" редактора формы

ИР Кнопка "Список" в окне <Коллекция>

ИР Редактировать компоновку

ИР Кнопка "Из результатов поиска" в окне "Точки останова"

Модератору