Новое приложение конструктора SimpleUI

19.04.22

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

Проект Simple UI обзавелся новым, самостоятельным инструментом создания/редактирования конфигураций с множеством улучшений. Также претерпели изменения сама архитектура решений и разработки. Основная статья, где содержатся файлы, тут: http://infostart.ru/public/1153616/

Конструктор написан на том же стеке Python+PySimpleGUI что и стационарный клиент и его можно скомпилировать под любую платформу (по умолчанию на Win64). Исходники доступны на GitHub https://github.com/dvdocumentation/simple_editor  Python выбран потому что в SimpleUI вообще широко используется этот язык в качестве скриптового и других местах в экосистеме. Несмотря на несколько архаичный интерфейс функционально  все направлено на увеличение скорости разработки, простоту и удобство.

Конфигурации simple ui теперь самостоятельные файлы *.ui соответственно их можно создавать, редактировать и отправлять на устройства. То есть «разделенный режим» при котором конфигурация (поставщик конфигурации) сама по себе, а 1С(или другим беком) с обработчиками (для онлайн режима) - сама по себе, это теперь рекомендуемый режим по умолчанию. Т.е. не нужно ставить конструктор на 1С, на 1С только исполняемая часть обработчиков онлайн. Пример расширения - внутри комплекта разработчика.

С конфигурациями SimpleUI теперь тоже можно работать на Git и они будут публиковаться тут: https://github.com/dvdocumentation/simpleui_samples

Сейчас там опубликована первая конфигурация конфигурация "Быстрый старт" с исходниками, к статье документации  https://uitxt.readthedocs.io/ru/latest/gettingstarted.html

Кстати, в связи с изменениями документация тоже изменилась, рекомендую ознакомиться с первыми двумя главами, для понимания новой концепции

Вкратце достоинства такие:

 

  • Мультиплатформенный и на бесплатном Python (не требует лицензии) – можно скомпилировать под любую платформу
  • Открытый код на GitHub
  • Многоязычный интерфейс, возможность подключать свои локализации
  • Можно открывать и редактировать, а не только создавать
  • Мгновенное отражение изменений в конфигурации при редактировании (т.е. автосохранение и сразу JSON пересобирается)
  • Мгновенное отражение изменений в исходниках на Python и трансляция на устройство
  • Встроенный Flask сервер – не нужно настраивать http-сервер
  • Легкое развертывание благодаря QR-коду
  • Не нужно именовать контейнеры и вообще можно работать с контейнерами и другими элементами как с кусками JSON (а не справочниками), что дает большие возможности
  • Можно копировать контейнеры между проектами или внутри проекта через буфер обмена на любых уровнях, можно вставить контейнер даже внутри себя – любая степень свободы через буфер обмена

 

Функционал, естественно, покрывает полный спектр возможностей платформы но есть изменения:

  • отказ от некоторых старых избыточных вещей которые наработались за последние 4 года
  • шаблоны стилей и шаблоны распознавания – теперь хранятся в теле конфигурации
  • общий модуль отменен, так как есть дополнительные модули Python и их можно подключать сколько угодно
  • Обработчик «при запуске конфигурации» теперь в «Таймерах по расписанию» с периодом «-1» 
  • Работа с -Python и -онлайн функциями только с вариантом «по именам», т.е. вариант с подключаемыми целостными файлами а не отдельными скриптами

Вот тут видео совсем ранней альфа версии, сейчас, к релизу стало получше:


 

У SimpleUI появился Telegram-канал:  https://t.me/devsimpleui

См. также

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

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

13200 руб.

27.12.2021    39732    112    163    

206

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

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

3000 руб.

03.12.2018    60401    200    103    

175

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

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

21000 руб.

28.04.2023    10125    16    2    

10

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

326

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

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

1 стартмани

23.08.2024    1498    6    informa1555    1    

13

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

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    2958    29    informa1555    0    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Wasssaby 2 19.04.22 16:17 Сейчас в теме
Добрый день Дмитрий. Скачал на попробовать, возникло много вопросов:
1. Открыл приложение на винде и сразу же при переименовании процесса ошибка:
Traceback (most recent call last):
File "C:\PythonProjects\simple_editor-main\simple_editor.py", line 2882, in <module>
row_selected = values['ConfigurationTable'][0]
IndexError: list index out of range

Вышел из положения сместив инструкции в строках 2938, 2839 на 4 пробела вправо. Чтобы они попали под условие if

2.еще строка 2882 row_selected = values['ConfigurationTable'][0] ошибалась также с out if range.
Выкрутился проверкой ConfigurationTable (там на момент ошибки было [] ) и если пустое - просто присваивал row_selected =0

3. Ну и как не бился, подключить телефон к новой конфигурации так и не смог.
QR из программы показывает вот это:
{"onlineURL": "192.168.1.107:5000", "RawConfigurationServiceAuth": "", "RawConfigurationServiceON": true, "OnlineSplitMode": true}

Как то вроде маловато настроек, по сравнению с прошлыми версиями.

Это копия текста из канала с телеграмма.


МОжет у меня версия питона не та, или еще что то не обновилось? Или просто пока клиент сыроват.
2. informa1555 2719 19.04.22 16:39 Сейчас в теме
(1) Добрый день! Я в телеграме ответил, по поводу 3 - исправил. 1 и 2 у меня никак не проявляются что бы я не делал. Т.е. например я открываю конфу или создаю конфу - все меняется.
ponkratov; +1 Ответить
5. Wasssaby 2 20.04.22 08:03 Сейчас в теме
(2) Да 3-й пункт - он же главный.

Первые два так, шероховатости.
Скачал с гита по новому и все заработало.
Конфа на телефоне запустилась.
Так что большое спасибо.
3. stos 34 19.04.22 21:20 Сейчас в теме
Дмитрий, добрый день.
Все круто! Спасибо.

Как-то непрозрачно получается, что открываешь конфигуратор (инструкцию, естессно, не читаешь), радостно лезешь создавать операции, экраны. И облом(. Зависает с ошибкой. Оказывается, прочтя инструкцию, нужно СНАЧАЛА создать проект, и уже потом можно предаваться радостям). Первый раз нарвался - аж ахнул от досады, что всё плохо. Может, при открытии сразу создавать проект, или как-то предупреждать?

А отладка питоновского кода будет? В видео не нашел.

И почему нельзя переопределить поведение кнопки План-факт? Хочу не табличку, а список карточек с обработкой нажатия на карточку.
4. informa1555 2719 19.04.22 22:32 Сейчас в теме
(3) Спасибо! Да по идее создавать то надо, только файл то где то надо размещать, а пока пользовптель не выбрал непонятно где - временный? Надо подумать. Отладка, ну она никуда не делась как у меня в статье про отладку есть , там в видео и в документации так и есть, только сейчас даже проще стало - сейчас же все обработчики в одном файле , туда прямо в него фласк засовываешь и работаешь онлайн, потом фласк убираешь и на устройство. Почти никаких лишних движений, даже можно автоматизировать на уровне конструктора по идее.

Переопределить кнопку - да они по идее вообще не особо нужны, так как можно свои кнопки нарисовать с картинками снизу и свои экраны наваять(скоро появится ещё больше степеней свободы со списками кстати). Так и делают обычно, разметка позволяет. Это так, осталось от времен когда платформа больше на ТСД использовалась.
6. stos 34 22.04.22 15:46 Сейчас в теме
В релизе 9.05 для включения отладки прописывали в 1с в тексте обработчика вызов функции: hashMap.put("py_function","test_on_start")
А сейчас как? Есть ведь только вызов функции по имени. Никак не пойму
Прикрепленные файлы:
7. informa1555 2719 22.04.22 17:12 Сейчас в теме
(6) Добрый день! Ну с py_function ничего не поменялось кстати. А по поводу отладки изобразил и проверил сейчас за 5 минут. Проще всего это сделать так:
1) сделал debug.py c вот таким текстом (NewFields_onCreate() - отлаживаемая процедура)

from flask import Flask
from flask import request
import json
app = Flask(__name__)

def NewFields_onCreate():
    #input_type: https://developer.android.com/reference/android/text/InputType
    default_password="123"
    if hashMap.containsKey("password"):
        default_password=hashMap.get("password")

    default_login=""
    if hashMap.containsKey("login"):
        default_login=hashMap.get("login")

    j1 = {"hint":"Логин","default_text":default_login}
    hashMap.put("fill_login",json.dumps(j1))

    j2 = {"hint":"Пароль","default_text":default_password,"counter":True,"counter_max":15,"input_type":145,"password":True}
    hashMap.put("fill_password",json.dumps(j2))
    
    return hashMap



@app.route('/set_input_direct/<method>', methods=['POST'])
def set_input(method):
    func = method
    jdata = json.loads(request.data.decode("utf-8"))
    f = globals()[func]
    hashMap.d=jdata
    f()
    jdata['hashmap'] = hashMap.export()
    jdata['stop'] =False
    jdata['ErrorMessage']=""
    jdata['Rows']=[]

    return json.dumps(jdata)

@app.route('/post_screenshot', methods=['POST'])
def post_screenshot():
    d = request.data
    return "1"

class hashMap:
    d = {}
    def put(key,val):
        hashMap.d[key]=val
    def get(key):
        return hashMap.d.get(key)
    def remove(key):
        if key in hashMap.d:
            hashMap.d.pop(key)
    def containsKey(key):
        return  key in hashMap.d
    def export():
        ex_hashMap = []
        for key in hashMap.d.keys():
            ex_hashMap.append({"key":key,"value":hashMap.d[key]})
        return ex_hashMap

if __name__ == '__main__':
    
    app.run(host='0.0.0.0', port=2075,debug=True)

Показать


2) В конструкторе сделал так - передвинул функцию с питона на онлайн (пример во вложении)


3) В настройках надо поставить лимит на запросы =0, иначе не будет успевать дожидаться и разделенный режим и URL скрипта выше с портом (больше ничего не надо)
Прикрепленные файлы:
8. stos 34 22.04.22 18:56 Сейчас в теме
(7)А если нет возможности передвинуть? Вы же не исключаете совместную работу онлайн и питон обработчиков? Например, в питон выбираю данные из nosql, и на втором круге этого обработчика эти данные обрабатываю в 1С

"Ну с py_function ничего не поменялось кстати" -
И опять я не пойму: куда впихнуть py_fuction? И надо ли оно теперь?
9. informa1555 2719 22.04.22 19:23 Сейчас в теме
(8) так hashMap или Переменные - оно никуда не делись. Если в стеке переменных будет py_function и url куда отправлять она отправит. Платформа не стала другой. Что касается не исключаю ли я одновременно, да я все понимаю - когда нибудь это будет массив с любым количеством вызовов онлайн/офлайн хоть по несколько раз на каждое событие. Таким образом можно задавать последовательность и с noSql работать удобнее. Но потом)Кстати при запросе из noSQL он сейчас сам уходит на 2й круг, т.е. считывает и снова выполняет обработчик 2 такта получается.
10. stos 34 22.04.22 19:41 Сейчас в теме
(9)Можете развеять мою дремучесть?
Дано: всё прекрасно работает, всё хорошо, все довольны. Но возникает необходимость что-то допилить в одном питоновском методе на устройстве. Как этот метод отладить? По шагам.
11. informa1555 2719 22.04.22 20:26 Сейчас в теме
(10) так выше же написал по шагам. Это вариант перенести вызов питон в онлайн обработчик, запустить, отладить и вернуть назад. Второй вариант , в любом обработчике - оффлайн поместить py_function - когда платформа это увидит вместо вызова онлайн сделает вызов питона онлайн. Как одновременно онлайн/офллайн в таком случае- никак сейчас в режиме отладки. Получается при любом раскладе питон запрещает онлайн обработчик.
12. Wasssaby 2 28.04.22 08:51 Сейчас в теме
Подскажите про настройки для отладки по FLASK в новом клиенте.

В модуле для телефона пишу это:
hashMap.put("py_online_url","http://192.168.1.107:2075");
hashMap.put("py_online_user","usr");
hashMap.put("py_online_password","");
hashMap.put("py_function","get_changes_from_server");

В отдельном модуле описываю процедуру get_changes_from_server и все обвесы как тут:
https://uitxt.readthedocs.io/ru/latest/debug.html#http

Какие настройки в редакторе поставить чтобы процедура выполнялась?

Мне пишет "ошибка соединения.

hashMap.put("py_online_url","http://192.168.1.107:2075"); тут мой реальный локальный ип и порт, телефон в одной сети с компом

В процедурке на компе фласк по этому порту слушает. И отвечает. Как его вызвать из SimpleUI?
13. Wasssaby 2 28.04.22 09:42 Сейчас в теме
Сумбурный вопрос получился, поправлюсь:
1. Создаю чистую конфигурацию
2. Добавляю 1 процесс, в нем один контейнер, в нем одну кнопку.
3. В обработчик при запуске добавляю свою процедуру get_changes_from_server
4. В питон файле в телефон оставляю только эти строчки:

hashMap.put("py_online_url","http://192.168.1.107:2075");
hashMap.put("py_online_user","usr");
hashMap.put("py_online_password","");
hashMap.put("py_function","get_changes_from_server");

5. Еще один модуль, с фласком, как в справке, запускаю на компе, комп с айпишником 192.168.1.107:2075, в нем процедура для отладки get_changes_from_server

Какие настройки должны быть в редакторе, чтобы я смог отловить процедуру get_changes_from_server
Или что я в принципе не так делаю?
15. stos 34 28.04.22 12:47 Сейчас в теме
(13)а с компа устройство пингуется?
14. Wasssaby 2 28.04.22 12:45 Сейчас в теме
Пожалуй, попробую с другой стороны: а можно рабочий пример отладки любой примитивной конфы. В виде файлика ui для телефона и файлика .py с фласком?
16. Wasssaby 2 28.04.22 12:49 Сейчас в теме
Ну, пинговать не пробовал, SQL запросы из консоли выполняет.
Порты я менять пробовал.
Из браузера в телефоне - видит
А при нажатии кнопки с обработчиком - пишет ошибка соединения
17. al_zzz 303 30.11.22 12:38 Сейчас в теме
Здравствуйте, Дмитрий! Хочу воспользоваться конструктором SimpleUI. Пытаюсь запустить пример для быстрого старта и делаю всё как в видео.
Но при сканировании qr у меня приложение на смартфоне пишет, что конфигурация загружена, а потом не может загрузить конфигурацию. Что я делаю не так?
Если смотреть в настройках на устройстве, там такой путь(скрин). Ip соответствует. Порт открыт.
Прикрепленные файлы:
18. informa1555 2719 30.11.22 12:44 Сейчас в теме
(17) Добрый день! Попробуйте в браузере этот url вбить на устройстве
19. al_zzz 303 30.11.22 13:06 Сейчас в теме
(18) Дело в файрволле, похоже, было. Дмитрий, а можно как-то так указывать в конструкторе, чтоб адрес не из локальной сети в настройки подставлялся? Или, чтоб, можно было указывать конкретный ip в самом конструкторе?
20. informa1555 2719 30.11.22 13:18 Сейчас в теме
(19) ну там же исходники есть, можно подправить если надо
Оставьте свое сообщение