Платформа 3V/Внешний справочник/Как настроить внешний справочник?: различия между версиями
м (A.kazanceva переименовал страницу Платформа 3V/Справочник/Справочники на стороннем API в Платформа 3V/Внешний справочник/Справочники на стороннем API) |
|||
Строка 118: | Строка 118: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Возможная структура JSON схемы для внешнего справочника-ярлыка: ===== | ||
+ | |||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "disableCache": false, | ||
+ | "cacheSettings": { | ||
+ | "expirationMinutes": null | ||
+ | }, | ||
+ | "dictionaryStructure": { | ||
+ | "id": 36973, | ||
+ | "name": "Новый внешний справочник", | ||
+ | "code": "New_ExternalDictionary_30", | ||
+ | "description": null, | ||
+ | "type": "ExternalDictionary", | ||
+ | "tableName": "11", | ||
+ | "sequenceName": "", | ||
+ | "databaseId": 36882, | ||
+ | "attributes": [ | ||
+ | ... | ||
+ | ], | ||
+ | "indexes": [] | ||
+ | }, | ||
+ | "id": 36973, | ||
+ | "name": "Новый внешний справочник", | ||
+ | "code": "New_ExternalDictionary_30", | ||
+ | "description": null, | ||
+ | "dictionaryType": "ExternalDictionary", | ||
+ | "tableName": "11", | ||
+ | "isHistoryEnabled": false, | ||
+ | "databaseId": 36882, | ||
+ | "isAccessRightsEnabled": false, | ||
+ | "hierarchies": null, | ||
+ | "viewOptions": { | ||
+ | "limit": null, | ||
+ | "filteringAttributes": [], | ||
+ | "filtersJoin": "And", | ||
+ | "disableRefreshWhenParameterChanged": false, | ||
+ | "disabledEvents": null, | ||
+ | "gridComponent": null | ||
+ | }, | ||
+ | "isDataSourceExternal": true, | ||
+ | "discriminator": "ExternalDictionary" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Ключ !! Описание значения | ||
+ | |- | ||
+ | | databaseId || идентификатор соединения типа "Link" | ||
+ | |- | ||
+ | | tableName || идентификатор справочника из внешней платформы | ||
+ | |} |
Версия 10:11, 21 сентября 2021
Начиная с релиза 0.26 появилась возможность создавать справочники на стороннем API. Есть ограничения которые накладываются на стороннее API
- API должен реализовывать методы по чтению данных GetData следующей сигнатуры:
Post запрос с параметров в Url source который содержит в себе идентификатор источника данных. Тело запроса:
1 {
2 "fields": [
3 "field1",
4 "field2",
5 ...
6 ],
7 "filters": [
8 {
9 "fieldName": "field3",
10 "values": [
11 1, 2, 3
12 ],
13 "conditionType": "InCollection"
14 }
15 ],
16 "orderFields": [
17 {
18 "fieldName": "field4",
19 "sortDirection": "Ascending",
20 "nullsSortingMode": "PlaceFirst"
21 }
22 ],
23 "limit": 100
24 }
Где fields - коллекция идентификаторов полей которые будут отданы в ответе (обязательное для заполнения).
filters - коллекция фильтров (опционально). Каждый фильтр состоит из fieldName - идентификатора поля на которое накладывается условие, values - коллекция значений, conditionType - тип накладываемого условия.
Для conditionType допустимы следующие значения:
Значение | Описание |
---|---|
Default | Условие по умолчанию. Фильтрация по In. |
InCollection | Условие вхождения. |
NotInCollection | Не входит в коллекцию. |
Equal | Равно. |
NotEqual | Не равно. |
IsNull | Равно null. |
NotNull | Не null. |
More | Больше. |
MoreOrEqual | Больше или равно. |
Less | Меньше. |
LessOrEqual | Меньше или равно. |
orderFields - коллекция для сортировки значений. Каждая настройка сортировки содержит fieldName - идентификатор поля по которому будет идти сортировка, sortDirection - направление сортировки, nullsSortingMode обработка null при сортировке.
Для sortDirection допустимы следующие значения:
Значение | Описание |
---|---|
Ascending | По возрастанию. |
Descending | По убыванию. |
Для nullsSortingMode допустимы значения:
Значение | Описание |
---|---|
PlaceFirst | Размещать null в начале. |
PlaceLast | Размещать null в конце. |
limit - ограничение на кол-во возвращаемых строк. (Опционально)
- API может реализовывать метод по сохранению данных SaveData:
Post запрос с параметров в Url source который содержит в себе идентификатор источника данных. Тело запроса:
1 {
2 "sourceId": "SourceId",
3 "values": [
4 {
5 "keyValues": [
6 "KEY"
7 ],
8 "fieldName": "VALUE1",
9 "rowsData": [
10 [
11 1, 2, 3
12 ]
13 [
14 111, 222, 333
15 ]
16 ]
17 }
18 ]
19 }
Где sourceId дублирует значение из параметра source.
В values задается коллекция сохраняемых значений. keyValues - коллекция идентификаторов полей по которым можно однозначно определить строку данных. fieldName - поле которое изменяется. rowsData - коллекция значений, где в начале идут значения по столбцам из keyValues в том же порядке, а в элементе коллекции идут значения для столбца fieldName.
- API может реализовывать метод GetStructure по получению структуры источника данных по его идентификатору. Это должен быть Get запрос с параметром source - идентификатор источника.
Данный метод используется в методе /api/Dictionaries/CreateExternalDictionaryModel API справочников в случае указания connectionId - идентификатора объекта репозитория соединения настроенного на сторонний сервис. Пример такого объекта соединения:
1 {
2 "dbType": "Web",
3 "connectionString": "http://audit/api/AuditDataSource/"
4 }
Возможная структура JSON схемы для внешнего справочника-ярлыка:
1 {
2 "disableCache": false,
3 "cacheSettings": {
4 "expirationMinutes": null
5 },
6 "dictionaryStructure": {
7 "id": 36973,
8 "name": "Новый внешний справочник",
9 "code": "New_ExternalDictionary_30",
10 "description": null,
11 "type": "ExternalDictionary",
12 "tableName": "11",
13 "sequenceName": "",
14 "databaseId": 36882,
15 "attributes": [
16 ...
17 ],
18 "indexes": []
19 },
20 "id": 36973,
21 "name": "Новый внешний справочник",
22 "code": "New_ExternalDictionary_30",
23 "description": null,
24 "dictionaryType": "ExternalDictionary",
25 "tableName": "11",
26 "isHistoryEnabled": false,
27 "databaseId": 36882,
28 "isAccessRightsEnabled": false,
29 "hierarchies": null,
30 "viewOptions": {
31 "limit": null,
32 "filteringAttributes": [],
33 "filtersJoin": "And",
34 "disableRefreshWhenParameterChanged": false,
35 "disabledEvents": null,
36 "gridComponent": null
37 },
38 "isDataSourceExternal": true,
39 "discriminator": "ExternalDictionary"
40 }
Ключ | Описание значения |
---|---|
databaseId | идентификатор соединения типа "Link" |
tableName | идентификатор справочника из внешней платформы |