Платформа 3V/Формы/Действия/Выполнение пользовательского действия/Скачивание архива
В справочнике файл, хранимый в соответствующем атрибуте, имеет следующий вид:
1 {
2 "$type": "FileLinkDto[]",
3 "$values": [
4 {
5 "fileId": "b94bd200-ab38-4584-b8ac-0d247c83dd91",
6 "fileName": "наименование.jpg",
7 "downloadLink": "/api/file/b94bd200-ab38-4584-b8ac-0d247c83dd91",
8 "signs": [],
9 "uploadDate": "2021-12-20T08:08:05.447Z"
10 }
11 ]
12 }
Для того, чтобы обратиться к значениям внутри атрибута следует использовать следующую структуру:
1 {
2 "attribute": {
3 "property": "FileId",
4 "discriminator": "FileLinkTransitiveAttributeDefinitionDto",
5 "id": 20
6 }
7 }
, где property может быть
property | |||
---|---|---|---|
fileId | GUID файла | ||
fileName | Наименование файла | ||
downloadLink | Ссылка для скачивания | ||
signs | Подписи файла(нельзя вытянуть с помощью FileLinkTransitiveAttributeDefinitionDto) | ||
uploadDate | Дата загрузки |
Для того, чтобы скачать архив из справочника требуется настроить выражение, в котором следует вычислить коллекцию идентификаторов файлов. В операндах следует вычислить идентификаторы файлов в помощью FileLinkTransitiveAttributeDefinitionDto и создать одну коллекцию с помощью функции Flatten() в выражении:
1 {
2 "expression": "Flatten([1])",
3 "returnFirstParameterValue": false,
4 "operands": [
5 {
6 "dictionaryId": 1069,
7 "attributeId": null,
8 "attribute": {
9 "property": "FileId",
10 "discriminator": "FileLinkTransitiveAttributeDefinitionDto",
11 "id": 20
12 },
13 "discriminator": "EntryExpressionByDictionaryRequest",
14 "id": 1,
15 "allowMultipleValues": true
16 }
17 ],
18 "id": 1,
19 "name": "Выражение",
20 "code": null
21 }
Идентификатор выражения с коллекцией идентификаторов файлов передаётся в параметр действия, который используется для передачи в тело запроса. Задаётся тело запроса с помощью свойства bodyTemplate. URL функции имеет следующий вид - https://.../filestorage/api/File/GetFilesAsArchive
1 {
2 "serviceUrl": "https://.../filestorage/api/File/GetFilesAsArchive",
3 "serviceUrlExpressionId": null,
4 "parameters": [
5 {
6 "isBodyParameter": true,
7 "name": "Parameter1",
8 "expressionId": 1,
9 "value": null,
10 "hasMultipleValues": true,
11 "dataType": "String"
12 }
13 ],
14 "isAsync": false,
15 "httpMethod": "Post",
16 "bodyTemplateExpressionId": null,
17 "bodyTemplate": "{ 'fileIds': {{Parameter1}} }",
18 "discriminator": "BusinessLogicApiAction",
19 "comment": null,
20 "enableExpressionId": null,
21 "id": 1,
22 "name": "Архив",
23 "code": null
24 }
Пример настройки можно увидеть здесь