Конфигурация-основа для мобильного приложения - сканер штрихкода (фото сканер и ТСД) + фото

Программирование - Мобильные приложения

Конфигурация-основа для мобильной платформы. Работа с фотосканером (через приложение Barcode Scanner) и сервис для перехвата Broadcast со сканера штрих-кодов ТСД Теперь любой смартфон превратить в почти полноценный ТСД в вашем приложении. + По публикации https://infostart.ru/public/587908/: Service перехвата сообщений Broadcast со сканера штрих-кодов в мобильную платформу 1С (эмуляция внешнего события). Позволяет получать и обрабатывать штрих-коды не в разрыв клавиатуры (определенное активное окно), а "под капотом". Поддержка запуска/остановки из программного кода 1С.

 Столкнувшись с проблемой сканирования на мобильном приложении нового ТСД фирмы DISC, пришли к публикации Дмитрия //infostart.ru/public/587908/

Но он отказался всячески работать на неведомой корейской штуковине.

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

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

Дмитрий в своем APK отрабатывал byte данные, а неведомая зверушка отдавала уже готовый string.

Сервис был на лету переписан с непосильной огромной помощью Дмитрия, за что ему отдельное спасибо.

И на свет родилась готовая конфигурация - шаблон для работы со сканером.

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

В нашей зверушке все эти параметры были в настройках.

Добавился параметр типа передачи данных - string или byte

 

Ну и собственно сама конфигурация

Платформа разработки 1С:Предприятие 8.3 (8.3.11.2867)  (уж пардоньте, мы очень ждали новый функционал расширений).

Мобильная платформа 8.3.10.51.

Пишите ваши intent и barcodedata и модель - буду добавлять и обновлять конфигурацию.

 

UPD: Добавлена возможность сканирования штрих-кода через приложение Barcode Scanner - теперь можно любой смартфон превратить в почти полноценный ТСД.

 

UPD2: Далее мы столкнулис с проблемой, что типовой способ который предлагает платформа, фотографирует вверх ногами, и нельзя предварительно посмотреть фото. Плюс фото не сохраняется никуда. Мы решили это исправить. Тоже через наш apk приложение. 

Приложение запускает встроенную камеру и сохраняет их в папку "DCIM/1C_Photo"

В версии 1.3 есть код типового способа ( можете попробовать) и через наш APK.

Через наш "apk-перехватчик" есть возможность пользоваться всеми прелестями встроенного приложения камеры и подтверждать фото перед передачей его в 1С. Фото сохраняются в справочник Фото - для демонстрации как можно обращаться с файлами и данными.

 

Версия 1.1 - apk-файл сервиса в общих макетах конфигурации - только перехват Broadcast сообщений со встроенного ТСД сканера штрих-кодов

Версия 1.2 - apk-файл Barcode Scanner (4pda) в общих макетах конфигурации - функции версии 1.1 + возможность сканировать штрих-коды через камеру.

Версия 1.3  добавлен код типового способа сделать снимок + через apk файл.

 

FAQ:

Я всё прописал - у меня не сканирует(перехват broadcast 1.1):

1) проверьте что включен режим broadcast intent (event intent) ( не key intent, не clipboard intent)

2) проверьте что в ПО сканера при тестировании у вас происходит сканирование

3) проверьте что включен режим отладки

4) сверьтесь что у вас выходят сообщения так-же как в видео при режиме отладки.

5) после установки драйвера-перехватчика рекомендую перезапустить 1с

6) проверьте что верно выбран идентификатор базы

 

Я выбрал в списке все версии устройств - ничего не заработало:

Ищите в комментариях публикации ваше устройство и что надо прописать. Изначально в cf файлах только моё устройство DSIC DS9. (постараюсь добавлять новые по мере возможности)

Где установить Barcode Scanner:

При первом обращении к сканированию через фотокамеру компонента перехвата сама предложит его скачать из google play. Но если у вас на устройстве нет интернета или лень качать, то обратите внимание на кнопку "установить приложение" в настройках - я её разместил ниже и не все сразу её замечают. APK там версии 4.7.7 скачан с 4pda.

Переверните камеру:

Да, в стандартном вызове (этот код для примера есть в модуле и он заккоментирован)

СредстваМультимедиа.СделатьФотоснимок (...)

на многих устройствах фото зеркально вертикально перевернуто.

В версии 1.3 фото происходит через 

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

При котором вызывается стандартная камера андройда - там изображение должно быть как на обычной камере ( проверьте настройки встроенного приложения-камеры)

Но есть проблема, на некоторых устройствах даже если сфотографировали верно, фотография в 1с загружается перевернутой - причина не ясна, само фото в папке DCIM/1C_photo в нормальном виде.

Фото в базу загружается через

ДвоичныеДанные = Новый ДвоичныеДанные (Данные);
Где глючит - не понятно, видимо ошибка платформы 1с.

 

Устройства:

sunlux xl-868  - не поддерживает broadcast

ТСД MobileBase ds5  - используйте настройки ds9

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

Наименование Файл Версия Размер
Конфигурация-основа для мобильного приложения - сканер штрихкода (фото сканер и ТСД) + фото:
.cf 2,21Mb
29.11.17
29
.cf 1.3 2,21Mb 29 Скачать
Конфигурация + apk (в общих макетах)
.cf 73,24Kb
23.11.17
13
.cf 1.1.1 73,24Kb 13 Скачать
Конфигурация-основа для мобильного приложения - сканер штрихкода (фото сканер и ТСД) :
.cf 2,13Mb
27.11.17
7
.cf 1.2.1 2,13Mb 7 Скачать

См. также

Комментарии
1. Вася Пупкин (bubus) 23.11.17 12:45 Сейчас в теме
А с простыми сканерами ШК, не ТСД это будет работать?
3. Владимир Борисов (Vladimir45) 28 23.11.17 12:51 Сейчас в теме
(1) это какими? bluetooth? или через usbOTP? В любом случае только если есть intent у драйвера сканера.
4. Вася Пупкин (bubus) 23.11.17 14:57 Сейчас в теме
5. Владимир Борисов (Vladimir45) 28 24.11.17 06:59 Сейчас в теме
(4)В любом случае, только если есть intent у драйвера сканера.
2. Олег Медведев (olgerd666) 49 23.11.17 12:47 Сейчас в теме
Поддержка закуска/остановки
johnnyshut23; +1 Ответить
6. Dmitry Po (DMon) 62 24.11.17 13:00 Сейчас в теме
(2) Та что Вы прям к словам цепляетесь? ))) Нравится мне закуска))
...защита от копипаста ;)
Vladimir45; +1 Ответить
7. Владимир Борисов (Vladimir45) 28 29.11.17 13:25 Сейчас в теме
добавить можно тсд

	ИначеЕсли Устройство = "iData 95W" Тогда
		
		ActionName = "android.intent.action.SCANRESULT";
		BarcodeData 	= "value";
		ТипBarcodeData	= "string";


Исходный код отправки броадкаста этого сканера выдран из приложения iScan_com.android.auto.iscan

Intent localIntent = new Intent();
    localIntent.setAction("android.intent.action.SCANRESULT");
    localIntent.setFlags(268435456);
    localIntent.putExtra("value", paramString);
    localIntent.putExtra("length", paramString.length());
    getApplicationContext().sendBroadcast(localIntent);
johnnyshut23; +1 Ответить
8. Denis Kamishniy (D_K_Programm) 29.11.17 13:49 Сейчас в теме
можно сделать так чтобы в момент сканирования аппарат оставался вертикально?
или в идеале вставить поле сканера на форму?
johnnyshut23; +1 Ответить
10. Владимир Борисов (Vladimir45) 28 29.11.17 14:08 Сейчас в теме
(8) сканирования чего? фото-сканирование через Barcode Scanner? помогите разобраться с документацией от него, как в него передать - "не переворачивайся", я с ходу не нашел.
9. Иван Карло (johnnyshut23) 29.11.17 14:02 Сейчас в теме
спасибо! очень интересная статья/разработка
11. Владимир Мельниченко (VladimirMelnychenko) 29.11.17 17:08 Сейчас в теме
Добрый день. Установил на ТСД конфигурацию (версия 1.1.1), с существующими настройками не пошло, заменил имя интента ("Action name") на "rrr", но при сканировании не выдавало сообщения от какого либо интента. Скажите пожалуйста в чем может быть проблема?

Терминал Sunlux xl-868.
Сканирует только в родное приложение "ScanData" (файл apk во вложении), ну и в любое поле ввода.
Может встроенный сканер эмулирует ввод и из за этого не возникает интента?
Прикрепленные файлы:
SCANDATA.apk
13. Владимир Борисов (Vladimir45) 28 30.11.17 07:26 Сейчас в теме
(11)нету в исходном коде команды sendBroadcast. может есть ещё apk ?

Отладку включили?

Основные ошибки:
не выбрали string
не указали идентификатор базы
не перезагрузили 1с после установки драйвера


(обновил шапку)
16. Владимир Мельниченко (VladimirMelnychenko) 30.11.17 11:03 Сейчас в теме
(13)
Основные ошибки:
не выбрали string
не указали идентификатор базы
не перезагрузил


Пробовал устанавливать разные настройки, к сожалению не пошло.
При считывании штрих-кода в LogCat возникает следующее событие:
11-30 09:15:29.632 V/InputMethodManager(3386): START INPUT: android.widget.LinearLayout{41c84f38 VFE..... .F....I. 0,35-0,35} ic=null tba=android.view.inputmethod.EditorInfo@42033558 controlFlags=#105



По поводу другой APK, по умолчанию больше никакой утилиты не установлено. И вообще в мануале написано что настройка самого сканера (скорость считывания, задержка и т.д.) происходит путем сканирования штрихкодов-команд из мануала в эту утилиту (SCANDATA).
17. Владимир Борисов (Vladimir45) 28 30.11.17 11:11 Сейчас в теме
(16) ну а в книжке со штрихкодами - есть евенты?
18. Владимир Мельниченко (VladimirMelnychenko) 30.11.17 12:23 Сейчас в теме
(17)Весь мануал состоит из вот таких "команд" которые нужно считывать в родную утилиту.
https://ibb.co/c3dukG
https://ibb.co/mAhyCw
19. Владимир Борисов (Vladimir45) 28 30.11.17 12:34 Сейчас в теме
(18) ну он COM И что-то там дефаулт - наверное клавиатура. и broadcast не поддерживает видимо. напиши модель - добавим в список не поддерживаемых. На них только если драйвер на com порт писать.
20. Владимир Мельниченко (VladimirMelnychenko) 30.11.17 12:46 Сейчас в теме
(19) Спасибо что затратили время. Модель Sunlux xl-868.
Дополнительный вопрос.
А взлетит если допилить родную утилиту и заставлять ее отправлять броадкаст после формирования строки?
21. Владимир Борисов (Vladimir45) 28 30.11.17 12:49 Сейчас в теме
(20)взлетит, только то что я вам "исходники" вытащил, обратно не "скомпилятся" 100%
Но знающий человек на основе их сможет что-то наваять.
22. Владимир Мельниченко (VladimirMelnychenko) 30.11.17 12:55 Сейчас в теме
15. Владимир Борисов (Vladimir45) 28 30.11.17 08:06 Сейчас в теме
(11) поищите сами - я не нашел совсем.
Прикрепленные файлы:
SCANDATA-dex2jar.jar.src.zip
12. Евгений Абдуразаков (asdfgcom) 106 29.11.17 19:32 Сейчас в теме
Прошу прощения, если не разобрался в сути вопроса. Скачал, установил. На планшете Самсунг работает, на ТСД не работает, но это не важно, все-равно переворачивает экран. С ТСД работать при этом становится невозможно. Не понял, компонента для сканирования та же, что вызывается стандартно СредстваМультимедиа.ПоказатьСканированиеШтрихКодов? Не нашел разницы.
Почему тогда просто нельзя было сделать стандартно:

ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаСканирования", ЭтаФорма);
  		ОбработчикЗакрытия = Новый ОписаниеОповещения("ОбработкаЗакрытияИнтерфейса", ЭтаФорма);
  		СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(НСтр("ru='Наведите камеру на штрихкод';en='Aim the camera at an barcode'"), ОбработчикСканирования, ОбработчикЗакрытия, ТипШтрихКода.Все);


Надеялся, что используется иная компонента для сканирования.

Ну, и, раз пошла такая пляска, надо добавить функционала:
1. Подсветка
2. Обратная связь с компонентой (после удачного сканирования выводить на экран строку с текстом, переданным из 1С, к примеру Товар такой-то, количество такое-то, цена такая-то)
3. Привязать кнопку (например #) или, в случае с ТСД, "Scan" или "F1" или какие у кого там еще есть кнопки. А лучше, настройку в 1С, типа, нажмите кнопку, используемую для сканирования. Зачем? Пока сканируем нужный ШК ненароком зацепим еще пару ненужных, которые были рядом.(Оборудование может иметь несколько ШК, EAN, UPS, SN, MAC ID рядом. Пока "поймаем в прицел" EAN, зацепим все 4) А так, нацелились, жмакнули, опа - штрихкод прилетел.
4. Ну, переверните уже экран!
5. На ТСД можно даже не показывать окно фотосканера, а просто включить подсветку. Она дает пятно, в которое надо поймать ШК. Нажал кнопку - ШК прилетел прямо в форму. (на самом деле окно сканирования - только мешает)
14. Владимир Борисов (Vladimir45) 28 30.11.17 07:32 Сейчас в теме
(12) Используется apk - Barcode Scanner (4pda) https://4pda.ru/forum/index.php?showtopic=141132 (там ссылки и на гугл плей) но при первом обращении - оно попросит его скачать с гугл-плея. (сча внесу данные в саму статью)

1 - подсветка? фонарик в смысле?
2 - это делается не компонентой а вашей фантазией самого приложения.
3 - тоже самое делается в самом приложении 1с. в оповещении просто выводите запрос - точно этот шк? к компоненте это ну никак не относится, тем более к перехвату broadcast intent
4 - на чем перевернуть? я так и не понял? на фото? я перевернул через стандартную камеру в версии 1.3
5 - найдите такое приложение на гугл плей - я попробую его встроить.
23. Евгений Абдуразаков (asdfgcom) 106 30.11.17 13:18 Сейчас в теме
(14) Компонента похожа или та же самая, что вызывается стандартной командой мобильного приложения 1С:

СредстваМультимедиа.ПоказатьСканированиеШтрихКодов()


Точно также разворачивает изображение в Ландшафт и мигает желтыми точечками по красной полосе. Видимо она же и используется мобильной платформой.
(1) Многие устройства оснащены подсветкой (не исключая планшета или мобильника) для освещения при фотографировании или чтении ШК. Если есть, почему не использовать. Со стороны 1С невозможно, если не предусмотрено в apk.
(2) При последовательном чтении ШК без закрытия окна чтения мы не видим, что там происходит у нас в программе. Если позволить компоненте принимать строку с текстом и выводить ее на окно сканирования, пользователь увидит, что произошло. Нашел, не нашел или каково фактическои и учетное количество по этому товару.
(3) Согласен, без переделки самой компоненты не получится, но, как я это вижу, было бы удобно.
(4) Когда появляется окно сканирования оно принимает "Ландшафт" на любом из тестируемых устройствах. А экран устройства "Портрет" Приходится переворачивать устройство для сканирования, а потом обратно переворачивать для работы. Представьте, что камера не на задней стороне устройства а на верхнем срезе. Как тогда его крутить?
(5) я могу скинуть готовое СДК. с описанием функций. Причем apk от моего ТСД работает и с самсунговской камерой. Там и фонарь и вибрация и повороты и циклы маштабирования (краем глаза посмотрел, что понял на jawa) читает любой ШК, за долю секунды.
Надо заметить, что компоненту удается вызвать из мобильной платформы, но, в момент распознавания ШК 1С падает. Видимо компонента что-то пытается вернуть обратно, неверно.
24. Владимир Борисов (Vladimir45) 28 30.11.17 13:33 Сейчас в теме
(23)
я могу скинуть готовое СДК. с описанием функций.

Кидай, посмотрю на досуге.
25. Владимир Борисов (Vladimir45) 28 30.11.17 13:38 Сейчас в теме
(23)
Компонента похожа или та же самая, что вызывается стандартной командой мобильного приложения 1С:

СредстваМультимедиа.ПоказатьСканированиеШтрихКодов()


Точно также разворачивает изображение в Ландшафт и мигает желтыми точечками по красной полосе. Видимо она же и используется мобильной платформой.


помоги найти в sdk Barcode Scanner как его повернуть? я не нашел.
26. Владимир Борисов (Vladimir45) 28 30.11.17 13:41 Сейчас в теме
(23)
При последовательном чтении ШК без закрытия окна чтения мы не видим, что там происходит у нас в программе. Если позволить компоненте принимать строку с текстом и выводить ее на окно сканирования, пользователь увидит, что произошло. Нашел, не нашел или каково фактическои и учетное количество по этому товару.

хм, по идее через мой apk приложение должно закрываться сразу после одного ШК. у тебя не закрывается? продолжает дальше?
27. Евгений Абдуразаков (asdfgcom) 106 30.11.17 14:06 Сейчас в теме
(26) да, проверил, закрывается. Я уже столько компонент перепробовал... Запутался в них. В ЛС скиньте свою почту. Отправлю СДК. В ответ прошу ссылку на СДК Barcode Scanner. Однако, я в jawa не силен... В этом и проблема.
28. Евгений Буглов (evgeny43) 5 20.12.17 16:04 Сейчас в теме
Добрый день, написал свою простенькую вариацию на андроид студии
Однако почемуто не попдает в обработку доставляемых уведомлений
код выглядит так :
public void onReceive(Context context, Intent intent) {
        //byte[] barcode = intent.getByteArrayExtra("barocode");
       // int lng = intent.getIntExtra("length", 0);
        String Barcode = intent.getStringExtra("data");
        Toast.makeText(context, "Обнаружено сообщение: "+
                Barcode, Toast.LENGTH_SHORT).show();
        Intent intentFor1C = new Intent(WHERE_MY_CAT_ACTION);
        intentFor1C.putExtra("text",1);
        intentFor1C.putExtra("title", "1C");
        intentFor1C.putExtra("data", Barcode);
        intentFor1C.putExtra("base","668e4c97-91e2-4f35-c914-85791064d881");
        context.sendBroadcast(intentFor1C);
WHERE_MY_CAT_ACTION="com.google.android.c2dm.intent.RECEIVE"; что может быть не так,
 Toast.makeText(context, "Обнаружено сообщение: "+
                Barcode, Toast.LENGTH_SHORT).show();---подает сообщение на кэран что все гуд перехватил от сканера 
ид базы для отладки вбита гвоздями ,
    }
Показать
29. Евгений Буглов (evgeny43) 5 20.12.17 16:49 Сейчас в теме
Вопрос не актуален (28) , ошибка синтаксиса передачи -intentFor1C.putExtra("text",1); --->intentFor1C.putExtra("text","1");
30. Рустам Газимов (grrus) 27.03.18 06:33 Сейчас в теме
Уважаемые коллеги!!!

Подскажите, собрал мобильное приложение для андроид 7ого, появились проблемы
1. Сканер не работает, запускается камера и видно что очень жутко тормозит
2. при выводе значения в Поле HTML документа - ОписаниеИнформации, иногда выходит ошибка отображения страницы (http^localhost/..../.....).
НайтиСтроку = ТЧСписокНовостей.НайтиСтроки(новый Структура("Номер",НовостьПодНомером));
Если НайтиСтроку.Количество() > 0 Тогда
ОписаниеИнформации = "<html>" + НайтиСтроку[0].ОписаниеИнформации + "</html>"
КонецЕсли;
32. Владимир Борисов (Vladimir45) 28 28.03.18 07:02 Сейчас в теме
(30)
Сканер не работает, запускается камера и видно что очень жутко тормозит

Уточните какой сканер?
В данной конфигурации сканер запускается через приложение на гугл-плее ЛИНК
Может дело в этом приложении? а не мобильной платформе 1с,


(30)
при выводе значения в Поле HTML документа

Попробуйте правильно теги html поставить, может мобильная платформа чувствительна к ним, как минимум добавить body, как максимум и боди и P
31. Рустам Газимов (grrus) 27.03.18 07:38 Сейчас в теме
В продолжении
Если запускать конфигурацию мобильную через мобильную платформу 1С8, то всё работает без проблем.
33. Владимир Борисов (Vladimir45) 28 28.03.18 07:03 Сейчас в теме
(31) Может при сборке использовали старый SDK?
дайте больше информации, чем собирали, какие версии использовались?
34. Рустам Газимов (grrus) 28.03.18 17:26 Сейчас в теме
35. YFred 1 09.04.18 14:16 Сейчас в теме
Установил конфигурацию на устройство, когда в настройке сканера жму кнопку "Установить драйвер", ничего не происходит. Драйвер не устанавливается и ошибку не выдает. Что может быть?
36. Владимир Борисов (Vladimir45) 28 10.04.18 19:28 Сейчас в теме
(35)
Проверьте галочку в настройках в разделе безопасность - сторонние источники, как-то так.
Как вариант выгрузить apk из конфигурации.
37. lexa lexa (superlexa2008) 14.05.18 14:31 Сейчас в теме
скачал версию 1.3, где кнопка записать настройки ?? на видео есть на форме нет
39. Владимир Борисов (Vladimir45) 28 14.05.18 19:54 Сейчас в теме
(37) в версии 1.3 настройка записывается при изменении. Как и положено по новым правилам 1С.
38. lexa lexa (superlexa2008) 14.05.18 14:45 Сейчас в теме
дописал сам кнопку, все заработало, спасибо!
40. lexa lexa (superlexa2008) 15.05.18 09:56 Сейчас в теме
да, только я нажимаю кнопку загрузить настройки и мне их менять не нужно и при этом их нельзя никак сохранить без кнопки сохранить.
41. Владимир Борисов (Vladimir45) 28 15.05.18 14:54 Сейчас в теме
42. Сергей Евстигнеев (greyhedgehog) 2 17.05.18 02:20 Сейчас в теме
Коллеги, добрый день!
Скачал версию 1.1.1 в надежде на чудо, но на "железке" Honeywell EDA50K так и не заработало. Уже после в комментариях к указанной в начале описания публикации Дмитрия (в районе п.70) нашел про поле "dataBytes" и проблемы с его преобразованием в строку. У меня при сканировании с включенной отладкой выдает "Start intent search: scan.rcv.message" и затем "Get valid intent data:". Тип barcode data = byte. При = string, BC2OneCBT "падает". Я вроде все вариации настроек перепробовал. Владимир, скажите, пожалуйста, есть ли возможность подправить сервис с учетом комментариев Евгения Буглова по данной модельке ТСД? Ну или если этот момент уже учтен, может у меня просто "руки кривые", тогда подскажите, пожалуйста, как настроить правильно параметры?
Спасибо.
43. Сергей Евстигнеев (greyhedgehog) 2 17.05.18 12:43 Сейчас в теме
(42) Все, спасибо, уже не актуально, для EDA50K помогло вот это решение https://infostart.ru/public/779912/
44. Сергей Евстигнеев (greyhedgehog) 2 17.05.18 17:41 Сейчас в теме
Добрый день! Поторопился, не совсем помогло указанное выше решение, с подключенной отсюда https://infostart.ru/public/779912/ компонентой 1С-ка на EDA50K с android 4.4.4 прекрасно ловит ШК, но непредсказуемо тормозит и "крашится".
Владимир, скажите пожалуйста, возможно ли подправить apk, чтобы работало на Honeywell EDA50K и ему подобных? Исходников нет, чтобы подружить с этой моделью. А то получается зря все скачивал.
Спасибо.
45. Владимир Борисов (Vladimir45) 28 18.05.18 04:32 Сейчас в теме
(44) так, давай-ка в личку, Надо понять почему краш происходит.
Оставьте свое сообщение