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

19.05.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Мобильный кладовщик lite. Android
.apk 29,06Mb
108
108 Скачать (1 SM) Купить за 1 850 руб.
Мобильный кладовщик lite. IOS
.ipa 30,21Mb
13
13 Скачать (1 SM) Купить за 1 850 руб.

Предисловие

Пример работы с камерой устройства как сканер штрих кодов реализован в мобильном приложении "Мобильный кладовщик 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.х Управленческий учет Платные (руб)

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

3000 руб.

03.12.2018    62174    212    103    

180

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

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

12000 руб.

19.04.2021    24398    73    49    

66

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

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

2400 руб.

29.07.2020    38588    194    168    

158

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 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    102441    627    191    

336

Учет ОС и НМА Сканер штрих-кода Терминал сбора данных Логистика, склад и ТМЦ Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Приложение Инвентаризация ОС и ТМЦ предназначено для инвентаризации основных средств и товарно-материальных ценностей, закреплённых за конкретным материально ответственным лицом или складом. В конфигурации 1С:Бухгалтерии 3.0 отсутствуют возможности генерации и работы со штрих-кодами для основных средств. Приложение позволяет генерировать и обрабатывать штрих-коды как для основных средств, так и для товарно-материальных ценностей (материалы, товары). В новом релизе появилась возможность работы с фотографиями объектов учета.

07.07.2023    4097    2    alfanika    0    

6

Распознавание документов и образов Сканер штрих-кода Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Обработка для 1С, которая позволяет распознавать штрихкоды с изображений с помощью бесплатного онлайн-сервиса zxing.org. Простое и удобное решение для интеграции работы со штрихкодами без необходимости использования сторонних библиотек.

1 стартмани

05.12.2024    843    4    nailandroid    0    

3

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

Небольшой пример работы со сканером штрихкодов через библиотеку БПО и блока виртуальной цифровой клавиатуры.

2 стартмани

09.07.2024    1315    5    aximo    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jack_kkm 35 03.06.14 14:47 Сейчас в теме
Спасибо за статью! Можете выложить исходную конфигурацию?
2. flyer 233 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 233 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 233 16.09.14 12:06 Сейчас в теме
(7) kosikov_oleg, модель устройства напишите пожалуйста
9. kosikov_oleg 16.09.14 12:10 Сейчас в теме
планшет китайский Sanei N10,
и на телефоне китайском (Jiayu G5) тоже самое
10. flyer 233 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 233 06.07.15 17:35 Сейчас в теме
(13) baza1978, странно я на разных версиях этот функционал тестировал. напишите версию платформы.
15. dimasikus31 87 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 233 10.04.16 22:36 Сейчас в теме
(16) Nuobu, в компоненту автофокус встроен. когда наводите камеру на штрихкод программа пытается считать код и видно как меняется резкость на экране. у вас так сейчас работает?
18. nytlenc 26.05.16 04:33 Сейчас в теме
На Nexus 5 не стартует, т.к. сборка не для arm-v7, похоже что под x86!
19. Tarlich 118 27.11.16 20:59 Сейчас в теме
20. Tarlich 118 28.11.16 12:06 Сейчас в теме
не получается закрыть камеру после сканирования (еще бы звук вставить но не Сигнал() не ВоспроизвестиЗвуковоеОповещение() не пашут)
как заставить работать ЗакрытьСканированиеШтрихКодов() ?
21. __kalex 06.03.18 14:15 Сейчас в теме
(20)
В процедуре ОбработкаСканирования:
#Если МобильноеПриложениеКлиент  Тогда
	  	 СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов(); 
 #КонецЕсли
22. Infector 205 21.11.19 09:42 Сейчас в теме
А у кого-нибудь есть примеры с получением штрихкода через внешнее Android-приложение. Сканер из мобильной платформы прямо скажем на троечку. Или где-то в платформе настраивается возможность обращения к другому приложению (что все-таки вызывает сомнения). Если конкретно, то интересен вот этот:

Barcode scanner
23. digitta 22.11.19 12:56 Сейчас в теме
(22) У меня та же задача. Но пока ни чего не нашел. А вы?
24. Infector 205 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 205 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 20.09.21 06:06 Сейчас в теме
А как реализовать подключение обычного Сканера ШК через OTG???
29. wertep 32 24.12.21 14:34 Сейчас в теме
Вот спасибо, толкнул в нужную сторону как это работает. А то кругом написано "можно" через камеру, а как даже не намекают. Шел от сканеров поэтому всю БПО перекопал.

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

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

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

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