Внимание! Данный релиз будет работать только с версией SImpleUI 11.95.25 , котрая лежит в архиве. На Google Play старый релиз.
Архитектурно решение выглядит так: структура классов встраивается в конфигурацию (к ней потом обращаются обработчики, есть соответствующие методы), генерируются формы списков, формы объектов, формы выбора и другие формы со ссылками на обработчики python. В сгенерированную конфу надо скопировать так называемые «универсальные обработчики», прилагаемые к генератору, или просто использовать файл с универсальными обработчиками, либо можно просто использовать прилагаемый файл обработчиков.
От разработчика требуется определить структуру классов («метаданных») в виде JSON-файла, и решение будет сгенерировано. Пример файла классов - в архиве.
Конфигурация, созданная генератором, поддерживает стандартные CRUD-операции, поиски и т.д. По сути аналог в 1С метаданные + автогенерируемые формы, но через JSON-описание.
Конкретно этот генератор создает конфигурацию с обработчиками на Python и хранением в SimpleBase – локальной NoSQL СУБД, созданной специально для Simple. Можно сделать на MongoDB, например (например, pureWMS изначально сгенерирована генератором на MongoDB, потом доработана). Конкретно этот генератор создавался под Android версию Simple. При необходимости его несложно переделать на веб.
Не призываю их использовать повсеместно – вместо обычной разработки, но как подспорье для того, чтобы сгенерировать НСИ – можно.
Файл классов состоит из массива JSON- объектов, каждый из которых является классом – т.е. имеет свою структуру хранения, формы, отображение и т.д. Например:
{
"_id": "units",
"_title": "Единицы",
"name(Наим.)": "text"
}
создаст 3 формы и скрипты хранения единиц:
Обязательное поле _id – его лучше задавать в английской раскладке, это идентификатор класса
Поле _title – отображаемое имя, имя процесса (каждый класс – процесс в Simple)
_edit_form, _list_form, _selection_form – заполняются автоматически, созданными формами, но их можно потом поменять
Далее в классе идут поля.
Поле может иметь тип:
- Text
- Boolean
- Number
- _<ссылка на класс> - ссылка на класс вида _ИД класса. Ссылка на класс может задаваться с _ref на конце, тогда в объекте будет храниться только _id выбранного объекта, либо без _ref – тогда будет храниться весь объект.
Также у поля можно обозначить модификаторы:
- Имя(заголовок) – заголовок в поле ввода
- *тип – указывает что по этому полю возможен поиск
Также объект может иметь массив данных 2 видов:
1. Массив ссылок. Например, склад может иметь ссылки на ячейки этого склада. Ссылка обозначается как ИДкласса_ref
{
"_id": "warehouse",
"_title": "Склады",
"name(Наименование)": "*text",
"cells": [
"cell_ref"
]
}
2. Массив объектов – это классическая «табличная часть» - в объекты можно заходить, править, они хранятся в родительском объекте в виде объектов целиком, а не ссылок. Пример – строка ТЧ это класс operation_order, объект – order. Ссылка на класс задается без _ref
{
"_id": "operation_order",
"sku": "text",
"qty": "number
},
{
"_id": "order",
"_title": "Заявки",
"customer(Получатель)": "*text",
"type(Тип операции)": "text",
"operations": [
"operation_order"
]
}
}
Внимание! Данный релиз будет работать только с версией SImpleUI 11.95.25 , которая лежит в архиве. На Google Play старый релиз.
Телеграм-канал проекта, в котором масса всего полезного: https://t.me/devsimpleui