Обмен данными с приложениями Simple с помощью скрипта-шины

23.08.24

Интеграция - WEB-интеграция

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Конфигурация с примерами
.ui 26,12Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.
apk- релиз 12.12.00
.apk 71,65Mb
1
1 Скачать (1 SM) Купить за 1 850 руб.
apk- релиз 12.12.00 (c "большими" python-библиотеками -opencv и т.д.)
.apk 113,70Mb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Данный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между пользователями Simple как между устройствами так и между бек-системами. По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS, и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок.

В Simple нет push, но отчаянно нужна замена, т.к. постоянно пинговать сервер с целью проверить, есть ли данные для устройства – не лучшая практика. В клиенты Simple встроен собственный http-сервер, но его IP не внешний, получается, до него не достучаться из внешнего интернета – только внутри одной подсети. Цель этого релиза сделать так, чтобы закрыть все потребности передачи информации между клиентами Simple и серверами, что называется, «из коробки». Т.е. прописать пару настроек шины в «Настройках» и все – приложение может получать данные 24/7 и отправлять одной командой – SendBus.

Что для этого было сделано:

  1. Доработано приложение, чтобы оно всегда было на связи с шиной через WebSocket, более корректно работало с обрывами, держало фоновый сервис и т.д. и т.д. Это еще не предел, в других релизах будут новые оптимизации. Почему WebSocket? Чтобы получать реакцию мгновенно.
  2. На питоне собрана простенькая шина, которую можно вывесить в интернет и мы получаем внешний эндпоинт, на котором постоянно сидят все клиенты Simple и по мере необходимости по HTTP обращается внешняя система (например, 1С)
  3. Шина взаимодействует не просто с текущей открытой конфигурацией, а со всеми установленными в репозиторий конфигурациями. Таким образом можно писать "фоновые" драйвера для получения и отправки информации. Например, можно написать драйвер для взаимодействия с SQLite или для того, чтобы отправлять запрос на устройство и сразу получать его координаты GPS или, например, список WIFI-сетей (для контроля местоположения). Это не мешает текущей выполняемой конфигурации. У репо появляется новый смысл. Теперь Simple похож на квази-операционную систему
  4. Для передачи больших объемов (все-таки WebSocket для коротких сообщений) WebSocket является сигнальным средством, а основная передача осуществляется через HTTP  с докачкой, побайтовой скачкой, воркером докачки и прогресс-баром. Simple сам это все делает, разработчику не надо заморачиваться.

Собственно, все описано в новом разделе документации тут (ссылка на Гитхаб - там же):  https://uitxt.readthedocs.io/ru/latest/bus.html

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

Пример 1: Совместное сканирование товара

 

 

Например, несколько пользователей проводят инвентаризацию или это волновая сборка заказа. Все, что сканирует один – сразу же пишется в локальные СУБД Pelican на других ТСД и отображается на экране. Когда пользователь редактирует количество – оно тоже отображается у всех


Устроено так:

1. на экране - табличка-выборка из локальной СУБД (используется NoSQL Pelican, но можно использовать SQL-не суть)

records = pelicans['samples_bus']['wave'].all()

2. когда пользователь сканирует, происходит запись в БД и отправка в шину на подписку #wave

if hashMap.get("listener")=="barcode":
	d = {"_id":hashMap.get("barcode"),"barcode":hashMap.get("barcode"),"qty":"","user":str(hashMap.get("BUS_ID"))}
	a = pelicans['samples_bus']['wave'].insert(d,upsert=True)	
	message = {"to":["#wave"],"message":{"operation":"insert", "data": d},"uid":"d24f4b9f96f4411b96a4ed36afc1ccfe"}
	hashMap.put("SendBus",json.dumps(message,ensure_ascii=False))	

3. при приеме сообщения (общее событие onSimpleBusMessage) данные помещаются в СУБД и вот тут появилась новая команда RestartScreen, в отличии от RefreshScreen она не только перерисовывает экран (как видно команда выполняется из фона, а не из контекста экрана) но и выполняет обработчики onStart/onPostStart

sbmessage = json.loads(hashMap.get("SBMessage"))
message = sbmessage['message']

if "operation" in message:
	t= message.get("operation")
	if t == "insert":
		a = pelicans['samples_bus']['wave'].insert(message['data'],upsert=True)
	elif t == "update":
		a = pelicans['samples_bus']['wave'].update({"_id":message['data']['_id']},{"qty":message['data']['qty']})	
	if android.process_started():
		hashMap.put("RestartScreen","")
	elif android.cv_started():
		hashMap.put("RestartCV","")	
	android.toast('Приняли данные')

Подготовка к примеру: 

1)    Нужно завести пользователей шины (описано в документации)

2)    Установить у них подписку на тег #wave (POST-запросом put_users)

3)    Прописать настройки шины в настройках приложения
 

Пример 2: Контроль сканирования

 

 

Продолжение предыдущего примера. Допустим работник хочет проверить – все ли товары просканированы. Для этого от включает ActiveCV и видит синим – товары, которые сканировали другие пользователи, зеленым – то, что сканировал он, серым – то, что еще не обработано

С точки зрения начинки – тут все аналогично, но также появилась новая команда RestartCV – она выполняет обработчик onCreate, таким образом у меня в примере пользователь видит, к у него «в прямом эфире» в камере появляются новые подкрашенные объекты (это другой пользователь сканирует и отправляет в шину)

Пример, кстати, можно усовершенствовать – например, тыкать в «серые», чтобы выходил экранчик с вводом количества, и сразу писать в БД штрихкод и количество. Также если в БД есть названия товаров, можно выводить названия. Но этот пример не по ActiveCV, а по шине, поэтому я остановился на этом.

Подготовка к примеру аналогична предыдущему примеру.
 

Пример 3: Передача файлов. 

 

 

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

Файл тут оправляется запросом HTTP, а не командой передачи в шину.

Подготовка тут аналогична – файл отправляется подписчикам тега #wave

 

Прочие базовые примеры.


В предыдущих примерах мы взаимодействовали с СУБД в обработчиках сообщений, но можно использовать команду feed у Pelican и передавать запросы пакетно в JSON, получая ответ также в JSON без единой строчки кода. Например, можно отправить запрос из 1С на то, чтобы добавить нужные данные в справочники, получить подтверждение, либо отправить запросы на выборку данных, получить в ответ JSON с данными из коллекций БД устройство. Работает только с Pelican, с SQL не делал. Если надо такую же штуку на SQL, то можно легко написать конфигурацию-драйвет. В чем смысл? Дело в том что шина взаимодействует не только с текущей конфигурацией, но и со всеми целевыми конфигурациями в репозитории, т.е. можно сделать некую конфигурацию, которая умеет принимать-отправлять пакетные запросы SQLite устройства, поставить ее на устройство и поместить в репо (скрепка) и она будет делать то, что вам нужно. 

Посмотреть примеры (ui-файлы) можно на https://seditor.ru:1555/ или развернув редактор локально (https://github.com/dvdocumentation/web_simple_editor). 

Конечно же, Телеграм-канал проекта, в котором масса всего полезного:  https://t.me/devsimpleui

Simple python

См. также

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

Функциональное решение для торговли на всех популярных маркетплейсах. Работает со схемами FBO и FBS. Простое в использовании и установке, не вносит изменения в код программы. Существенно упрощает работу с товарным ассортиментом, обработку заказов с площадок, работу с поставками, а также ведение аналитики по продажам и остаткам.

119999 руб.

19.07.2024    1749    52    0    

3

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

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

08.06.2023    9831    0    Infostart    0    

67

SALE! 25%

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

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

13200 9900 руб.

27.12.2021    37748    105    161    

199

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

320

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

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

3000 руб.

03.12.2018    59030    191    103    

172
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kote 537 27.08.24 10:12 Сейчас в теме
1) Дмитрий, а интерпретатор python в akp содержит в себе библиотеку asyncio (она вроде в стандартной библиотеке должна быть)?

2 ) Про Termux наверное слышали? Нет ли у Вас планов организовать работу похожим образом (в Termux удобно, что можно установить python, а потом pip устанавливать только те библиотеки, которые нужны..
Или, может быть, как-то подружить Вашу разработку, чтобы можно было установленный туда python использовать.
Оставьте свое сообщение