Мобильная платформа. Реакция на внешнее событие в Android при помощи внешней компоненты

06.04.20

Разработка - Разработка внешних компонент

Внешняя компонента для мобильной платформы на Android. Пришиваем платформе уши, чтобы лучше слышать.

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

Наименование Файл Версия Размер
Package.zip - архив с мобильной внешней компонентой для Android.
.zip 2,61Mb
27
.zip 2,61Mb 27 Скачать

Мобильные приложения ( при их разработке в Андроид Студио на Java ) зачастую используют функционал обмена широковещательными сообщениями. Обмениваться сообщениями могут объекты классов и в рамках одного приложения, и за пределами текущей активности. 

Сообщение представлено объектом "intent". Intent Отправляется в "эфир" посредством "sendBroadcast".

 Приёмником для сообщения станут объекты классов тех приложений, у которых активен приёмник широковещательных сообщений, настроенный на приём сообщений от конкретного "источника".

Делаем мобильной платформе такой приёмник.

Package.zip необходимо загрузить в макет внешней компоненты. Приём сообщений на мобильной платформе реализуется в форме ( у меня обработка )

Необходимо задействовать метод формы связанный с внешним событием

 

Код модуля формы:


&AtClient
Var ExtLib;

&AtClient
Procedure OnOpen ( Cancel )
	
 	AttachAddIn  ( "CommonTemplate.Broadcasts", "Sample", AddInType.Native );
	ExtLib = New ( "AddIn.Sample.Simons" );	
	
	//Кирилица
	//ExtLib.ИсточникИменаДействийФильтраНамерений = "OrdersPlusDelivery|ЧерезЧертуУказываемИменаИсточниковОтправителейСообщенийКоторыеХотимСлушать|ИхМожетБытьМного";	
	//ExtLib.СобытиеИменаНамерений  = "msgHead|ЧерезЧертуУказываемИменаИнтентовВнутриСообщенияКоторыеБудутИнтерпретированыКакПараметрНомерДваПроцедурыОбработкиВнешнегоСобытия";
	//ExtLib.ДанныеИменаНамерений   = "msgBody|АналогичноДляПараметраНомерТри";
	
	//ExtLib.Приём();  //Пуск приёмника широковещательных сообщений
	//ExtLib.Отбой();  //Стоп

	//Латиница		
	ExtLib.SourceIntentFilterActionsNames = "OrdersPlusDelivery";	
	ExtLib.EventIntentsNames  = "msgHead";
	ExtLib.DataIntentsNames   = "msgBody";	
	
	Lib.RegisterReceiver();
	//ExtLib.UnregisterReceiver();

EndProcedure

&AtClient
Procedure ExternalEvent ( Source, Event, Data )
	
	If Source = "OrdersPlusDelivery" Then	
		
		If Event = "CheckInn" Then
			
			//Например
			ExtLib.UnregisterReceiver();			
		Else
			//
			//Ваши действия
			//
		EndIf;
	Else
		//
		//Ваши действия
		//		
	EndIf;
		
EndProcedure

Работа компоненты проверена на платформе 8.3.15.59.

мобильная внешняя компонента broadcast receiver оповещения внешнее событие

См. также

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

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

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

2880 руб.

03.12.2018    54617    137    102    

161

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33280    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    91947    511    186    

293

Медиадисплей. Рекламный информационный монитор для покупателя.

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

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52105    34    69    

43

Магазин 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    3388    2    0    

4

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26244    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44976    117    64    

60
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AneJIbcuH 37 09.04.20 12:39 Сейчас в теме
Очень интересная компонента. Подскажите, есть ТСД на android, можно ли с помощью данной компоненты отловить нажатия кнопок с цифрами (1 - 9) на самом аппарате?
2. kinan 34 09.04.20 13:22 Сейчас в теме
Изначально компонента сделана для обслуживания метода "ВнешнееСобытие" модуля формы на стороне 1C. А он на вход требует 3 параметра. "Источник", "Событие", "Данные". С "источником" всё стандартно - он всегда присутствует в широковещательном сообщении как своеобразная маркировка, которой помечается сообщение в момент его создания при отработке "setAction".

Параметры "Событие" и "Данные" предполагаю, что разработчик приложения на Java вкладывает в широковещательное сообщение как "полезную нагрузку" в виде двух параметров типа "Ключ|Значение".

Если при нажатии на кнопки Ваш ТСД генерирует широковещательное сообщение с двумя дополнительными параметрами, то можно.

Необходимо знать какая текстовая строка в этом широковещательном сообщении используется в "setAction". А также названия ("ключ") дополнительных 2 параметров. На самой первой иллюстрации я привёл пример метода в котором создаётся подходящее для работы компоненты широковещательное сообщение.

Нужно знать что происходит при нажатии кнопок ТСД чтоб понимать как их обрабатывать. Может быть достаточно активного текстового поля на форме, реагирующего на нажатия кнопок клавиатуры не важно какой реальной или виртуальной. Тогда вообще никаких дополнительных компонент не нужно.
3. AneJIbcuH 37 09.04.20 14:41 Сейчас в теме
(2) Если сделать активным текстовое поле на форме, то нажатие кнопок на клавиатуре срабатывает. Но вот что хотелось бы получить: не активизируя поле ввода на форме вручную, начиная нажимать кнопки на клавиатуре, необходимое поле автоматически активизировалось (ну или не обязательно) и символы в это поле начали попадать.
Тут всё похоже, как работает сканер штрихкодов, когда тоже срабатывает "ВнешнееСобытие" модуля формы и штрихкод уже как надо обрабатывается.
4. kinan 34 09.04.20 18:30 Сейчас в теме
(3)Если срабатывает нажатие кнопок в текстовом поле, то аппаратная клавиатура работает в классическом режиме. Отличие от сканера в том, что он настраивается. Его настраивают так, что он начинает генерировать внешнее событие, или же вместо этого прикидывается клавиатурой и вводит отсканированный штрих-код в поле ввода.

Что-то мне подсказывает что Ваша задача решается таким образом:

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

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

Аналогичным образом работают интерфейсы кассиров во многих маркетах. Сканируют в текстовое поле, а оно в свою очередь отрабатывает какой-то код в "ПриИзменении". Например добавляет новую строку в чек, после чего само себя очищает и возвращает фокус ввода себе же.

Если же необходимо различать ввод с виртуальной клавиатуры от ввода с аппаратной клавиатуры, то действительно необходимо искать способ как включить аппаратную клавиатуру в режим внешнего события. Возможно, что это не возможно.
5. AneJIbcuH 37 10.04.20 08:38 Сейчас в теме
(4) Спасибо. А ваша компонента чем отличается от данной? https://infostart.ru/public/779912/
6. kinan 34 10.04.20 11:12 Сейчас в теме
(5)там ещё буфер обмена дают.
9. WellMaster 104 19.05.20 10:16 Сейчас в теме
(1) Нужно именно в самом Андроиде на ТСД отловить нажатия? Или в сеансе 1с в RDP? В самой 1с-ке мы научились отлавливать любые нажатия, используем, в т.ч. для принудительной подсветки активной кнопки, так как платформенная рамка вокруг кнопки слабо читается на ТСД.
10. AneJIbcuH 37 19.05.20 11:01 Сейчас в теме
(9) в самом андроиде на ТСД в мобильной платформе.
WellMaster; +1 Ответить
11. AneJIbcuH 37 19.05.20 16:04 Сейчас в теме
(9) И как научились отлавливать нажатия?
12. kinan 34 20.05.20 02:01 Сейчас в теме
(11)Для решения Вашей задачи по-сути нужно сделать кейлоггер. Для этого пишется специальное нативное android-приложение, являющееся accessibility сервисом. Такие приложения не видны среди приложений установленных в телефоне, их видно в настройках в разделе "Cпециальные возможности". Там же для каждого из установленных сервисов имеется выключатель, запускающий, либо останавливающий сервис. При старте Ваш сервис должен отслеживать все нажатия клавиш, определять аппаратное это нажатие или нажатие на виртуальной клавиатуре. И, при определённых условиях, он должен отправлять широковещательное сообщение куда надо (в 1с, в которой работает моя компонента приёма и обработки широковещательных сообщений о которой эта статья). В итоге, нужен комплекс мер. Приёмник я описал в этой статье. А передатчик ... стоит начать с него
13. WellMaster 104 20.05.20 10:36 Сейчас в теме
(11) С помощью этого: https://infostart.ru/public/91306/
Пришлось доработать инициализацию компоненты под УФ.
7. user1409768 18.05.20 17:38 Сейчас в теме
Здравствуйте. При запуске " Тип не определен "AddIn.Sample.Simons" " . Код скопирован с статьи, в какую сторону копать?
8. kinan 34 18.05.20 21:21 Сейчас в теме
Здравствуйте. нужно скачать Package.zip
27. vowg 85 21.07.22 06:59 Сейчас в теме
(8) Такая же ошибка, как в (7), файл скачал
30. nick_e 2 27.07.22 10:25 Сейчас в теме
(27) какая версия мобильной платформы у вас? я пытался на 8.3.15.2107 и на 8.3.20.50
29. nick_e 2 27.07.22 10:09 Сейчас в теме
(8) у меня так же ошибка Тип не определен "AddIn.Sample.Simons", но Package.zip загружен в шаблоны.
14. gladrus 17.07.20 09:52 Сейчас в теме
Сделал тестовую конфу, загрузил все как в статье,начинаю собирать и вот такое выскакивает.Что я не так делаю,проверил пути, папки есть
Прикрепленные файлы:
15. kinan 34 17.07.20 14:46 Сейчас в теме
(14) Такие проблемы были у меня. Они как то связаны с релизами платформы и сборщика мобильного приложения. 1С не сразу добавила поддержку ARM64. У Вас возможно не самая свежая версия платформы/сборщика. Работа компоненты проверена на 8.3.15.59 в связке со сборщиком 2.0.10.55
16. gladrus 17.07.20 16:02 Сейчас в теме
https://clip2net.com/s/48qRiQO

Не было прописано на создание нужных папок
17. kinan 34 17.07.20 16:43 Сейчас в теме
А ещё хочу обратить внимание счастливых обладателей восьми гигабайт оперативы на одну деталь, которую тоже придётся переделать в коде сборщика:
Прикрепленные файлы:
18. Leon75 15.07.21 10:24 Сейчас в теме
На 8.3.9.2170 при попытке установки внешней компоненты - ошибка формата потока.
19. kinan 34 15.07.21 20:51 Сейчас в теме
(18)Работа компоненты проверена на платформе 8.3.15.59

я с 8.3.9 наверное года 3 как попрощался. Конечно же можно поставить эксперимент, ок поищу 8.3.9. посмотрим что будет
20. Leon75 15.07.21 21:08 Сейчас в теме
(19) Вообщем было две ошибки:
макет был двоичных данных.
В IIS не было MIME .so и прочих расширений
ВК.
Спасибо за внимание.
21. user1068034 19.08.21 18:51 Сейчас в теме
Возможен вариант реализации отлова событий со сканера ТСД без сборщика , просто установкой Внешней компоненты ?
22. kinan 34 19.08.21 22:28 Сейчас в теме
(21)Сборщик необязателен. Достаточно мобильной платформы. Всё как на десктопе.
23. user1068034 20.08.21 17:56 Сейчас в теме
что то не взлетает, не подскажете . может тут что то нужно прописать , ТСД Honeywell EDA61K, android 9.
Прикрепленные файлы:
24. kinan 34 21.08.21 16:07 Сейчас в теме
Пример рабочего кода модуля формы обработки для ТСД SUNMI где выполняется приложение с использованием данной компоненты:

&AtClient
Var ExtLib;

//Local functions
//------------------------------------------------------------------------------------------------------------------

//Form events
//------------------------------------------------------------------------------------------------------------------

&AtClient
Procedure OnOpen ( Cancel )
	
 	AttachAddIn  ( "CommonTemplate.Broadcasts", "Sample", AddInType.Native );
	ExtLib = New ( "AddIn.Sample.Simons" );	
	
	ExtLib.SourceIntentFilterActionsNames = "com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED";	
	ExtLib.EventIntentsNames  = "data";
	ExtLib.DataIntentsNames   = "data";	
	
	ExtLib.RegisterReceiver ();
	
EndProcedure

&AtClient
Procedure BeforeClose(Cancel, Exit, MessageText, StandardProcessing)
	
	ExtLib.UnregisterReceiver();
	
EndProcedure

&AtClient
Procedure ExternalEvent ( Source, Event, Data )
	
	If Source = "com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED" Then	
		
		scan_result = Data;
		
	EndIf;	
	
EndProcedure
Показать


Из инструкции к Вашему ТСД взятой по такой ссылке: https://scanberry.ru/upload/iblock/cac/EDA61K_manual.pdf :
Прикрепленные файлы:
25. user1068034 25.08.21 08:47 Сейчас в теме
есть контакт , буду дальше тестировать, через какое то время отпишусь, Спасибо
26. пользователь 07.04.22 15:21
Сообщение было скрыто модератором.
...
28. пользователь 25.07.22 11:26
Сообщение было скрыто модератором.
...
31. nick_e 2 29.07.22 09:54 Сейчас в теме
для ТСД Honeywell ScanPal EDA50K ExtLib.SourceIntentFilterActionsNames = "scan.rcv.message" который я указал в настройке action на ТСД.
32. vladnet 361 04.10.23 11:38 Сейчас в теме
Подскажите пожалуйста на 11 андроиде она будет работать? Уже кучу библиотек перепробовал ничего не работает (((
33. kinan 34 04.10.23 15:14 Сейчас в теме
34. vladnet 361 09.10.23 02:09 Сейчас в теме
(33) Все прикрепил, но пишет что библиотека не подключена, и соответственно не создает addin. Что можно попробовать сделать?

И еще вопрос будет ли это работать и должно ли без создания apk файла с запуском из мобильной платформы с загрузкой конфигурации через публикацию?
Прикрепленные файлы:
35. kinan 34 15.11.23 17:12 Сейчас в теме
(34)похожий вопрос есть к другой моей компоненте
https://infostart.ru/1c/tools/1227575/ там вопрос № 12 и есть на него ответ, надеюсь будет толк
36. user1665490 28.11.23 16:49 Сейчас в теме
Здравствуйте, при открытии формы ошибка - Тип не определен(AddIn.Sample.Simons). По вопросам выше не понял как исправить ситуацию, там вы говорите об удаление компоненты для ее обновления, но у меня с первой установки апк и захода в программа была выдана данная ошибка, подскажите пожалуйста как починить.
37. kinan 34 29.11.23 00:31 Сейчас в теме
(36)там готовый рецепт для гарантированной отправки компоненты Вам в телефон. Её в Вашем приложении просто нет. Почему так? Наверное это к 1С. Я лишь рассказал историю моей борьбы с той же проблемой что и у Вас.
38. SAShikutkin 5 31.01.24 16:01 Сейчас в теме
(36)Сегодня разбирался с аналогичной проблемой. Если ошибка при получении, то компоненту нужно установить!
Оставьте свое сообщение