Форма - 1) Композитный визуальный компонент приложения 2) Формальное количественное и качественное описание визуального компонента в формате JSON;
Данные по форме - данные компонента конкретной формы в формате JSON;
Документ по форме - экземпляр формы с данными в хранилище;
Проигрыватель форм - компонент системы, выполняющий функции построения/отображения форм, валидации и формирования данных по форме для их сохранения.
Формат формы
{
"uuid": "07fe3d28-2f1b-4ae4-9414-22c08f53b3d2",
"name": "Тестовая 3",
"nameru": "Тестовая 3",
"namekz": "Тестовая 3",
"code": "Тестовая_3",
"description": null,
"type": "form",
"config": {
"background": "#ffffff"
},
"properties": [],
"data": [],
"datasources": [],
"pointers": [],
"layout": {}
}
Описание полей
| Поле | Описание |
|---|---|
| uuid | Идентификатор формы |
| name | Наименование формы на английском |
| nameru | Наименование формы на русском |
| namekz | Наименование формы на казахском |
| code | Код формы |
| description | Текстовое описание формы |
| type | Тип. Никак не используется |
| config | Параметры формы |
| properties | Массив компонентов формы |
| data | Массив данных компонентов |
| datasources | Массив внешних источников данных (справочники) |
| pointers | Массив показателей формы |
| layout | Разметка формы |
Основные поля данных
| Поле | Описание |
|---|---|
| id | идентификатор компонента которому принадлежат данные |
| type |
тип компонента которому принадлежат данные. Тип должен
коррелировать c {@link WidgetType}
|
| label | надпись компонента которому принадлежат данные |
| value | значение компонента которому принадлежат данные |
| key | ключ компонента которому принадлежат данные |
| valueID | идентификатор значения компонента которому принадлежат данные |
| username | имя пользователя используемого в компоненте которому принадлежат данные |
| userID | идентификатор пользователя используемого в компоненте которому принадлежат данные |
| values | Список значений компонента которому принадлежат данные |
| keys | Список ключей компонента которому принадлежат данные |
| data | Список вложенных данных компонента которому принадлежат данные. Применимо только к динамическим таблицам |
| formatVersion | Версия формата данных |
| manualTags | Карта из id пользователя и присвоенного ему названия в компоненте выбора пользователей |
Типовое описание компонента
{
"id": "text-1", // идентификатор
"type": "textbox", // тип компонента
"label": "text-1", // заголовок (лейбл)
"style": { // стиль
"width": "300", // ширина
"height": "20", // высота
"align": "left", // выравнивание текста
"font": "Arial", // шрифт
"fontsize": "12" // размер шрифта
}
Разметка формы представляет собой описание «страниц», каждая страница описана как таблица
{
"totalPages": 1, // количество страниц
"pages": [ // массив страниц
{
"page": 1, // номер страницы
"columns": 1, // количество столбцов на странице
"rows": 3, // количество строк на странице
"components": [ // местоположение компонентов
{
"id": "text-1", // идентификатор компонента
"column": 0, // столбец в разметке
"row": 0 // строка в разметке
},
{
"id": "text-2",
"column": 0,
"row": 1
},
{
"id": "userID",
"column": 0,
"row": 2
}
]
}
]
}
Компонент «Таблица»
Статическая таблица:
{
"id": "simple-table",
"type": "table",
"config": {
"appendRows": false, //признак статичной/динамической таблицы
"format": "${stat_table_text} - ${stat_table_date}", //форматная строка
"delimeter": "", //разделитель свертки
},
"properties": [], //массив компонентов, так же как в форме
"layout": {}, // разметка, так же как в форме
"style": {
"border": "1", //отображать ли границы
"wrap": true //выводить ли содержимое в виде абзаца
}
}
Динамическая таблица:
{
"id": "table-id", //идентификатор таблицы
"init-row": 2 //количество строк при инициализации
//если в таблице не должно быть строк, при инициализации параметр не передается или его значение 0
"type": "appendable_table" //обязательный пункт для динамической таблицы
"layout": { //описание блока (строки/набора строк) таблицы
"columns": 1,
"rows": 1,
"components": [
{
"id": "cmp-1row",
"column": 0,
"row": 0
}
//если в таблице есть заголовок, то в нулевой строке должны содержаться компоненты заголовка
]
},
"properties": [] //свойства компонентов динамической таблицы
}
Статическая таблица:
Данные компонентов внутри статической таблицы помещаются в основной массив данных.
Динамическая таблица:
{
"id": "table-id", //идентификатор таблицы
"type": "appendable_table" //обязательный пункт для динамической таблицы
"data": [...], //массив с данными таблицы
"key": "Значение свертки таблицы"
}
Компоненты внутри таблицы имеют идентификаторы, т.к. таблица может иметь несколько строк, чтобы идентификаторы не дублировались к идентификатору добавляется строка -bN, где N номер строки таблицы, нумерация строк начинается с 1. Например, если компонент в таблице имеет идентификатор cmp, то значения идентификаторов для строк будут иметь вид cmp-b1, cmp-b2 и т.д. Окончание -bN должно иметь одинаковый номер N для компонентов одной строки.
Компонент «Неизменяемый текст»
{
"id": "label",
"type": "label",
"label": "Неизменяемый текст",
"translations": [
{
"localeID": "c",
"text": "Неизменяемый текст",
"editByUser": true
},
{
"localeID": "en",
"text": "Неизменяемый текст",
"editByUser": false
},
{
"localeID": "ru",
"text": "Неизменяемый текст ru",
"editByUser": true
},
{
"localeID": "kk",
"text": "Неизменяемый текст kk",
"editByUser": true
}
],
"style": {}
}
Формат данных не заполняется.
Компонент «Однострочное поле»
{
"id": "textbox",
"type": "textbox",
"required": true,
"config": {
"input-mask": "(###)###-##-##" //маска ввода
},
"style": {}
}
Возможные значения маски ввода описаны здесь.
{
"id": "textbox",
"type": "textbox",
"value": "простой текст",
"label": "Неизменяемый текст"
}
Компонент «Числовое поле»
{
"id": "cmp-numericinput",
"type": "numericinput",
"config": {
"RP_ACTIV": true, //активно ли ограничение десятичных знаков
"RP_COUNT": 2, //количество десятичных знаков
"DS_TYPE": "DOT", //разделитель дробной части: DOT- точка, COMMA - запятая
"ROUND": true, //округлять ли значение (либо отбрасывать)
"TS_ACTIVE": true, //активность разделителя тысяч
"TS_VALUE": "", //разделитель тысяч
"BV_ACTIV": true, //активность граничных значений
"MAX": "3000", //максимальное значение
"MIN": "-100" //минимальное значение
}
}
{
"id": "cmp-qdg8xo",
"type": "numericinput",
"value": "2 222,00", //текстовое представление
"key": "2222.00" //числовое представление
}
Компонент «Многострочный текст»
{
"id": "textarea",
"type": "textarea",
"required": true,
"style": {},
"config": {
"add-space": true //не удалять пробелы в начале строки
}
}
{
"id": "textarea",
"type": "textarea",
"value": "многострочный текст",
"label": "Неизменяемый текст"
}
Компонент «HTD-редактор»
{
"id": "htd-editor",
"type": "htd",
"required": true,
"config": {
"read-only": false //заблокировано ли от изменений пользователем
},
"style": {}
}
{
"id": "htd-editor",
"type": "htd",
"value": "Текст в <b>htd</b>-редакторе<br>",
"label": "Неизменяемый текст",
"default": "Значение по умолчанию"
}
Компонент «Выпадающий список»
Выпадающий список, связанный со справочником:
{
"id": "listbox",
"type": "listbox",
"config":{
"depends": "Идентификатор главного компонента" //связь с компонентом
}
"style": {}
}
Выпадающий список, не связанный со справочником:
"data": [
{
"id": "cmp-listbox",
"values": [
{
"value": "значение 1",
"label": "название 1",
"filter": ""
},
{
"value": "значение 2",
"label": "название 2",
"filter": ""
}
],
"default": "значение 1"
}
]
{
"id": "cmp-7gj2xv",
"type": "listbox",
"value": "наименование выбранного элемента",
"key": "значение выбранного элемента"
}
Компонент «Дата/время»
{
"id": "date",
"type": "date",
"config": {
"read-only": false, //заблокировано ли от изменений пользователем
"fill-with-current": true, //заполнять ли текущей датой
"locale": "ru", //локаль
"dateFormat": "${dd} ${monthed} ${yyyy}г., ${hh}:${MM}", //формат даты
"dateFormatOld": "${yyyy}-${mm}-${dd} ${hh}:${MM}", //старый формат даты (для совместимости с первой реализацией)
"time-Enable": true //вводить ли время
},
"required": true,
"style": {}
}
Возможные варианты форматов даты описаны здесь.
{
"id": "cmp-pfa3r5",
"type": "date",
"value": "2016-маусым-15",
"key": "2016-06-15 12:07:00"
}
Компонент «Выбор вариантов»
Выбор вариантов, связанный со справочником:
{
"id": "checklist",
"type": "check",
"required": true,
"config": {
"read-only": false, //заблокировано ли от изменений пользователем
"locale": "ru" //локаль
},
"style": {}
}
Выбор вариантов, не связанный со справочником:
"data": [
{
"id": "cmp-checklist",
"values": [
{
"value": "значение 1",
"label": "название 1"
},
{
"value": "значение 2",
"label": "название 2"
}
],
"default": [
"значение 1",
"значение 2"
]
}
]
{
"id": "cmp-7gj2xv",
"type": "check",
"value": ["значение элемента 1", "значение элемента 2", "значение элемента 3"],
"key": ["наименование элемента 1", "наименование элемента 2", "наименование элемента 3]
}
Компонент «Переключатель вариантов»
Переключатель вариантов, связанный со справочником:
{
"id": "radiolist",
"type": "radio",
"required": true,
"style": {}
}
Переключатель вариантов, не связанный со справочником:
"data": [
{
"id": "cmp-radiolist",
"values": [
{
"value": "значение 1",
"label": "название 1"
},
{
"value": "значение 2",
"label": "название 2"
}
],
"default": "значение 1"
}
]
{
"id": "cmp-7gj2xv",
"type": "radio",
"value": "значение выбранного элемента",
"key": "наименование выбранного элемента"
}
Компонент «Изображение»
{
"id": "image",
"type": "image",
"config": {
"url": "asffile?uuid=f05d5dde-7b32-4c9e-91d8-5d828df1cb53"
},
"style": {}
}
{
"id": "file",
"type": "file",
"config": {
"read-only": false, //заблокировано ли от изменений пользователем
"showContent": true // отображать ли содержимое файла (картинку)
},
"style": {}
}
{
"id": "cmp-d84aev",
"type": "file",
"value": "Файл.png", //имя файла
"key": "14064b88-633c-4748-b9c6-9fbf8c8a86e6" //идентификатор файла в хранилище
}
Компонент «Ссылка»
{
"id": "link",
"type": "link",
"config": {
"read-only": true, //заблокировано ли от изменений пользователем
"fill-with-current": true //заполнять ли ссылкой на текущий документ
},
"required": true,
"style": {}
}
{
"id": "cmp-7u4wuv",
"type": "link",
"value": "#submodule=common&action=open_document&document_identifier=${docID}",
"key": "Документ; false"
}
Примечание.
Значение параметра
keyсостоит из надписи к ссылке и через «; » (с пробелом) опцию, открывать ли ссылку в новом окне.
Компонент «Пользователи»
{
"id": "id",
"type": "entity",
"config": {
"entity": "users", //тип объекта
"read-only": false, //заблокировано ли от изменений пользователем
"custom": true, //доступен ли ручной ввод в компонент
"multi": true, //разрешен ли мультивыбор
"groups": true, //разрешен ли выбор групп
"show-without-position": true, //отображать ли не назначенных на должность
"editable-label": true, //разрешено ли редактирование названия выбранных элементов
"customNameFormats": { //формат отображения ФИО пользователя
"ru": "${l} ${f.short}.${p.short}.",
"kz": "${l} ${f.short}.${p.short}.",
"en": "${l.short} --- ${l}"
}
}
}
Возможные варианты форматов отображения ФИО пользователя здесь.
Формат данных для единственного значения:
{
"id": "cmp-7gj2xv",
"type": "entity",
"value": "Фамилия Имя Отчество",
"key": "1ba41729-871f-4575-88d8-5a6c3de6297a",
"formatVersion": "V1",
"manualTags": {"identifier" : "введенный вручную тэг"}
}
Формат данных для множественного значения:
{
"id": "cmp-7gj2xv",
"type": "entity",
"value": "formattedName1, formattedName2, formattedName3",
"key": "identifier1;identifier2;identifier3",
"formatVersion": "V1",
"manualTags": {"identifier1" : "введенный вручную тэг"}
}
Примечание.
manualTags- это пользователи, для которых были изменены названия вручную.
key- это список id выбранных пользователей, разделенных «;».Идентификаторы могут иметь приставки:
без приставки - пользователь;
g- группа (g-идентификатор_группы);
text- произвольный текст (text-номер_просто_число);
contact- контакт адресной книги (contact-идентификатор_контакта).
Компонент «Должности»
{
"id": "id",
"type": "entity",
"config": {
"entity": "positions", //тип объекта
"read-only": false, //заблокировано ли от изменений пользователем
"custom": true, //доступен ли ручной ввод в компонент
"editable-label": true, //разрешено ли редактирование названия выбранных элементов
"only-vacant": false, //отображать ли только вакантные должности
"depends": "Идентификатор главного компонента", //связь с компонентом
"locale": "ru" //локаль
}
}
{
"id": "cmp-rgi3pr",
"type": "entity",
"value": "название должности",
"key": "f1af818e-cd5d-4390-9e96-b26dd148e42d",
"formatVersion": "V1",
"manualTags": {"identifier" : "введенный вручную тэг"}
}
Примечание.
manualTags- это должности, для которых были изменены названия вручную.
Компонент «Подразделения»
{
"id": "id",
"type": "entity",
"config": {
"entity": "departments", //тип объекта
"read-only": false, //заблокировано ли от изменений пользователем
"custom": true, //доступен ли ручной ввод в компонент
"multi": true, //разрешен ли мультивыбор
"editable-label": true, //разрешено ли редактирование названия выбранных элементов
"depends": "Идентификатор главного компонента", //связь с компонентом
"locale": "ru" //локаль
}
}
Формат данных для единственного значения:
{
"id": "cmp-7gj2xv",
"type": "entity",
"value": "название подразделения",
"key": "4a76ae9b-a460-431a-9edc-c9bf2966f2fb",
"formatVersion": "V1",
"manualTags": {"identifier" : "введенный вручную тэг"}
}
Формат данных для множественного значения:
{
"id": "cmp-7gj2xv",
"type": "entity",
"value": "name1;; name1;; name3;; name4",
"key": "identifier1;identifier2;identifier3",
"formatVersion": "V1",
"manualTags": {"identifier" : "введенный вручную тэг"}
}
Примечание.
manualTags- это подразделения, для которых были изменены названия вручную.
key- это список id выбранных подразделений, разделенных «;».Для множественного значения в качестве разделителя наименований
valueиспользуется «;; » (с пробелом после точек с запятой).
Компонент «Лист подписей»
{
"id": "cmp-signList",
"type": "signlist",
"config" : {
"type" : 0, //тип подгружаемых данных: -1 - лист подписей, 0 - лист согласования, 1 - лист утверждения, 2 - лист ознакомления
"locale": "ru" //локаль
"fields" : [
{
"field" : "number", /*тип поля, возможные варианты зависят от типа подгружаемых данных
"number" : 0, //номер колонки в таблице
"ru" : "№ п/п 234", //наименование колонки на русском языке
"kz" : "№ рет бойынша", //наименование колонки на казахском языке
"en" : "№" //наименование колонки на английском языке
}, {
"field" : "full_name",
"number" : 1,
"ru" : "ФИО согласующего",
"kz" : "Келісімдеушінің аты-жөні",
"en" : "Consenter full name"
}, {
"field" : "position",
"number" : 3,
"ru" : "Должность согласующего",
"kz" : "Келісімдеушінің лауазымы",
"en" : "Consenter position"
}, {
"field" : "consent_comment",
"number" : "",
"ru" : "Комментарий согласующего",
"kz" : "Келісімдеушінің түсініктемесі",
"en" : "Consenter comment"
}
]
},
"style": {}
}
{
"id": "cmp-signlist",
"type": "signlist"
}
Компонент «Лист резолюций»
{
"id": "cmp-resolutionlist",
"type": "resolutionlist",
"config": {
"locale": "ru" //локаль
},
"style": {}
}
{
"id": "cmp-resolutionlist",
"type": "resolutionlist"
}
Компонент «Ход выполнения»
{
"id": "cmp-processlist",
"type": "processlist",
"config": {
"locale": "ru" //локаль
},
"style": {}
}
{
"id": "cmp-processlist",
"type": "processlist"
}
Компонент «Период повторения»
{
"id": "cmp-repeater",
"type": "repeater",
"config": {},
"style": {}
}
Формат данных для значения «Нет»:
{
"id": "cmp-mqk3ik",
"type": "repeater",
"value": "Нет",
"key": "0"
}
Формат данных для значения «По дням недели»:
{
"id": "cmp-mqk3ik",
"type": "repeater",
"value": "По дням недели: Понедельник, Воскресенье",
"key": "1|1.0;7.0"
}
Примечание.
Значение параметра
valueсостоит из типа значения («По дням недели») и через «: » список полных названий дней недели, разделенных «, ».Значение параметра
keyсостоит из типа значения (1 - это по дням недели) и через «|» список значений, разделенных «;», каждое значение в форматепорядковый_номер_дня_недели.0.
Формат данных для значения «По дням месяца»:
{
"id": "cmp-mqk3ik",
"type": "repeater",
"value": "По дням месяца: 12, 17, 23",
"key": "2|12.0;17.0;23.0"
}
Примечание.
Значение параметра
valueсостоит из типа значения («По дням месяца») и через «: » список дней месяца, разделенных «, ».Значение параметра
keyсостоит из типа значения (2 - это по дням месяца) и через «|» список значений, разделенных «;», каждое значение в форматедень_месяца.0.
Формат данных для значения «Ежегодно»:
{
"id": "cmp-mqk3ik",
"type": "repeater",
"value": "Ежегодно: 4.1, 5.11, 7.12, 9.30",
"key": "4|1.4; 11.5; 12.7; 30.9"
}
Примечание.
Значение параметра
valueсостоит из типа значения («Ежегодно») и через «: » список дней года, разделенных «, », каждое значение в форматеномер_месяца.номер_дня.Значение параметра
keyсостоит из типа значения (4 - это ежегодно) и через «|» список значений, разделенных «; », каждое значение в форматеномер_дня.номер_месяца.
Компонент «Ссылка на проект/портфель»
{
"id": "cmp-projectlink",
"type": "projectlink",
"config": {},
"style": {}
}
{
"id": "cmp-7gj2xv",
"type": "projectlink",
"value": "Проект: %название%", //для портфеля "Портфель: %название%"
"key": "00e24c3d-d3de-423a-9b86-5d501975b922",
"valueID": "00e24c3d-d3de-423a-9b86-5d501975b922"
}
Компонент «Ссылка на реестр»
{
"id": "cmp-reglink",
"type": "reglink",
"config": {
"dateFormat": "4c57fc1f-9194-4d67-b2f6-2511c49471f6", //идентификатор реестра
"CollationGroup": "432086bc00000000", //идентификатор группы сопоставления
"fillWithParent": true //заполнять ли ссылкой на родительскую запись
},
"style": {}
}
{
"id": "cmp-6vrrkp",
"type": "reglink",
"value": "1111-GPON", //значащее содержимое через «-»
"key": "a1b478c0-2d33-11e6-b327-3085a93a6496",
"valueID": "a1b478c0-2d33-11e6-b327-3085a93a6496",
"username": "Admin Admin Admin",
"userID": "1"
}
Компонент «Ссылка на адресную книгу»
{
"id": "cmp-personlink",
"type": "personlink",
"config": {},
"style": {}
}
{
"id": "cmp-7gj2xv",
"type": "personlink",
"value": "Фамилия Имя Отчество (Организация)", //для организации "Организация (Адрес)"
"key": "0:idenitifier",
"valueID": "0:identifier"
}
Примечание.
Цифра, предваряющая идентификатор, означает тип контакта: 0 - люди, 1 - организация.
Компонент «Свойства документа»
{
"id": "cmp-docnumber",
"type": "docnumber",
"config":{
"field": "reg_date" //тип отображаемого поля
},
"style": {}
}
field - тип отображаемого поля, один из:
number - номер документа;
subject - краткое содержание;
createDate - дата создания;
author - автор;
reg_date - дата регистрации;
doc_type - тип документа;
registry - реестр.
Формат данных не заполняется.
Компонент «Ссылка на файл в Хранилище»
{
"id": "filelink-id",
"type": "filelink",
"config": {
"read-only": false, //заблокировано ли от изменений пользователем
"open-in-new-window": true, // открывать ли в новом окне
},
"required": true,
"style": {}
}