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

31.08.17

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
BarCodeTo1C.apk
.apk 645,65Kb ver:1.0
117
117 Скачать (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С v8.3 1С:Конвертация данных Платные (руб)

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

13200 руб.

27.12.2021    38196    108    161    

201

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

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

3000 руб.

03.12.2018    59291    192    103    

172

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

321

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

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

3450 руб.

28.04.2023    9469    15    0    

9

Мобильная разработка Платформа 1С v8.3 Конфигурации 1cv8 Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    4644    1    0    

6

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

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

1 стартмани

23.08.2024    1215    6    informa1555    1    

13

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

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

1 стартмани

25.06.2024    2607    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tahallus 441 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 18 31.08.17 20:23 Сейчас в теме
ошибка при синтаксическом анализе! чувствую себя обманутым!
17. DMon 120 31.08.17 21:10 Сейчас в теме
(16) очень информативно, сейчас попробую угадать...
18. mxs89 18 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 33 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 354 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 26 27.06.23 18:36 Сейчас в теме
👋 не запускается при раскомментировании строчки
ДоставляемыеУведомления.ПОдключитьОбработчикУведомлений

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

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