Интерпретатор Python в мобильном приложении Android и еще много всего. Февраль 2021

15.02.21

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

В новом релизе можно писать скрипты на полноценном Python 3.8 с популярными библиотеками. Также появились новые виды обработчиков и новый функционал. В небольшой обзорке я покажу некоторые преимущества сочетания Питона с конструктором Simple UI по сравнению с другими видами разработки. А также добавился новый функционал: локальное хранилище конфигураций (стартер конфигураций) и новые возможности организации многопользовательского доступа. Дополнение к основной статье: https://infostart.ru/public/1153616/

Python и все-все-все.

 


Сначала о том как я к этому пришел. Я делаю инструментарий для облеченного создания бизнес-приложений. Его суть такая: допустим у нас есть задача сделать какой то АРМ или мобильное рабочее место для учета или управления в экосистеме 1С/SAP или другой учетной системы(или не учетной), так как я разрабатываю под Android SDK то я могу сделать это нативными средствами, и так как я все-таки 1Сник я могу это сделать на 1С:Мобильной платформе или 1С:Мобильном клиенте, но вариант 1С кажется мне спорным так как при сопоставимых трудозатратах на 1С нельзя сделать то что можно сделать в нативной разработке – ни по функционалу, ни по быстродействию/надежности, да еще вроде бы 1С в отличии от других средств разработки не бесплатная (но это не точно). Ну ок, допустим я выбрал какое то средство для разработки, но тут вот какой момент – при всем своем разнообразии задачи учета состоят из неких стандартных повторяющихся логических блоков, и из этих кубиков хотелось бы собирать решение, чтобы была визуальная структура, чтобы можно было видоизменять под изменяющиеся процессы бизнеса не запутываясь в коде. Для этого есть третий подход – конструктор. Я сравниваю это с замечательной штукой «1С: Конвертация данных». Можно делать конвертацию без нее. Просто взять и написать обработчики каждый раз с нуля. А можно с ней и решение получится структурированным и готовым к изменениям/масштабированию. Смысл конструктора примерно в этом . Вроде бы Simple UI - нужная штука.  Но к сожалению у меня была одна проблема –  удобный интерпретатор кода (да обработчики все равно надо писать – от этого никуда не деться). Когда клиент работает в онлайн-режиме код выполняется на стороне учетной системы, а вот когда в самостоятельном режиме – тут я сделал свой «метаязык» + стандартный SQL для работы с СУБД приложения. И хотя там были и интерпретаторы выражений, условные переходы и т.д. я все равно с завистью смотрел на ту же 1С где можно сделать все. Даже если «все» не нужно на конкретном проекте, всегда хочется иметь запас под рукой, чтобы быть уверенным.  В общем решение нашлось – интерпретатор Python. Благодаря головастым ребятам из Англии его теперь можно привинтить в нативные Java/Kotlin gradle проекты. Это прям серебряная пуля для меня – настолько хорошо это ложиться на архитектуру Simple UI.


Сами посудите: 

  1.     Python  – один из самых простых для изучения языков.
  2.     При этом это настоящий мощный язык с классами и другим конструкциями «взрослых» языков
  3.     Python лучший язык для обработки данных, недаром он mast have для data science.
  4.     При этом это лучший язык для скриптов (его многие и воспринимают как язык скриптов хотя это давно не так) а мне как раз и нужны скрипты и по больше части обработка данных, но и по возможности чтобы это было просто и лаконично.
  5.     Это весьма распространённый в мире язык с множеством мощных библиотек и огромным комьюнити (что также важно для меня так как на Simple UI разрабатывают не только в СНГ)

Получается из всех языков для обработки бизнес-логики Python наверное самый подходящий. Вот это удача!

Просто приведу пару примеров чтобы показать удобство и лаконичность Python :


1.    Отправляем запрос и сразу получаем объект ответа сразу в виде объекта json

r = requests.get('https://www.cbr-xml-daily.ru/daily_json.js')
rjson = r.json

2.    Читаем нужные колонки в файле Excel на выходе готовый объект
 

import pandas
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Cars', usecols=['Car Name', 'Car Price'])

 

Как соединяется Python c  Simple UI?

 

  •     Через «Переменные» - общий стек переменных обычных и глобальных, отображаемых и нет через который передаются также и команды
  •     Через прямой доступ к SQL приложения из скрипта

Пример скрипта «Калькулятор». hashMap  - это и есть "Переменные" Simple UI, put/get - поместить/вставить. Это все что нужно знать о соединении скриптов с конструктором

def get_action(unit):

    if unit == 'btn_c':
        return 'C'
    if unit == 'btn_q1':
        return '('
    if unit == 'btn_q2':
        return ')'
    if unit == 'btn_div':
        return '/'
    if unit == 'btn_7':
        return '7'
    if unit == 'btn_8':
        return '8'
    if unit == 'btn_9':
        return '9'
    if unit == 'btn_1':
        return '1'
    if unit == 'btn_2':
        return '2'
    if unit == 'btn_3':
        return '3'
    if unit == 'btn_4':
        return '4'
    if unit == 'btn_5':
        return '5'
    if unit == 'btn_6':
        return '6'
    if unit == 'btn_mul':
        return '*'
    if unit == 'btn_minus':
        return '-'
    if unit == 'btn_plus':
        return '+'
    if unit == 'btn_sign':
        return '-'
    if unit == 'btn_0':
        return '0'
    if unit == 'btn_res':
        return '='
    if unit == 'btn_dot':
        return '.'
    raise ValueError('Undefined unit: {}'.format(unit))

res = hashMap.get("res")
action = get_action( hashMap.get("listener"))
if action=="=":
    res=eval(res)
elif  action=="C":  
    res=0
else:    
    if res=="0":
        res=action
    else:
        res+=action

hashMap.put("res",str(res))            


И результат в Simple UI:


Пример работы с СУБД приложения прямым запросом к SQL

import sqlite3
from sqlite3.dbapi2 import Error
import json

conn = sqlite3.connect('SimpleWMS')
cursor = conn.cursor()
cursor.execute("SELECT nom FROM goods LIMIT 30")

json_res = {
"type": "table",
"textsize": "25",
"hidecaption": "true",
"hideinterline": "false",
"columns": [
  {
    "name": "title",
    "header": "Задача",
    "weight": "2"
  }
]
}

results = cursor.fetchall()
lst = []
for link in results:
    d = {}
    d['title']=str(link[0])
    lst.append(d)
json_res['rows']=lst
conn.close()

hashMap.put("table",json.dumps(json_res,ensure_ascii=False))  


И результат в Simple UI:

А вот пример поиска товаров по штрихкоду в Google – с экрана сканируется штрихкод, из выдачи Google с помощью beautiful soup выдергиваются заголовки:


А вот видео о том, как все это выглядит в Simple UI:

 

Локальное хранилище конфигураций/стартер конфигураций

 


Конфигурация в Simple UI – это обычная xml строка. Ее можно получить на устройство разными способами:

  •     Она скачивается через веб сервис учетной системы при прямом подключении
  •     Распространить через собственный магазин приложений (рекомендуется для самостоятельных конфигураций)
  •     Ее можно послать в виде файла (и программа ее откроет) вместе с настройками
  •     Можно передать через QR код вместе с настройками
  •     Через встроенный веб-сервис

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

  •     Выводится дополнительная информация о конфигурации – теги и описание
  •     Можно проверить подключение

 

Новые возможности логина

 

 

Теперь можно управлять подключением к сервису – настройками подключения для онлайн-режима и postgrest из своих экранов. При этом конфигурация с настройками также перезагружается и настройки записываются в основные настройки (либо НЕ записываются в зависимости от команды). Также добавлено поле ввода пароля. 
 

мобильная разработка ТСД Simple UI SimpleUI Python requests pandas

См. также

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

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

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

2880 руб.

03.12.2018    54994    139    102    

162

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33748    82    159    

177

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для 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    92296    519    186    

296

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

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

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

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1595    0    informa1555    1    

40

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    9057    ROk_dev    67    

41

JavaScript в Simple

Мобильная разработка Бесплатно (free)

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1685    informa1555    0    

25
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. stavrosoleg 10 15.02.21 19:20 Сейчас в теме
Просто мегареспект! Уже давно слежу за разработками и регулярно применяю в работе! Так держать!
Созинов; +1 Ответить
2. informa1555 2648 15.02.21 19:27 Сейчас в теме
3. pm74 199 15.02.21 20:52 Сейчас в теме

import pandas

пакеты как добавляются ? pip?
4. informa1555 2648 15.02.21 21:28 Сейчас в теме
(3) нет стандартная библиотека и несколько дополнительных пакетов включены в пакет приложения. Все основное есть. Полный список - в документации https://uitxt.readthedocs.io/ru/latest/python.html pip к сожалению нет)). На стационарной платформе такое прокатит, на мобильной - нет.
7. kote 536 16.02.21 08:52 Сейчас в теме
(4) Очень впечатляет, спасибо!

Надеюсь, будет полезна нижеследующая информация, про pip и python на смартфоне:

Обратите внимание на https://play.google.com/store/apps/details?id=com.termux&hl=en&gl=US

На днях установил Termux:
- установил python c pip
- установил pip'ом любимую песочницу (для python) -- Jupiter (https://jupyter.org)
- установил разные библиотеки..

Думаю, что достаточно просто можно развернуть на смарте целый проект на вебсервере - Flask или Django

====

Возможно, что эта штука может быть очень полезна и для Ваших целей
- если есть возможность использовать эту среду из Вашего приложения..
8. informa1555 2648 16.02.21 09:25 Сейчас в теме
(7) Добрый день! Спасибо. Да, я видел эту штуку, очень прикольная, я ее рассматривал но я не знаю как с ней интегрироваться. Мне нужно чтобы на лету запускались скрипты - скорость очень важна. Даже не потому что это на высоконагруженных складах используется, а потому что там по расписанию пользовательские задачи могут выполняться с интервалом несколько мс. Да, ставить pip ом пакеты круто конечно. Хотелось бы иметь такую возможность, сейчас я только при сборке могу выбирать пакеты. Ну с другой стороны сейчас все работает, работает быстро, стабильно в принципе всего пока хватает, если будет не хватать - добавлю. И тут соединение питона с Simple UI дает нормальный андроидовский интерфейс а не консоль все таки.
9. kote 536 16.02.21 09:55 Сейчас в теме
(8) Ясно, всё понятно..

Выскажу еще глупость) вдруг что-то пригодится.. отвечать не надо, просто зафиксирую.

Скорость. А что, если параллельно поднять на том же устройстве приложение с веб-сервисом в termux,
и уже с ним "общаться" из Вашего приложения? Оно постоянно работает и готово всегда обработать запрос..

Т.е. такая микро-микро-микро сервисная архитектура - в пределах одного мобильника.

Формы и UI - один "сервис", бекенд - другой.. с pip'ом и блекджеком.
10. informa1555 2648 16.02.21 10:03 Сейчас в теме
(9) Да, идея хорошая. А там вообще можно flask то запустить? Если да то наверное такое будет работать, только надо запускать termux при старте simpleui причем чтобы скрипт этот запускался... Еще как то доставлять туда код обработчиков (во встроенный то питон он с конфой simple ui доставляется). Но допустим если это все работает то в каких то случаях когда нужно не знаю там tensorflou запустить например тогда да, тоже вариант.
13. kote 536 18.02.21 11:55 Сейчас в теме
(10)

flask можно, пакеты встали без проблем, у меня тестовый скрипт работает

django еще не пробовал

.. а люди пытаются там doker крутить))

Но я сейчас пытаюсь использовать
jupyter notebook для автоматизации управления сервисами и сетью,
оно работает, но когда меняется ip приходится перезапускать терминал,
т.к. при отвале оно начинает слетать с катушек.. почему - пока не разбирался,
но думаю можно будет решить настройками среды
5. pm74 199 15.02.21 21:38 Сейчас в теме
ясно
в принципе нормальный набор , еще opencv напрашивается

поддержу (1) огромный респект за вашу работу
6. informa1555 2648 15.02.21 22:02 Сейчас в теме
(5) экспериментирую примерно в этом направлении, но сам open cv через питон на Андроиде конечно работать не будет, а open cv который для андроида обладает рядом ограничений и немного не так как в питоне работает. Да и тяжёлая это штука.
11. michael2006 1 16.02.21 18:37 Сейчас в теме
Вы просто молодцы! Давно искал фрейм для разработки легких мобильных приложений с удобным коннектом к 1С. Буду пробовать... Python - это огромный бонус, реализовать реально можно все.
12. informa1555 2648 16.02.21 18:39 Сейчас в теме
14. pm74 199 01.04.21 16:37 Сейчас в теме
как я понимаю hashMap неявно импортируется для любого обработчика python

можете показать как реализован сам hashMap ?
17. informa1555 2648 01.04.21 17:21 Сейчас в теме
(14) hashMap - это то что в 1С называется "Переменные" - то есть это Структура ключ- значение. Значение - стоковое. В Java - это Map<String, String> , питон с этим работает как с объектом put/get. Только строки соответственно.
15. pm74 199 01.04.21 16:52 Сейчас в теме
еще одно небольшое пожелание (предложение)
где то выделить место для пользовательских классов/функций
чтобы в (python)обработчиках можно было
from mymodule import myclass
16. informa1555 2648 01.04.21 17:17 Сейчас в теме
(15) не уверен что так получится - это файл надо размещать в пакете приложения... Надо подумать...
Оставьте свое сообщение