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

06.04.20

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Package.zip - архив с мобильной внешней компонентой для Android.
.zip 2,61Mb
29
29
3 SM
Скачать Купить за 2 450 руб.

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

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

2880 руб.

03.12.2018    56876    178    103    

169

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    35556    93    161    

189

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

309

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

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    17328    16    33    

21

1С-программирование Мобильная разработка Программист Стажер Платные (руб)

Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.

12900 руб.

08.06.2023    7122    1    0    

47

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

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

3000 руб.

12.05.2020    27048    135    98    

87

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

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35792    110    127    

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

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

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

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

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

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

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

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

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

Если же необходимо различать ввод с виртуальной клавиатуры от ввода с аппаратной клавиатуры, то действительно необходимо искать способ как включить аппаратную клавиатуру в режим внешнего события. Возможно, что это не возможно.
5. AneJIbcuH 38 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 38 19.05.20 11:01 Сейчас в теме
(9) в самом андроиде на ТСД в мобильной платформе.
WellMaster; +1 Ответить
11. AneJIbcuH 38 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 86 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 366 04.10.23 11:38 Сейчас в теме
Подскажите пожалуйста на 11 андроиде она будет работать? Уже кучу библиотек перепробовал ничего не работает (((
33. kinan 34 04.10.23 15:14 Сейчас в теме
34. vladnet 366 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 6 31.01.24 16:01 Сейчас в теме
(36)Сегодня разбирался с аналогичной проблемой. Если ошибка при получении, то компоненту нужно установить!
Оставьте свое сообщение