Мобильное приложение. Пример реализации сканирования штрих кодов

19.05.14

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

Пример реализации сканирования штрих кода с помощью мобильного приложения на платформе Android и IOS.

Скачать файлы

Наименование Файл Версия Размер
Мобильный кладовщик lite. Android
.apk 29,06Mb
107
.apk 29,06Mb 107 Скачать
Мобильный кладовщик lite. IOS
.ipa 30,21Mb
13
.ipa 30,21Mb 13 Скачать

Предисловие

Пример работы с камерой устройства как сканер штрих кодов реализован в мобильном приложении "Мобильный кладовщик lite". Это простенькая программа для складского учета.

Программа реализована на платформе 1С Предприятие 8.3.5.823 и приложение собрано на мобильной платформе версии 8.3.5.52. Программа бесплатная.

На момент написания статьи обе версии находятся в тестовом режиме и возможно функция сканирования на некоторых устройствах, может быть недоступна или работать некорректно. С уверенность могу сказать, что тестирование функционала проводилось на некоторых устройствах Philips, Samsung, Iphone 4s и Ipad. На всех аппаратах камера включалась, фокусировалась на изображении штрих кода и производила захват изображения.

Возможно для сканирования, обработки и получения штрих кода 1С использует внешние компоненты сторонних разработчиков, хотя может и ошибаюсь.

Алгоритм реализации

Реализовал не сложный пример на основании документации встроенного языка.

1. В свойствах конфигурации в параметре «Требуемые разрешения мобильного приложения» установил «Мультимедиа». Кстати на размер собранного apk файла этот параметр не повлиял.

1. Создал общую форму, в которой будет производиться процесс заполнения документа на основании штрих кодирования.

2. Процедура формы ПриОткрытии с проверкой на поддержку устройства обработки сканирования данных. На моем китайском планшете функция проверки отработала и выдала сообщение, хотя планшет оснащен камерой.

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

4.  Процедура команды формы связанная с элементом Кнопка. При нажатии создаем два обработчика на проверку сканирования изображения и закрытия интерфейса камеры устройства.

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

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

5. Процедура обработчика сканирования изображения штрих кода. В параметр «ШтрихКод» возвращается строка обработанного кода. Обработанный код необходимо проверять на соответствие ваших данных и возвращать результат пользователю. Параметр «Результат» получит значение ИСТИНА в случае фиксирования на изображении штрихкода и его обработки. Параметр «Сообщение» возможно, задавать ваше значение которое будет отображаться на интерфейсе сканирования штрих кода после его обработки. Сообщение отображается зеленым цветом. В справке по встроенному языку указано что если неудачное сканирование то цвет сообщения будет отображаться красным цветом. Я такого результата не смог добиться.

&НаКлиенте
Процедура ОбработкаСканирования(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт
    
    Если Результат Тогда      
        Ошибка = ЕстьОшибкаВвода(Штрихкод);
        Если Ошибка <> ЛОЖЬ Тогда  
            Сообщение = "Ошибка штрих кода";
        Иначе
            ОбработатьШтрихКод(Штрихкод);
            Сообщение = ТекущаяОперация;
        КонецЕсли;
    Иначе
        Сообщение = "Ошибка обработки штрих кода";
    КонецЕсли;
    
КонецПроцедуры

6. Процедура обработчика закрытия интерфейса сканирования в моем случае пустая.

&НаКлиенте
Процедура ОбработкаЗакрытияИнтерфейса(ДополнительныеПараметры) Экспорт
    //
КонецПроцедуры

 

Еще есть метод ЗакрытьСканированиеШтрихКодов() но я его не использовал. Позволяет программно закрыть интерфейс сканирования устройства.

 

В дальнейшем можно будет использовать Intenter для воспроизведения звукового сигнала и вибровызова в случае ошибок. Только его надо переписать под новые методы объекта «ЗапускПриложенияМобильногоУстройства»

 

Описание режима ввода документов

Небольшое описание процесса работы с режимом ввода документов. 

Первоначально произведем привязку элементов справочника «Номенклатуры» к штрих кодам. Для этого перейдем в «Объекты данных» в меню «Штрих коды».

Указываем для каждого объекта свой код.

Далее заходим в меню «Команды штрихкода» и для команд «Запись», «Отмена», и Новые документы указываем штрихкоды. Тем самым каждый штрих код будет являться командой для системы.

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

Нажав на кнопку сканирования штрих кода запускается алгоритм заполнения документа:

  • 1 - Система ожидает штрих код, который соответствует коду создания нового документа указанного в справочнике «Команды штрих кода». Остальные коды игнорируются. После ввода кода на экране отобразиться надпись, например "Новый документ поступление". В таблице «История ввода данных» отображается информация о введенной команде. Далее система переходи к шагу 2.
  • 2 - Ввод данных в таблицу товаров и их количество для документа. При положительном вводе данных отображается информация о товаре. В таблице история  отображается информация о введенной команде по товару. Система принимает только коды товаров и команды "Отмена" и "Запись". Команда "Отмена" отменяет предыдущий ввод и очищает крайнюю команду из таблицы «История». Команда "Запись" - сохраняет текущий документ. После того как заполнили табличную часть документа необходимо перейти к шагу 3.
  • 3 - Ввод данных команды "Запись". Эта команда доступна только после ввода табличной части документа.

 

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

 

 

 

 

 

штрих код штрихкод склад

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

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

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

2880 руб.

03.12.2018    54616    137    102    

161

Подсистема штрихкодирования серий номенклатуры для 1С:УТ 11.4/11.5 КА, ERP 2.4/2.5

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

Стандартные конфигурации ERP, КА, УТ 11 позволяют работать с штрихкодированием серий. Есть только одно суровое ограничение – на упаковке должна быть этикетка для номенклатуры и отдельно для серии. Во многих случаях это критически неудобно.

12000 руб.

19.04.2021    20697    57    35    

51

Проверка товаров сканером штрихкода/ТСД для УТ11, КА2, ERP2, УНФ, БП3, Розница 2/ 3

Сканер штрих-кода Платформа 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    34094    158    152    

128

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

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

2000 руб.

22.04.2019    91945    511    186    

293

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59236    8    21    

20

Прайс-чекер. Розница (Россия, Казахстан)

Сканер штрих-кода Платформа 1С v8.3 1С:Розница 2 Абонемент ($m)

Простой и удобный прайс-чекер, работающий в режиме рабочего стола.

1 стартмани

28.11.2023    412    0    x-ynegve    0    

2

Прайсчекер для 1С (УНФ, УТ, Розница)

Сканер штрих-кода Платформа 1С v8.3 Управляемые формы 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Абонемент ($m)

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

3 стартмани

15.11.2023    584    6    usinfostart1c    2    

4
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jack_kkm 35 03.06.14 14:47 Сейчас в теме
Спасибо за статью! Можете выложить исходную конфигурацию?
2. flyer 231 03.06.14 15:12 Сейчас в теме
на данный момент не могу выложить. она будет дорабатываться.
3. jack_kkm 35 04.06.14 15:00 Сейчас в теме
Автор, выручайте, пожалуйста! :)

Какие у Вас версии android sdk и java skd?

У меня платформа 8.3.5.924 и мобильная 8.3.5.52, приложение собирается без ошибок, но на телефоне пишет "ошибка синтаксического анализа" или типа того. На платформе 8.3.4 всё работало нормально, версии андроид и джава сдк не обновлял.
4. jack_kkm 35 04.06.14 15:25 Сейчас в теме
В мобильном приложении при считывании шк говорит "операция не разрешена", но ШК в поле появляется. Это только у меня так?
5. flyer 231 04.06.14 15:41 Сейчас в теме
1 собираете на новом сборщике (1.0.3.13) ?
2 в кладовщике в регистр сведений по объектам штрихкодов укажите правильно штрихкод для номенклатуры и проверьте ее в форме Информация по штрихкоду.
6. jack_kkm 35 05.06.14 09:54 Сейчас в теме
(5) Собираю в новом. Установил последний jsdk и последнее API для андроид, ошибка исчезла.
7. kosikov_oleg 16.09.14 11:56 Сейчас в теме
Подскажите пожалуйста, почему картинка со сканированием ШК получается перевернутой на 90 гр. и спозиционировать на ШК не получатся -ведешь в одну сторону, картинка двигается в повернутой на 90 гр. плоскости.
Спасибо!
8. flyer 231 16.09.14 12:06 Сейчас в теме
(7) kosikov_oleg, модель устройства напишите пожалуйста
9. kosikov_oleg 16.09.14 12:10 Сейчас в теме
планшет китайский Sanei N10,
и на телефоне китайском (Jiayu G5) тоже самое
10. flyer 231 16.09.14 12:24 Сейчас в теме
(9) kosikov_oleg, я так понимаю 1с тестирует работу камеры на флагманах а с остальными не будет заморачиваться. с этим я не помогу
Yaroslav.Tabachnyy; kosikov_oleg; +2 Ответить
11. PiccaHut001 22.10.14 12:32 Сейчас в теме
(10) как всегда в 1С, спасибо борису
12. HIgor 21 27.11.14 13:54 Сейчас в теме
Спасибо за пример. Сталкивались с тем что при сканировании CODE_39 приложение просто отваливается без предупреждения. EAN_13 - отлично обрабатывает. Другие приложения обрабатывают любые типы кодов. Проблема видимо только с CODE_39, проверил на Codabar, QR, CODE_128 - работает
13. baza1978 06.07.15 13:16 Сейчас в теме
а кто нибудь сталкивался с тем что ЗакрытьСканированиеШтрихКодов() не работает? собирал приложение на API 17, пробовал в мобильной конфе, результат один. samsung galaxy s3
14. flyer 231 06.07.15 17:35 Сейчас в теме
(13) baza1978, странно я на разных версиях этот функционал тестировал. напишите версию платформы.
15. dimasikus31 86 24.08.15 16:51 Сейчас в теме
Можете выложить исходную конфу?
16. Nuobu 08.04.16 12:04 Сейчас в теме
Можете сказать, как сделать авто фокус в сканировании штрих кода?
Платформа - 8.3.7.2008.
Мобильная - (2.0.1.31)
Делаю для андроида 4.4 (апи - 18).
17. flyer 231 10.04.16 22:36 Сейчас в теме
(16) Nuobu, в компоненту автофокус встроен. когда наводите камеру на штрихкод программа пытается считать код и видно как меняется резкость на экране. у вас так сейчас работает?
18. nytlenc 26.05.16 04:33 Сейчас в теме
На Nexus 5 не стартует, т.к. сборка не для arm-v7, похоже что под x86!
19. Tarlich 115 27.11.16 20:59 Сейчас в теме
20. Tarlich 115 28.11.16 12:06 Сейчас в теме
не получается закрыть камеру после сканирования (еще бы звук вставить но не Сигнал() не ВоспроизвестиЗвуковоеОповещение() не пашут)
как заставить работать ЗакрытьСканированиеШтрихКодов() ?
21. __kalex 06.03.18 14:15 Сейчас в теме
(20)
В процедуре ОбработкаСканирования:
#Если МобильноеПриложениеКлиент  Тогда
	  	 СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов(); 
 #КонецЕсли
22. Infector 199 21.11.19 09:42 Сейчас в теме
А у кого-нибудь есть примеры с получением штрихкода через внешнее Android-приложение. Сканер из мобильной платформы прямо скажем на троечку. Или где-то в платформе настраивается возможность обращения к другому приложению (что все-таки вызывает сомнения). Если конкретно, то интересен вот этот:

Barcode scanner
23. digitta 22.11.19 12:56 Сейчас в теме
(22) У меня та же задача. Но пока ни чего не нашел. А вы?
24. Infector 199 22.11.19 13:54 Сейчас в теме
(23) Пока не раскопал, но и времени на эксперименты особо много не было.
Нашел такой пример, но тут речь о другом, более известном приложении, но беда в том, что оно не не сильно лучше того, которое в платформу вшито. Иногда даже кажется, что это оно и есть.

https://helpf.pro/faq/view/1801.html
&НаКлиенте
Процедура ЗапуститьСканированиеBarcode()
	
	#Если МобильноеПриложениеКлиент  Тогда
		
		НовВз = Новый ЗапускПриложенияМобильногоУстройства();
		НовВз.Действие="com.google.zxing.client.android.SCAN";
		
		Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл

			Если сокрЛП(Стр.Ключ) = "SCAN_RESULT" Тогда
				Штрихкод = Стр.Значение;
				//Сообщить(Стр.Ключ+" - "+Стр.Значение);
				
				Структура = ОбщегоНазначенияСервер.ПолучитьОбъектПоШтрихКоду(ШтрихКод);			     			
				Если Структура = Неопределено Тогда
					пТовар = Неопределено;
				Иначе
					пТовар = Структура.Номенклатура;
					
					ОткрытьЗначение(пТовар);				
					
				КонецЕсли;
			КонецЕсли;	
		КонецЦикла;
		
	#КонецЕсли

КонецПроцедуры  
Показать


https://play.google.com/store/apps/details?id=com.google.zxing.client.android
25. Infector 199 25.11.19 11:50 Сейчас в теме
(23)получилось со сканером zxing. Результат лучше, чем с встроенным в платформу, но специфические коды все-равно не берет (В частности GS1 - (двустрочный), причем читает отдельные его части как EAN8). Однако, если столь экзотических кодов на практике не нужно, то подойдет. процедура из примера в итоге модифицировалась к следующему:

&НаКлиенте
Процедура СканироватьШК_Внешнее(Команда)
	
	#Если МобильноеПриложениеКлиент  Тогда
       
        НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.google.zxing.client.android.SCAN");
	НовВз.Запустить(Истина);
		
	КлючИЗначение = НовВз.ДополнительныеДанные.Получить("SCAN_RESULT");	
		
	Если КлючИЗначение <> Неопределено Тогда
		Штрихкод = КлючИЗначение.Значение;
		ОбработчикШК(Штрихкод,Истина,"",Неопределено);
	КонецЕсли;

	
	#КонецЕсли
	
КонецПроцедуры

Показать


С приложением от Cognex Corporation к сожалению пока ничего не вышло.
user1032103; +1 Ответить
26. digitta 07.12.19 23:20 Сейчас в теме
(25)
Да, спасибо. Так лучше.
30. maxmax83 05.03.22 13:14 Сейчас в теме
(25) Напишу тут, может пригодится кому. Искал решение для сканирования и разбора GS1. По умолчанию zxing не передает спецсимволы в результате сканирования, в частности FNC1, поэтому невозможно получить значения идентификаторов применения c переменной длиной. Включается передача спецсимволов параметром ASSUME_GS1:
НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.google.zxing.client.android.SCAN");
НовВз.ДополнительныеДанные.Добавить("ASSUME_GS1", Истина);
НовВз.Запустить(Истина);
Кроме FNC1, также появится в начале идентификатор символики согласно спецификации (раздел 5.1.3)
27. aeroclub 09.01.20 13:21 Сейчас в теме
Не работает под Андроид 9
28. user635667 137 20.09.21 06:06 Сейчас в теме
А как реализовать подключение обычного Сканера ШК через OTG???
29. wertep 23 24.12.21 14:34 Сейчас в теме
Вот спасибо, толкнул в нужную сторону как это работает. А то кругом написано "можно" через камеру, а как даже не намекают. Шел от сканеров поэтому всю БПО перекопал.

Параметр "Результат" является выходящим, поэтому для того чтобы надпись была красная нужно в коде обработчика присвоить ему Ложь. А проверять на входе не надо потому как он всегда Истина.
&НаКлиенте
Процедура ОбработкаСканирования(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт

	Ошибка = ЕстьОшибкаВвода(Штрихкод);
	Если Ошибка = Ложь Тогда
		Сообщение = "Обработали";
	Иначе
		Сообщение = "Не обработали";
		Результат = Ложь;
	КонецЕсли;

КонецПроцедуры
Показать

Вот так сообщение "Не обработали" будет красным.
Оставьте свое сообщение