bdd2

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

Опубликовал Ruslan (flyer) в раздел Оборудование - Сканер штрих-кода

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

Предисловие

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

 

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


 

 

 


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

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

См. также

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

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

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