Каталог решений - Мобильный клиент для сканирования QR-кодов и штрихкодов и отправки их на сервер

Мобильный клиент для сканирования QR-кодов и штрихкодов и отправки их на сервер

Мобильный клиент для сканирования QR-кодов и штрихкодов и отправки их на сервер

В наличии

В статье рассмотрены варианты реализации мобильного сканера.

Категория:

Описание

Поставлена задача по занесению данных в базу 1С по QR-кодам через мобильное устройство. От мобильного устройства требуется только распознать QR-код и отправить его на сервер. Все остальные вопросы должны решаться на сервере. Такой подход сводит к минимуму человеческий фактор и значительно ускоряет весь процесс по передаче данных.

Анализ вариантов показывает три возможных решения:

  1. Использование существующего мобильного приложения
  2. Создание собственного мобильного приложения на 1С
  3. Совмещенный вариант

Рассмотрим каждый подробнее.

 

1. Использование существующего мобильного приложения.

Анализ рынка в магазинах приложений показывает, что большинство существующих сканеров распознают QR-коды плохо, и лишь отдельные делают это на удивление моментально. А умеют отправлять данные на сервер — единицы. Рассмотрим реализацию на примере одного такого приложения: "Штрихкод Коммандер"

Доступно в Google Play

 

Подготовка серверной части

Обмен с мобильным приложением "Штрихкод Коммандер" выполняется через http-сервис. Поэтому на сервере в 1С создаем метод http-сервиса и описываем алгоритм обработки полученного QR-кода. Работа с http-сервисами не нова, поэтому комментарии опустим. Пример:

      

 

                 

Функция ШаблонURL1Метод1(Запрос)
	
	МассивОтветов = Новый Массив;	
	Для каждого ОдинКод Из ПреобразоватьJSONвДанные(Запрос.ПолучитьТелоКакСтроку()) Цикл
		МассивОтветов.Добавить(ОбработатьШтрихКод(ОдинКод));
	КонецЦикла;	

	Возврат СформироватьОтветHTTP(МассивОтветов);

КонецФункции

Функция ПреобразоватьJSONвДанные(СтрокаJSON) 	
	
	мЧтениеJSON = Новый ЧтениеJSON;	
	мЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	Результат = ПрочитатьJSON(мЧтениеJSON);
	мЧтениеJSON.Закрыть();	
	Возврат Результат;
	
КонецФункции

Функция ОбработатьШтрихКод(ОдинКод) 
	
	Если ОдинКод.id = 1 Тогда 		
		Возврат СформироватьОтвет(ОдинКод.id, "Аутентификация успешно пройдена.");
		
	ИначеЕсли Сред(ОдинКод.barcode, 1, 4) = "Демо" Тогда 		
		Возврат СформироватьОтвет(ОдинКод.id, "", 1,"Демо-режим", 3);
	КонецЕсли;
	
	// Обработка полученного штрихкода (ОдинКод.barcode) и описания (ОдинКод.description)
	
	// Создание записи в журнале регистрации (при необходимости)
	ЗаписьЖурналаРегистрации("HTTPСервис1.ШаблонURL1", УровеньЖурналаРегистрации.Ошибка, , ОдинКод.barcode, "Описание ошибки");
	
	// Сообщение результатов обработки
	Возврат СформироватьОтвет(ОдинКод.id, "Загрузка успешно завершена", 0,"Пример заголовока", 6);
	
КонецФункции

Функция СформироватьОтвет(Идентификатор, Отчет, НомерИконки=0, Заголовок="", ЦветИконки=0, Фото="")
	
	Запись = Новый Структура;
	Запись.Вставить("result_id", 		Идентификатор);
	Запись.Вставить("result_title", 	Заголовок);
	Запись.Вставить("result_color", 	ЦветИконки);
	Запись.Вставить("result_icon", 		НомерИконки);	
	Запись.Вставить("result_report", 	Отчет);
	Запись.Вставить("result_image", 	Фото);
	Возврат Запись;	
	
КонецФункции

Функция СформироватьОтветHTTP(МассивОтветов)
	
	мЗаписьJSON = Новый ЗаписьJSON;
	мЗаписьJSON.ПроверятьСтруктуру = Ложь;
	мЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON());
	ЗаписатьJSON(мЗаписьJSON, МассивОтветов);
	СтрокаJSON = мЗаписьJSON.Закрыть(); 
		
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	Возврат Ответ;
	
КонецФункции

Проверяем, что брандмауэр и/или антивирус не мешают подключению к сервису.

 

Подготовка клиентской части

Устанавливаем приложение на мобильное устройство:

Доступно в Google Play

Переходим в настройки и включаем переключатель: "Веб-сервер". Указываем свой сервер в поле "Адрес URL" (в примере выше это был:  "http://192.168.0.1/MyWS/hs/barcode/"). При необходимости вводим логин и пароль от базы 1С. При желании корректируем остальные настройки.

Вы, наверное, удивитесь, но на этом все! Сканируем и радуемся!

 

2. Создание собственного мобильного приложения на 1С

Так как в этом варианте мы самостоятельно разрабатываем и клиентскую, и серверную части, то вольны выбрать любую понравившуюся нам технологию передачи данных. Пример реализации http-сервиса мы рассмотрели выше, поэтому рассмотрим реализацию с использованием web-сервиса.

Подготовка серверной части

На сервере в 1С создаем метод web-сервиса и описываем алгоритм обработки полученного QR-кода. Пример:

                                                 

 

     

Функция SetQR(QRKod)
	
	// Обработка полученного QRKod 
	
	
	// Создание записи в журнале регистрации (при необходимости)
	ЗаписьЖурналаРегистрации("WebService1.SetQR", УровеньЖурналаРегистрации.Ошибка, , QRKod, "Пример описания ошибки");
	
	// Сообщение результатов обработки
	Возврат "Загрузка успешно завершена";

КонецФункции

 

Подготовка клиентской части

У 1С есть встроенные методы по сканированию штрихкодов, что значительно облегчает разработку. Пример:

&НаКлиенте
Процедура Сканировать1С(Команда)

	#Если МобильноеПриложениеКлиент Тогда

	Если СредстваМультимедиа.ПоддерживаетсяСканированиеШтрихКодов() Тогда
		ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаРаспознанногоШтрихкода", ЭтаФорма);
		СредстваМультимедиа.ПоказатьСканированиеШтрихКодов("Сканируйте", ОбработчикСканирования,,ТипШтрихКода.Двухмерный);
	Иначе
		Сообщить("Не поддерживается сканирование штрихкодов!");
	КонецЕсли;

	#КонецЕсли

КонецПроцедуры

Процедура ОбработкаРаспознанногоШтрихкода(Штрихкод, Результат, Сообщение, ДопПараметр)
	
	Если Результат Тогда
		Сообщение = ОтправитьQRКодНаСервере(Штрихкод);
	КонецЕсли;
	
КонецПроцедуры
	
&НаСервере
Функция ОтправитьQRКодНаСервере(Штрихкод)

	ОписаниеСервиса = Новый WSОпределения("http://192.168.0.1/MyWS/ws/ws1.1cws?wsdl", "Login", "Password");
	Прокси = Новый WSПрокси(ОписаниеСервиса, "http://192.168.0.1/", "WebService1", "WebService1Soap");
	Прокси.Пользователь = "Login";
	Прокси.Пароль       = "Password";
	
	Возврат Прокси.SetCheck(Штрихкод);

КонецФункции

Преимуществом данного варианта является гибкость и возможность реализации дополнительных требований к мобильному приложению. Но, к сожалению, качество сканирования при этом страдает. По сравнению с аналогами в магазинах приложений, сканер от 1С сканирует значительно хуже, медленнее, а иногда вообще не распознает QR-код. Также страдает и итоговый объем приложения, так как вместе с ним на мобильное устройство устанавливается и платформа 1С, которая занимает в несколько раз больше места.

Сравнение мобильных технологий сканирования штрихкодов приведены в следующей статье.

 

3. Совмещенный вариант

Данный вариант является попыткой использовать преимущества предыдущих двух вариантов: гибкости собственного мобильного приложения и хорошего сканера из магазина приложений. Реализация заключается в создании мобильного приложения на 1С, которое реализует весь необходимый функционал, в том числе и отправку данных на сервер, а сканирование QR-кода поручает выполнить другому приложению, предварительно установленному на устройстве.

Рассмотрим реализацию на примере того же приложения:

Доступно в Google Play

Отправка данных на сервер рассмотрена достаточно подробно, поэтому остановимся лишь на моменте взаимодействия с другим мобильным приложением. Пример:

&НаКлиенте
Процедура СканироватьAndroid(Команда)
	
	#Если МобильноеПриложениеКлиент Тогда
	
		Нов = Новый ЗапускПриложенияМобильногоУстройства("com.tamadosky.barcode.SCAN");
		
		РезультатСканирования = Нов.Запустить(Истина);
		
		Если РезультатСканирования = -1 Тогда
			Штрихкод = Нов.ДополнительныеДанные.Получить("SCAN_RESULT").Значение;
			ОтправитьQRКодНаСервере(Штрихкод);
		КонецЕсли;
		
	#КонецЕсли
	
КонецПроцедуры

К недостаткам данного варианта можно отнести необходимость установки двух мобильных приложений и относительно большое занимаемое место на мобильном устройстве.

 

Надеюсь, что изложенный материал ответит на некоторые ваши вопросы и поможет в автоматизации сканирования штрихкодов.

has been added to your cart:
Оформление заказа