Формулировка проблемы: при выполнении сохранения данных по форме необходимо выполнять дополнительные действия для актуализации данных формы, которые не требуют изменения.
Решение: необходимо реализовать методы API, позволяющие выполнять частичное сохранение данных по форме.
Метод выполняет слияние данных по форме, хранящихся на сервере, с теми, которые переданы в параметрах метода. При этом создается новая версия данных формы, а значения компонентов, не указанных в параметрах метода, не изменяются.
URL: rest/api/asforms/data/merge
Тип: POST
В теле запроса передается json-объект вида:
{
"uuid": "<UUID данных по форме>",
"eventProperties": {
"paramA": "A",
"paramB": "B"
},
"data":
[
{
"id":"field1Code", //идентификатор компонента
"value": "field1_value", //значение
"type":"widgetType1" //тип компонента
},
...,
{
"id":"fieldNCode",
"value": "fieldN_value",
"type":"widgetTypeN"
}
]
}
Здесь:
uuid - UUID данных по форме (параметр
запроса)
data - массив json с
данными по форме (параметр формы)
eventProperties - json с
параметрами для отправки в событие изменения данных по форме
(необязательный параметр)
Параметр
eventPropertiesдолжен иметь формат "ключ - значение", ключ должен соответствовать регулярному выражению[a-zA-Z_][a-zA-Z_0-9]*. КлючиformID,dataUUIDзарезервированы, при передаче подобных ключей значения будут перезаписаны параметрами события.
Если в параметре data передан id динамической
таблицы, то она будет перезаписана полностью. Для добавления
нового блока в динамическую таблицу используется метод
rest/api/asforms/data/append_table.
В случае успешного выполнения возвращает код 200 с сообщением:
{
"errorCode": 0,
"uuid": "<uuid данных по форме>"
}
Альтернативный поток 1. Передан невалидный json. Сервер возвращает ошибку 400 с сообщением:
{
"errorCode": 3,
"errorMessage": "Передан некорректный объект JSON"
}
Альтернативный поток 2. Не передан или передан некорректный UUID данных по форме. Сервер возвращает ошибку 400 с сообщением:
{
"errorCode": 3,
"errorMessage": "Передан некорректный параметр uuid"
}
Альтернативный поток 3. При сохранении произошла ошибка на стороне сервера. Сервер возвращает ошибку 500 с сообщением:
{
"errorCode": 13,
"errorMessage": "При сохранении призошла ошибка на стороне сервера"
}
Метод добавляет новые блоки в конец динамической таблицы, при этом создается новая версия данных формы. С помощью метода нельзя изменить заголовок динамической таблицы.
URL: rest/api/asforms/data/append_table
Тип метода: POST
В теле запроса передается json-объект вида:
{
"uuid": "<UUID данных по форме>",
"tableId": "<идентификатор таблицы>",
"eventProperties": {
"paramA": "A",
"paramB": "B"
},
"data":
[
{
"id":"field1-b1", //идентификатор компонента
"value": "field1_value", //значение
"type":"widgetType1" //тип компонента
},
...,
{
"id":"field1-bN",
"value": "fieldN_value",
"type":"widgetType1"
}
]
}
Здесь:
uuid - UUID данных по форме (параметр
запроса)
tableId - идентификатор таблицы
(обязательный параметр)
data - массив json с
добавляемыми данными.
eventProperties - json с
параметрами для отправки в событие изменения данных по форме
(необязательный параметр)
При выполнении метода номера -bN в переданных
идентификаторах компонентов перезаписываются таким образом, чтобы
они соответствовали итоговым номерам добавленных строк таблицы.
В случае успешного выполнения возвращает код 200 с сообщением:
{
"errorCode": 0,
"uuid": "<uuid данных по форме>"
}
Альтернативный поток 1. Передан невалидный json. Сервер возвращает ошибку 400 с сообщением:
{
"errorCode": 3,
"errorMessage": "Передан некорректный объект JSON"
}
Альтернативный поток 2. Не передан или передан некорректный UUID данных по форме. Сервер возвращает ошибку 400 с сообщением:
{
"errorCode": 3,
"errorMessage": "Передан некорректный параметр uuid"
}
Альтернативный поток 3. Не передан или передан некорректный идентификатор таблицы. Сервер возвращает ошибку 400 с сообщением:
{
"errorCode": 3,
"errorMessage": "Передан некорректный параметр tableId"
}
Альтернативный поток 4. При сохранении произошла ошибка на стороне сервера. Сервер возвращает ошибку 500 с сообщением:
{
"errorCode": 13,
"errorMessage": "При сохранении призошла ошибка на стороне сервера"
}