Интерпретатор 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С v8.3 1С:Конвертация данных Платные (руб)

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

13200 руб.

27.12.2021    38193    108    161    

201

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

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

3000 руб.

03.12.2018    59288    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    97216    586    189    

321

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

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

3450 руб.

28.04.2023    9468    15    0    

9

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

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

7000 руб.

25.05.2022    4643    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    2605    29    informa1555    0    

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

import pandas

пакеты как добавляются ? pip?
4. informa1555 2715 15.02.21 21:28 Сейчас в теме
(3) нет стандартная библиотека и несколько дополнительных пакетов включены в пакет приложения. Все основное есть. Полный список - в документации https://uitxt.readthedocs.io/ru/latest/python.html pip к сожалению нет)). На стационарной платформе такое прокатит, на мобильной - нет.
7. kote 537 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 2715 16.02.21 09:25 Сейчас в теме
(7) Добрый день! Спасибо. Да, я видел эту штуку, очень прикольная, я ее рассматривал но я не знаю как с ней интегрироваться. Мне нужно чтобы на лету запускались скрипты - скорость очень важна. Даже не потому что это на высоконагруженных складах используется, а потому что там по расписанию пользовательские задачи могут выполняться с интервалом несколько мс. Да, ставить pip ом пакеты круто конечно. Хотелось бы иметь такую возможность, сейчас я только при сборке могу выбирать пакеты. Ну с другой стороны сейчас все работает, работает быстро, стабильно в принципе всего пока хватает, если будет не хватать - добавлю. И тут соединение питона с Simple UI дает нормальный андроидовский интерфейс а не консоль все таки.
9. kote 537 16.02.21 09:55 Сейчас в теме
(8) Ясно, всё понятно..

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

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

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

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

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

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

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

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

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

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