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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 42: Строка 42:
 
|}
 
|}
  
Для того, чтобы скачать архив из справочника требуется настроить выражение, в котором следует создать коллекцию идентификаторов файлов. В операндах следует вычислить идентификаторы файлов в помощью FileLinkTransitiveAttributeDefinitionDto и создать одну коллекцию с помощью функции Flatten() в выражении
+
Для того, чтобы скачать архив из справочника требуется настроить выражение, в котором следует вычислить коллекцию идентификаторов файлов. В операндах следует вычислить идентификаторы файлов в помощью FileLinkTransitiveAttributeDefinitionDto и создать одну коллекцию с помощью функции Flatten() в выражении:
  
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
{
 
{
  "expression": "'https://.../filestorage'+If(IsNullOrEmpty([1]), throw('Нет данных'), ValueOf([1], 0))",
+
  "expression": "Flatten([1])",
 
  "returnFirstParameterValue": false,
 
  "returnFirstParameterValue": false,
 
  "operands": [
 
  "operands": [
Строка 52: Строка 52:
 
   "dictionaryId": 1069,
 
   "dictionaryId": 1069,
 
   "attributeId": null,
 
   "attributeId": null,
  "filter": {
 
    "value": {
 
    "$type": "System.Int32[], System.Private.CoreLib",
 
    "$values": [
 
      1
 
    ]
 
    },
 
    "attributeId": null,
 
    "attribute": {
 
    "discriminator": "OwnAttributeDefinitionDto",
 
    "id": 1
 
    },
 
    "conditionType": "AttributeInCollection",
 
    "discriminator": "ValueConditionalDictionaryCardsFilter",
 
    "inversion": false,
 
    "conditionId": null,
 
    "conditionExpressionId": null
 
  },
 
 
   "attribute": {
 
   "attribute": {
     "property": "DownloadLink",
+
     "property": "FileId",
 
     "discriminator": "FileLinkTransitiveAttributeDefinitionDto",
 
     "discriminator": "FileLinkTransitiveAttributeDefinitionDto",
 
     "id": 20
 
     "id": 20
Строка 77: Строка 59:
 
   "discriminator": "EntryExpressionByDictionaryRequest",
 
   "discriminator": "EntryExpressionByDictionaryRequest",
 
   "id": 1,
 
   "id": 1,
   "allowMultipleValues": false
+
   "allowMultipleValues": true
 
   }
 
   }
 
  ],
 
  ],
  "id": 2,
+
  "id": 1,
 
  "name": "Выражение",
 
  "name": "Выражение",
 
  "code": null
 
  "code": null
Строка 86: Строка 68:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Идентификатор выражения с коллекцией идентификаторов передаётся в операнд действия. Задаётся тело запроса с помощью свойства '''''bodyTemplate'''''. И URL - https://.../filestorage/api/File/GetFilesAsArchive
+
Идентификатор выражения с коллекцией идентификаторов файлов передаётся в параметр действия, который используется для передачи в тело запроса. Задаётся тело запроса с помощью свойства '''''bodyTemplate'''''. URL функции имеет следующий вид - https://.../filestorage/api/File/GetFilesAsArchive
 
<syntaxhighlight lang="JSON" line>
 
<syntaxhighlight lang="JSON" line>
 
{
 
{

Версия 12:03, 30 сентября 2022

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

 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 }

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