Android service перехвата сообщений Broadcast со сканера штрих-кодов в 1С

31.08.17

Разработка - Мобильная разработка

Service перехвата сообщений Broadcast со сканера штрих-кодов в мобильную платформу 1С (эмуляция внешнего события). Позволяет получать и обрабатывать Штрих-коды не в разрыв клавиатуры (определенное активное окно), а "под капотом". Имеет некоторые настройки.

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

Наименование Файл Версия Размер
BarCodeTo1C.apk
.apk 645,65Kb
116
.apk 1.0 645,65Kb 116 Скачать

Более новая версия (продолжение) тут

Предыстория аналогична как //infostart.ru/public/579674/ Спасибо за идеи Meteorage

Закупили КПК Caribe PL-40. Не плохой такой девайс. Написали на него мобильное приложение для складского учета. Вот только сканировал он в разрыв клавиатуры и в 1С постоянно приходилось тапать в окно для ввода штрих-кода. Было перепробовано много способов победить данный недуг. В частности и  //infostart.ru/public/547851/ (спасибо автору dewersia ). Смотрели ACode tools. Он не работает (на сколько мне известно) со сторонними КПК и тем более со встроенными сканерами. Конечно, был получен неоценимый опыт изучая его код (за что огромное спасибо автору DitriX).

Возможности сервиса:

  1. Автостарт после загрузки КПК (OnBootReceiver);
  2. Старт/Стоп сервиса в интерфейсе приложения;
  3. Назначение "имени сообщения" от сканера. У разных КПК они различаются. К примеру, у нашего это "scan.rcv.message", у Urovo - "urovo.rcv.message". Нужно конкретно знать какое сообщение от сканера выдается бродкастом на конкретном аппарате.
  4. Назначение "1C Event ID". Это как раз тот эвент, по которому 1С будет определять что это прилетел к ней Штрих-код. По-умолчанию это 1.
  5. Назначение "1C Base ID". Используется если в списке выбора баз более одной базы. Если только одна - оставить поле пустым. Идентификатор брать с файла ibases.v8i.

В мобильном приложении обязательно должна быть инициализация приема внешних сообщений (Пример из ACode tools):

В модуле управляемого приложения:

Процедура ПриНачалеРаботыСистемы()
	ОбщегоНазначенияКлиент.ПодключитьГлобальноеСобытиеОповещения();
КонецПроцедуры

В модуле ОбщегоНазначенияКлиент


Процедура ПодключитьГлобальноеСобытиеОповещения() Экспорт
	#Если МобильноеПриложениеКлиент Тогда
		Оп = Новый ОписаниеОповещения("ОбработчикЛокальныхУведомлений", ЭтотОбъект);
		ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(Оп);  
	#КонецЕсли
КонецПроцедуры

Процедура ГлобальноеСобытиеОповещения(Сообщение, ЧтоТоЕще = "") Экспорт

	Попытка
		Отправитель = Число(Сообщение.Отправитель);
	Исключение
		Возврат
	КонецПопытки;
	Если Отправитель = 1 Тогда //тут 1C Event ID из сервиса
		Оповестить(Формат(Отправитель,"ЧГ="),Сообщение.Текст, "Сканирование ШК");
	Иначе 
		Возврат
	КонецЕсли;
КонецПроцедуры

Процедура ОбработчикЛокальныхУведомлений(Уведомление,Локальное,Показано, ЧтоТоЕще) Экспорт
	ГлобальноеСобытиеОповещения(Новый Структура("Отправитель,Текст",Уведомление.Текст,Уведомление.Данные));
КонецПроцедуры

Таким образом у нас получают Штрих-код все формы, у которых описана ОбработкаОповещения. Для получения ШК только в активную форму используем метод управляемой формы ВводДоступен()

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "1" И ВводДоступен() Тогда
		ПолученШтрихКод(Параметр);
	КонецЕсли;
КонецПроцедуры

Кому интересно, процесс передачи со стороны Android описан так:

public void onReceive(Context context, Intent intent) {
        byte[] barcode = intent.getByteArrayExtra("barocode");
        int lng = intent.getIntExtra("length", 0);
        this.barcodeStr = new String(barcode, 0, lng);
        if (lng > 0) {
            Intent intentFor1C = new Intent("com.google.android.c2dm.intent.RECEIVE");
            intentFor1C.putExtra("text", BCService.EventID);
            intentFor1C.putExtra("title", "1C");
            intentFor1C.putExtra("data", this.barcodeStr);
            if (BCService.BaseName != null || BCService.BaseName != "")  {
                intentFor1C.putExtra("base", BCService.BaseName);
            }
            context.sendBroadcast(intentFor1C);
        }
    }

 

Ну, в принципе, и всё. Сервис писался "для себя" и распространяется "как есть". Буду рад, если кому пригодится!

Внешнее событие Штрих-код сервис Broadcast Мобильное приложение Service

См. также

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

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

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

2880 руб.

03.12.2018    54603    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33275    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для 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    91933    511    186    

293

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3387    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

Мобильная разработка WEB-интеграция Мобильная платформа Абонемент ($m)

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1464    0    informa1555    1    

39

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    6811    ROk_dev    56    

37

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1626    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Tahallus 431 09.02.17 12:57 Сейчас в теме
Исходники на GitHub будете выкладывать ?
2. DMon 120 09.02.17 13:16 Сейчас в теме
(1) Скорее всего нет. Делалось не для широкой публики.
3. DrinkMaster 6 21.03.17 11:46 Сейчас в теме
Установил APK на urovo v5100, но кроме сообщения "Hello World!" и кнопок Start\Stop service на экране ничего нет. Как в этом случае выставить параметры "имени сообщения" от сканера, "1C Event ID" и "1C Base ID"?
4. DMon 120 22.03.17 00:53 Сейчас в теме
(3) Специально с сайта переустановил apk. Там нет никакого "Hello world!" и всё работает.
И как Вы могли её установить, если даже не скачивали?
А вообще актуальная APK - http://infostart.ru/public/587908/
5. DrinkMaster 6 22.03.17 10:29 Сейчас в теме
(4) Вот
Прикрепленные файлы:
6. DMon 120 22.03.17 15:04 Сейчас в теме
(5) Очень странно. А версия андроид случайно не ниже 4.4?
Если да - то минимальная в СДК установлена 4.4 и на версиях ниже не тестировалась (поведение неизвестно).
7. DrinkMaster 6 23.03.17 09:16 Сейчас в теме
8. Bru_10 24.04.17 16:20 Сейчас в теме
Подскажите как можно определить это имя сообщения "scan.rcv.message"?
9. DMon 120 25.04.17 08:12 Сейчас в теме
(8)можно через logcat. Можно разобрать сервисную апк по настройке сканера и просмотреть там IntentFilter.
10. d_sdr 4 05.06.17 15:34 Сейчас в теме
подскажите, в процедуре "ПодключитьГлобальноеСобытиеОповещения" вызывается такая интересная вещь, как
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(...)

Что это за модуль - "ДоставляемыеУведомления" и где его достать? В типовых конфигурациях его не нашёл, в ACode Tools тоже нету.
11. DMon 120 05.06.17 19:09 Сейчас в теме
12. demONx7 29.06.17 03:10 Сейчас в теме
(0) Подскажите, как можно перехватить нажатие кнопок на тсд? Интересуют стрелки, цифры и клавиши F..
На данный момент при тестировании на компьютере все работает, а на ТСД нет. Полагаю что нужно где-то эти самые нажатия "поймать"
13. DMon 120 30.06.17 07:18 Сейчас в теме
(12) Подключаем устройство к Adroid студии, открываем вкладку событий и жмем по клавишам. В списке видим что был такой-то keyPressed, keyReleased. Далее что с этим делать - Ваша фантазия
14. Tiger77 69 08.07.17 20:50 Сейчас в теме
(13) Доработаете пожалуйста сервис - чтобы можно было менять название поля в котором находится штриход. В нашем случаем служба "вылетает"
Стандартно штрихкод содержится в поле "barcode", но наш сканер присылает штрихкод в поле "SCAN_BARCODE1".
15. DMon 120 09.07.17 00:19 Сейчас в теме
(14) Не плохая идея. Как только разгребусь с текущей загрузкой - сделаю!
16. mxs89 11 31.08.17 20:23 Сейчас в теме
ошибка при синтаксическом анализе! чувствую себя обманутым!
17. DMon 120 31.08.17 21:10 Сейчас в теме
(16) очень информативно, сейчас попробую угадать...
18. mxs89 11 01.09.17 09:18 Сейчас в теме
я новую версию скачал, буду пробовать ее, но спасибо за отзыв
19. Dimitrij 25.09.17 14:54 Сейчас в теме
День добрый.

У нас ТСД работает через веб клиент на андроиде. Браузер хром.

Данное преспосабление будет работать через веб клиент?

Заранее спасибо!
20. DMon 120 25.09.17 20:37 Сейчас в теме
21. Dimitrij 26.09.17 11:08 Сейчас в теме
(20) У Вас случаем нет решений по моей проблеме?
22. DMon 120 26.09.17 12:21 Сейчас в теме
(21) Мобильный клиент слушает бродкаст от утилиты. Я не знаю как браузер Хром научить слушать бродкаст.
Возможно это как-то и делается, но я с таким не сталкивался.
23. evgeny43 32 18.12.17 14:06 Сейчас в теме
А только утилита может отправить в бродкаст?У меня тсд honeywell , в меню сканирования есть раздел scan to intent, я прописал согласно маунала имя интента в хмл платформы , и ничего .... платформа ( 8.3.9.91 мобильная)
24. Широкий 692 30.01.18 15:31 Сейчас в теме
ИдБазыДанных=Прав(ПолучитьНавигационнуюСсылкуИнформационнойБазы(),36);
user598655_ilia-bers; Danil.Potapov; +2 Ответить
25. IgorKissil 350 05.02.18 10:36 Сейчас в теме
Не пытались ли Вы использовать: https://infostart.ru/public/595292/ ? Чип сканера у устройств общий и я знаю об одном успешном применении компоненты на Caribe
26. Lupeykin 5 29.06.18 02:27 Сейчас в теме
8.3.10.51 работает Intent intentFor1C = new Intent("com.google.android.c2dm.intent.RECEIVE");
8.3.12.67 в этом релизе такой номер уже не прокатывает.
27. DMon 120 30.06.18 10:24 Сейчас в теме
(26) Вскоре у нас планируется переход на платформу 12-ю, задача станет более актуальной и возможно получится переделать под особенности новые. Результат выложу на форум. Но пока "как есть"
28. menen 12.07.18 12:41 Сейчас в теме
Дмитрий, добрый день!

Для публикации https://infostart.ru/public/704582/ Вы, как я понял, немного изменили драйвер перехвата.

На основании той же публикации я сделал мобильное приложение, но столкнулся с такой проблемой (цитирую):

=========
На базе Вашей обработки сделали конфигурацию под мобильное приложение (ТСД MobileBase DSIC 5 - обновили до Андроид 6) .

Конфигурация работала через мобильную платформу 1С на ТСД.

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

После сборки конфигурации в самостоятельное мобильное приложение начались проблемы: 1С перестала получать от драйвера перехвата значения.
Сообщения отладчика драйвера показывают, что он нормально получает (get valid intent data ...) сканированное значение ШК, но в мобильном приложении не срабатывают Оповещения.

Снова запускаю конфигурацию 1С через мобильное приложение 1С - Оповещения срабатывают.

Пробовали варианты - сносили с ТСД Мобильную платформу 1С, устанавливали только собранное мобильное приложение - результат тот же.

Такое подозрение, что в драйвере перехвата где-то есть жесткая привязка ...
=====

Вы можете чем-то помочь?
29. DMon 120 12.07.18 15:39 Сейчас в теме
(28) С такой ситуацией не сталкивался. "Внутри" всё просто: слушать одно, если подходит по данным - передать дальше. Там кода на 20 строчек. К сожалению, без устройства ничем помочь не смогу.
32. ShalamovEV 28.08.18 09:36 Сейчас в теме
(28) Ситуация один в один. Сервис отправляет оповещение в Мобильную платформу, а в собранное приложение не хочет. Вам удалось как то решить вопрос?
33. menen 04.09.18 12:20 Сейчас в теме
(32) Проблему так и не решил
30. menen 18.07.18 14:01 Сейчас в теме
Дмитрий, я приобрел на Инфостарте https://infostart.ru/public/587908/ ваши исходники.

Чтобы уже копать самостоятельно, можете выслать исходники (на почту), которые вы сделали для https://infostart.ru/public/704582/
31. DMon 120 18.07.18 14:56 Сейчас в теме
(30) День добрый!
Но они именно такие, которые выложены на инфостарте и доступны к скачиванию. Других нет.
34. KBNIKKB 20.11.18 07:32 Сейчас в теме
"ПолученШтрихКод(Параметр) " Эта процедура что делает?
35. DMon 120 20.11.18 10:26 Сейчас в теме
(34) Обрабатывает полученный ШтрихКод, который передан в Параметр.
Мне эту процедуру описывать нет смысла, так как у каждого она своя.
36. KBNIKKB 20.11.18 10:55 Сейчас в теме
(35) Если рассматривать по-шагово, то будет примерно так ?
Прикрепленные файлы:
37. DMon 120 20.11.18 10:59 Сейчас в теме
(36) Примерно да. В конце можно не "сообщить что-то там", а Параметр. В нем должен быть ШК.
но это предыдущий вариант компоненты
более новый тут https://infostart.ru/public/587908/
38. KBNIKKB 20.11.18 11:02 Сейчас в теме
(37) А процедуры из "ОбщийМодульСобытие" мне от куда нужно вызывать ?
39. KBNIKKB 26.11.18 11:52 Сейчас в теме
Еще вопрос, какие настройки нужно сделать на ТСД ?
40. DMon 120 26.11.18 12:00 Сейчас в теме
(39) В ветке полно информации. Как минимум сканирование НЕ в разрыв клавиатуры
41. WellMaster 104 03.09.19 14:25 Сейчас в теме
Уважаемый автор!

Нет ли возможности доработать сервис, чтобы он, перехватывая сообщение broadcast не только передавал событие в 1с, а еще и устанавливал перехваченное сообщение в буфер обмена и при этом эмулировал бы нажатие клавиши "v"?
Очень надо. Могу объяснить для чего.

Спасибо.
42. DMon 120 03.09.19 14:28 Сейчас в теме
(41) ответил в предыдущем посте.
Вы прям мастер копипаста ;)
43. user591316_amixeev 28.12.20 12:39 Сейчас в теме
Не получается установить на Zebra tc25, может кто знает ,как здесь события\параметры называются?
44. user785225 17 27.06.23 18:36 Сейчас в теме
👋 не запускается при раскомментировании строчки
ДоставляемыеУведомления.ПОдключитьОбработчикУведомлений

Функциональность push-уведомления отключена в мобильном приложении (см. рис.)

Надо качать более старый мобильный клиент? (скачал от УНФ из гугл.плея 1.6.24 отсюда)
Прикрепленные файлы:
45. DMon 120 27.06.23 18:43 Сейчас в теме
(44) Писалось под мобильное приложение, а не мобильный клиент
user785225; +1 Ответить
46. vladnet 361 04.10.23 10:50 Сейчас в теме
Здравствуйте! скачал приложение запускаю сервис, похоже он принимает оповещение и после этого приложение падает.
Я думаю проблема в версии Андроид 11. Сам ТСД Chainway
Оставьте свое сообщение