Форма - 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": {} }