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

31.08.17

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
BarCodeTo1C.apk
.apk 645,65Kb ver:1.0
119
119 Скачать (1 SM) Купить за 1 850 руб.

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

Предыстория аналогична как //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.х Управленческий учет Платные (руб)

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

3000 руб.

03.12.2018    62150    212    103    

180

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

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

13200 руб.

27.12.2021    41734    118    167    

213

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

336

Мобильная разработка Программист Платформа 1С v8.3 Мобильная платформа 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Абонемент ($m)

Товары (либо другие учетные объекты) могут быть промаркированы штрихкодами либо быть без штрихкодов, но с число-буквенным обозначением (артикулом, VIN-номером и т.д.). И та, и другая ситуация не проблема для SimpleUI. Но что делать, если нет ни того, ни другого? Вообще никакой маркировки. Как можно максимально ускорить работу с таким объектами? В статье показываю новые фичи релиза и готовые для встраивания поисковые комбайны на все случаи жизни. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

14.04.2025    1292    4    informa1555    0    

15

Мобильная разработка Программист Платформа 1С v8.3 Абонемент ($m)

В Simple появился еще один онлайн-режим, не через REST-API, а через веб-сокеты. Показываю, что это дает, ради чего было сделано. А также два чисто онлайновых примера с такими обработчиками еще и с использованием новой ActiveCV 2.0. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

07.02.2025    3574    informa1555    3    

28

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

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1865    6    informa1555    1    

13

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

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    3438    29    informa1555    0    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tahallus 441 09.02.17 12:57 Сейчас в теме
Исходники на GitHub будете выкладывать ?
2. DMon 121 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 121 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 121 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 121 25.04.17 08:12 Сейчас в теме
(8)можно через logcat. Можно разобрать сервисную апк по настройке сканера и просмотреть там IntentFilter.
10. d_sdr 4 05.06.17 15:34 Сейчас в теме
подскажите, в процедуре "ПодключитьГлобальноеСобытиеОповещения" вызывается такая интересная вещь, как
ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(...)

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

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

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

Заранее спасибо!
20. DMon 121 25.09.17 20:37 Сейчас в теме
21. Dimitrij 26.09.17 11:08 Сейчас в теме
(20) У Вас случаем нет решений по моей проблеме?
22. DMon 121 26.09.17 12:21 Сейчас в теме
(21) Мобильный клиент слушает бродкаст от утилиты. Я не знаю как браузер Хром научить слушать бродкаст.
Возможно это как-то и делается, но я с таким не сталкивался.
23. evgeny43 34 18.12.17 14:06 Сейчас в теме
А только утилита может отправить в бродкаст?У меня тсд honeywell , в меню сканирования есть раздел scan to intent, я прописал согласно маунала имя интента в хмл платформы , и ничего .... платформа ( 8.3.9.91 мобильная)
24. Широкий 693 30.01.18 15:31 Сейчас в теме
ИдБазыДанных=Прав(ПолучитьНавигационнуюСсылкуИнформационнойБазы(),36);
user598655_ilia-bers; Danil.Potapov; +2 Ответить
25. IgorKissil 361 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 121 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 121 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 121 18.07.18 14:56 Сейчас в теме
(30) День добрый!
Но они именно такие, которые выложены на инфостарте и доступны к скачиванию. Других нет.
34. KBNIKKB 20.11.18 07:32 Сейчас в теме
"ПолученШтрихКод(Параметр) " Эта процедура что делает?
35. DMon 121 20.11.18 10:26 Сейчас в теме
(34) Обрабатывает полученный ШтрихКод, который передан в Параметр.
Мне эту процедуру описывать нет смысла, так как у каждого она своя.
36. KBNIKKB 20.11.18 10:55 Сейчас в теме
(35) Если рассматривать по-шагово, то будет примерно так ?
Прикрепленные файлы:
37. DMon 121 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 121 26.11.18 12:00 Сейчас в теме
(39) В ветке полно информации. Как минимум сканирование НЕ в разрыв клавиатуры
41. WellMaster 104 03.09.19 14:25 Сейчас в теме
Уважаемый автор!

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

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

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

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