Платформа 3V/Формы/Действия/Выполнение пользовательского действия/Скачивание файла

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Элемент атрибута типа Файл имеет следующий вид:

 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 идентификатор(fileId) файла или ссылка на его скачивание(downloadLink).

 1 {
 2  "expression": "'https://api.3v-cloud.com/filestorage'+If(IsNullOrEmpty([1]), throw('Нет данных'), ValueOf([1], 0))",
 3  "returnFirstParameterValue": false,
 4  "operands": [
 5   {
 6    "dictionaryId": 1069,
 7    "attributeId": null,
 8    "filter": {
 9     "value": {
10      "$type": "System.Int32[], System.Private.CoreLib",
11      "$values": [
12       1
13      ]
14     },
15     "attributeId": null,
16     "attribute": {
17      "discriminator": "OwnAttributeDefinitionDto",
18      "id": 1
19     },
20     "conditionType": "AttributeInCollection",
21     "discriminator": "ValueConditionalDictionaryCardsFilter",
22     "inversion": false,
23     "conditionId": null,
24     "conditionExpressionId": null
25    },
26    "attribute": {
27     "property": "DownloadLink",
28     "discriminator": "FileLinkTransitiveAttributeDefinitionDto",
29     "id": 20
30    },
31    "discriminator": "EntryExpressionByDictionaryRequest",
32    "id": 1,
33    "allowMultipleValues": false
34   }
35  ],
36  "id": 2,
37  "name": "Выражение",
38  "code": null
39 }

Идентификатор выражения с вычисленным URL в пользовательском действии задаётся в свойстве serviceUrlExpressionId.

 1 {
 2  "serviceUrl": null,
 3  "serviceUrlExpressionId": 2,
 4  "parameters": [],
 5  "isAsync": false,
 6  "httpMethod": "Get",
 7  "bodyTemplateExpressionId": null,
 8  "bodyTemplate": null,
 9  "discriminator": "BusinessLogicApiAction",
10  "comment": null,
11  "enableExpressionId": null,
12  "id": 2,
13  "name": "Файл",
14  "code": null
15 }

Пример настройки можно увидеть здесь