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

29.06.21

Интеграция - Сканер штрих-кода

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

Поставлена задача по занесению данных в базу 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КодНаСервере(Штрихкод);
		КонецЕсли;
		
	#КонецЕсли
	
КонецПроцедуры

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

 

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

QR-код QR-code Штрихкод Сканер Сканирование http-сервис web-сервис

См. также

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38193    108    161    

201

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    59288    192    103    

172

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    97216    586    189    

321

Сканер штрих-кода Пользователь Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Управленческий учет Платные (руб)

У вас возникал вопрос - Как быстро и правильно выполнить приемку товара в торговой точке? Как минимизировать ошибки при сборке заказа клиента? Текущая разработка способна помочь в решении данных проблем. Её назначение - проверка с помощью сканера штрих кода поступления и реализации товаров, заказов клиентов, заказов поставщикам, расходных и приходных ордеров, перемещений и возвратов.

2400 руб.

29.07.2020    36518    170    159    

142

Логистика, склад и ТМЦ Сканер штрих-кода Терминал сбора данных Мобильная разработка Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

3450 руб.

28.04.2023    9468    15    0    

9

Сканер штрих-кода Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Теперь практически все торговые документы в конфигурации 1С Бухгалтерия 3.0 (ПРОФ / КОРП) и в конфигурации 1С Бухгалтерия сельскохозяйственного предприятия 3.0 поддерживают подбор товара по штрих-коду. Можно пользоваться сканером штрихкода или подбирать штрих-код вручную. В основных печатных формах документов выводится колонка Штрихкод. Для менеджеров по продажам будет удобным дополнительный отчет Прайс-лист с остатками и штрих-кодом.

3600 руб.

28.07.2020    29233    79    31    

58

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4643    1    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DERL 11.06.20 11:13 Сейчас в теме
да, похоже сканер от zxing единственный, который может передавать данные в другие приложения, но страшно медленный, после сканирования пару секунд думает прежде чем отправить данные в приложение 1С, еще один глюк - хоть и стоит в настройках галочка "не поворачивать автоматически" все равно переключается в ландшафтный режим при сканировании.

приходится его использовать только из-за того, что во встроенном сканере 1С на некоторых телефонах не срабатывает автофокус и сканировать невозможно (например Redmi Note 5 - автофокус работает шикарно, Mi9 Lite - автофокус не работает ни в какую). пробовал разные релизы, в т.ч. и самый свежий. Кто-нибудь сталкивался с такой проблемой, решили как нибудь?
2. serg33rus 32 11.06.20 16:41 Сейчас в теме
А чем не устраивает СредстваМультимедия? Делал на нем, отлично все работает. Никаких дополнительных приложений, драйверов и прочего. Штатные средства 1С.
6. MaramOyka 49 05.12.20 09:25 Сейчас в теме
(2)
Сравнение мобильных технологий сканирования штрихкодов:
https://infostart.ru/1c/articles/1330670/
Емельянов Алексей; +1 Ответить
3. SirStefan 55 18.06.20 18:35 Сейчас в теме
А почему для п.3 не использовали com.tamadosky.barcode?
4. MaramOyka 49 18.06.20 19:19 Сейчас в теме
(3) Если не ошибаюсь, на момент написания статьи не было этого функционала. Тогда нужно так:

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

кто-нибудь реально использует его? чёт цена у него кусачая да еще и помесячная оплата
7. user635667 20.09.21 06:04 Сейчас в теме
А как подключить обычный сканер через OTG????
8. MaramOyka 49 20.09.21 08:41 Сейчас в теме
(7)
Думаю, с подключением кабеля у вас проблем нет.
А далее в зависимости от того, что необходимо делать со штрихкодами, нужно подбирать соответстующее ПО.
Например, в вышеописанном приложении (см. ссылку) нужно перейти в раздел Настройки / Устройство и установить значение "Аппаратный сканер (режим KEYBOARD)":
https://play.google.com/store/apps/details?id=com.tamadosky.barcode
9. Bayker 21.10.21 15:28 Сейчас в теме
Я уж обрадовался, путаешь только людей.
Зачем в заголовке пишешь мобильный клиент, а рассказываешь про мобильное приложение.
10. MaramOyka 49 21.10.21 17:01 Сейчас в теме
Приложение выступает в роли клиента в клиент-серверном взаимодействии.

Из уроков 1 класса:
1. Обращаться к незнакомым взрослым нужно вежливо, на Вы.
2. Некоторые слова имеют несколько значений. Сколько значений имеет слово "Ключ"?
11. NosovRomanStudent 02.03.22 13:08 Сейчас в теме
Доброго времени суток! Впечатлен вашей идеей! Попытался проделать описанные шаги из первого варианта в учебной версии 1с: Предприятие (Платформа: 1С:Предприятие 8.3, учебная версия (8.3.8.1933)). Скажите, пожалуйста, можно ли с вами связаться каким-нибудь образом и взять уроки для решения этой задачи. Мне нужно добавить в свою конфигурацию мобильный сканер qr-кодов, чтобы у каждого документа, который я создаю было "поле" или фото qr-кода о вакцинации
12. MaramOyka 49 02.03.22 14:12 Сейчас в теме
(11)

Боюсь "фото qr-кода о вакцинации" - не получится.

А вот "поле" - вполне. Что в "поле" планируется записывать?
Посмотрите в этом приложении следующие разделы:
* Настройки \ Веб-сервер \ Помощь - это общее описание
* Настройки \ Веб-сервер \ 1С:Предприятие - это пример реализации
Думаю, в них вы найдете все ответы на ваши вопросы.
13. NosovRomanStudent 02.03.22 14:32 Сейчас в теме
(12)Если вы говорите, что фото не получится, тогда ссылку, которую приложение должно передать в 1с. Спасибо за оперативный ответ, буду смотреть!
14. olbu 28.07.22 10:39 Сейчас в теме
Добрый день!
Делаю в 1с Мобильное приложение 1С 8.3.21 вот так:
Нов = Новый ЗапускПриложенияМобильногоУстройства("com.tamadosky.barcode.SCAN");
        
        РезультатСканирования = Нов.Запустить(Истина);
        
        Если РезультатСканирования = -1 Тогда
            Штрихкод = Нов.ДополнительныеДанные.Получить("SCAN_RESULT").Значение;
            ОтправитьQRКодНаСервере(Штрихкод);
        КонецЕсли;
Показать

Запускаю, на экране вышло окно
"Цветная версия
Функции доступные после покупки:
Темная тема..."

внизу кнопки "Отмена" и "Далее". Нажимаю "Далее" - окно не пропадает и висит долго - не смог дождаться его закрытия.
Что нужно еще выполнить?
15. MaramOyka 49 28.07.22 16:30 Сейчас в теме
(14)
Дальше должен открыться процесс покупки. Видимо у вас он не запускается.
Могу порекомендовать следующее:
1. Попробуйте освободить место на устройстве, если оно закончилось. Когда заканчивается место на устройстве, то все приложения начинают работать не корректно.
2. Можете также попробовать перегрузить устройство.
3. Проверьте доступность интернета на устройстве. Оплата проходит через интернет.
16. olbu 02.08.22 13:18 Сейчас в теме
(15) т.е. без покупки - не получиться его использовать? И-нет специально не доступен...
17. kovex_bk 03.08.22 00:16 Сейчас в теме
При попытке купить цветную версию (99 руб), получаю сообщение об ограничениях на территории России. При попытке загрузить и установить apk с AppGallery получаю сообщение "Приложение не установлено". Как можно обойти ограничения?
18. MaramOyka 49 05.08.22 10:00 Сейчас в теме
(17)
При попытке загрузить и установить apk с AppGallery получаю сообщение "Приложение не установлено"

На AppGallery ограничений нет.
Сначала нужно установить приложения магазина "AppGallery", а потом уже из "AppGallery" установить "Штрихкод Коммандер".
Не получается - напишите на почту, вам помогут.
19. kovex_bk 08.08.22 20:15 Сейчас в теме
(18) Не сразу, но получилось. AppGallary (apk) скачал с официального сайта. Штрихкод Командер пришлось сначала удалить, а потом установить снова уже под учетной записью AppGallary. Все прекрасно работает! Спасибо!
20. user1106258 08.12.22 16:50 Сейчас в теме
Добрые люди подскажите, как запустить сканер для массового сканирования?
Пока код такой (однократное сканирование)...
#Если МобильноеПриложениеКлиент Тогда

Приложение = Новый ЗапускПриложенияМобильногоУстройства("com.google.zxing.client.android.SCAN");

Результат = Приложение.Запустить(Истина); // нужен ли результат!@?

СчитанныйШтрихКод = Приложение.ДополнительныеДанные.Получить("SCAN_RESULT").Значение;

Возврат СчитанныйШтрихКод

#КонецЕсли
21. user1965225 03.07.23 13:44 Сейчас в теме
А есть ли возможность использовать сторонний сканер на iOS ? Поделитесь примером пожалуйста
Оставьте свое сообщение