Платформа 3V/Отчет/5. Настроить представление, оформление отчета/Настроить гиперссылку: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 223: Строка 223:
 
             },
 
             },
 
             "openTarget": "NewTab",
 
             "openTarget": "NewTab",
 +
            "useFirstOrDefaultOperandValue": true,
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
           }
 
           }
Строка 236: Строка 237:
 
|-
 
|-
 
|  "openTarget" || Тип открытия ссылки (SameWindow, NewTab, FileDownload, ModalWindow)
 
|  "openTarget" || Тип открытия ссылки (SameWindow, NewTab, FileDownload, ModalWindow)
 +
|-
 +
|  "useFirstOrDefaultOperandValue" || Использовать ли только единичное значение операнда формулы (по умолчанию false, true). Для работы с множественным значением, надо выставить true.
 
|}
 
|}
  
Строка 250: Строка 253:
 
             },
 
             },
 
             "openTarget": "SameWindow",
 
             "openTarget": "SameWindow",
 +
            "useFirstOrDefaultOperandValue": true,
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
           }
 
           }
Строка 288: Строка 292:
 
             },
 
             },
 
             "openTarget": "FileDownload",
 
             "openTarget": "FileDownload",
 +
            "useFirstOrDefaultOperandValue": true,
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
             "discriminator": "SimpleHyperlinkOptionsDto"
 
           },
 
           },
Строка 294: Строка 299:
  
 
Небольшое отступление: если используете ссылку на хранилище проекта, то, обычно, на разных схемах одного и того же проекта эта ссылка отличается. Чтоб избежать необходимости каждый раз переписывать ссылку, рекомендуется использовать относительный адрес ссылки, например, '/filestorage/api/FileStorage/Db/get/'
 
Небольшое отступление: если используете ссылку на хранилище проекта, то, обычно, на разных схемах одного и того же проекта эта ссылка отличается. Чтоб избежать необходимости каждый раз переписывать ссылку, рекомендуется использовать относительный адрес ссылки, например, '/filestorage/api/FileStorage/Db/get/'
 +
 +
=== Ссылка на объект репозитория как операнд ===
 +
 +
Для использования метаобъекта в качестве операнда, можно воспользоваться следующим примером:
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 +
<div style="font-weight:bold;line-height:1.6;">ссылка на объект репозитория как операнд формулы гиперссылки</div>
 +
<div class="mw-collapsible-content mw-collapsed-content">
 +
<syntaxhighlight lang="JSON" line>
 +
          "hyperlinkOptions": {
 +
            "metaObjectSource": {
 +
              "formula": {
 +
                "expression": "if ([1] > 0, [2], null() )",
 +
                "operands": [
 +
                  {
 +
                    "dictionaryId": 114,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 1
 +
                    },
 +
                    "attributeId": 1,
 +
                    "discriminator": "AttributeFormulaOperandDto",
 +
                    "code": null,
 +
                    "id": 1,
 +
                    "name": null
 +
                  },
 +
                  {
 +
                    "metaObjectId": 117,
 +
                    "discriminator": "MetaObjectFormulaOperandDto",
 +
                    "code": null,
 +
                    "id": 2,
 +
                    "name": null
 +
                  }
 +
                ],
 +
                "code": null,
 +
                "id": 1,
 +
                "name": null
 +
              },
 +
              "discriminator": "FormulaValueSourceDto"
 +
            },
 +
            "parameterSources": [
 +
              {
 +
                "parameterId": 1,
 +
                "valueSource": {
 +
                  "dictionaryAttribute": {
 +
                    "dictionaryId": 114,
 +
                    "attribute": {
 +
                      "discriminator": "OwnAttributeDefinitionDto",
 +
                      "id": 1
 +
                    }
 +
                  },
 +
                  "discriminator": "AttributeValueSourceDto"
 +
                }
 +
              }
 +
            ],
 +
            "discriminator": "MetaObjectHyperlinkOptionsDto",
 +
            "openTarget": "SameWindow",
 +
            "refreshAfterModalWindow": false
 +
          },
 +
</syntaxhighlight>
 +
</div></div>

Текущая версия на 13:18, 16 января 2023

В пивотах существует возможность настраивать 2 типа гиперссылок: Ссылка на объект репозитория и Ссылка на внешний источник. Гиперссылка настраивается сразу на весь столбец

Ссылка на объект репозитория

1. Для того, чтоб в столбце пивота прописать ссылку на объект репозитория, например, на открытие карточки, необходимо в поле columnOptions добавить:

"columnOptions": {}
 1  "hyperlinkOptions": {
 2             "metaObjectSource": {
 3               "value": 2830,
 4               "discriminator": "ConstantValueSourceDto"
 5             },
 6             "parameterSources": [
 7               {
 8                 "parameterId": 1,
 9                 "valueSource": {
10                   "dictionaryAttribute": {
11                     "dictionaryId": 1571,
12                     "attribute": {
13                       "id": 1,
14                       "discriminator": "OwnAttributeDefinitionDto"
15                     }
16                   },
17                   "discriminator": "AttributeValueSourceDto"
18                 }
19               }
20             ],
21             "discriminator": "MetaObjectHyperlinkOptionsDto"
22           },
Поле Описание
metaObjectSource Объект репозитория metaObjectSource
parameterSources Параметры с которыми необходимо открыть объект репозитория
parameterSources.parameterId Идентификатор параметра объекта репозитория, в который передается отметка из valueSource
parameterSources.valueSource Операнд, за счет которого вычисляется отметка параметра, см.#Типы источников значения параметра

Для объекта репозитория metaObjectSource можно устанавливать как постоянное значение, так и значение, вычисляемое по формуле.

Ссылка на объект репозитория в виде константы

Json постоянной ссылки на объект репозитория
 1  "hyperlinkOptions": {
 2             "metaObjectSource": {
 3               "value": 2830,
 4               "discriminator": "ConstantValueSourceDto"
 5             },
 6             "parameterSources": [
 7               {
 8                 "parameterId": 1,
 9                 "valueSource": {
10                   "dictionaryAttribute": {
11                     "dictionaryId": 1571,
12                     "attribute": {
13                       "id": 1,
14                       "discriminator": "OwnAttributeDefinitionDto"
15                     }
16                   },
17                   "discriminator": "AttributeValueSourceDto"
18                 }
19               }
20             ],
21             "discriminator": "MetaObjectHyperlinkOptionsDto"
22           },

Ссылка на объект репозитория в виде формулы

Json cсылки на объект репозитория, которая меняется в зависимости от атрибута справочника
 1  "hyperlinkOptions": {
 2             "metaObjectSource": {
 3               "formula": {
 4                 "expression": "if ([2] = '5', '4141', if ([1] = '1', '2645', '3153'))",
 5                 "operands": [
 6                   {
 7                     "dictionaryId": 1100,
 8                     "attribute": {
 9                       "id": 301,
10                       "discriminator": "OwnAttributeDefinitionDto"
11                     },
12                     "attributeId": 301,
13                     "code": null,
14                     "id": 1,
15                     "name": null,
16                     "discriminator": "AttributeFormulaOperandDto"
17                   },
18                   {
19                     "dictionaryId": 1100,
20                     "attribute": {
21                       "id": 100125,
22                       "discriminator": "OwnAttributeDefinitionDto"
23                     },
24                     "attributeId": 100125,
25                     "code": null,
26                     "id": 2,
27                     "name": null,
28                     "discriminator": "AttributeFormulaOperandDto"
29                   },
30                   {
31                     "dictionaryId": 1100,
32                     "attribute": {
33                       "id": 1,
34                       "discriminator": "OwnAttributeDefinitionDto"
35                     },
36                     "attributeId": 1,
37                     "code": null,
38                     "id": 3,
39                     "name": null,
40                     "discriminator": "AttributeFormulaOperandDto"
41                   }
42                 ],
43                 "code": null,
44                 "id": 1,
45                 "name": null
46               },
47               "discriminator": "FormulaValueSourceDto"
48             },
49             "parameterSources": [
50               {
51                 "parameterId": 1,
52                 "valueSource": {
53                   "dictionaryAttribute": {
54                     "dictionaryId": 1100,
55                     "attribute": {
56                       "id": 1,
57                       "discriminator": "OwnAttributeDefinitionDto"
58                     }
59                   },
60                   "discriminator": "AttributeValueSourceDto"
61                 }
62               }
63             ],
64             "discriminator": "MetaObjectHyperlinkOptionsDto"
65           },


Типы источников значения параметра

Тип Описание
AttributeValueSourceDto Значение атрибута справочника
CellValueSourceDto Значение ячейки отчета
ConstantValueSourceDto Постоянное значение
FormulaValueSourceDto Значение, расчетываемое по формуле
ParameterAttributeValueSourceDto Значение из атрибута параметра отчета
ParameterValueSourceDto Значение параметра отчета

Ссылка на внешний источник

1. Для того, чтоб в столбце пивота прописать ссылку на объект репозитория, необходимо в поле columnOptions добавить:

"columnOptions": {}
1       "hyperlinkOptions": {
2             "formula": {
3               "expression": "'http://google.ru/'"
4             },
5             "openTarget": "NewTab",
6             "discriminator": "SimpleHyperlinkOptionsDto"
7           }

Простая ссылка на внешний источник с данными из атрибута таблица

"columnOptions": {}
 1  "hyperlinkOptions": {
 2             "formula": {
 3               "expression": "[1]",
 4               "operands": [
 5                 {
 6                   "dictionaryId": 462,
 7                   "attribute": {
 8                     "id": 21,
 9                     "discriminator": "OwnAttributeDefinitionDto"
10                   },
11                   "attributeId": 21,
12                   "code": null,
13                   "id": 1,
14                   "name": null,
15                   "discriminator": "AttributeFormulaOperandDto"
16                 }
17               ],
18               "code": null,
19               "id": 0,
20               "name": null
21             },
22             "openTarget": "NewTab",
23             "useFirstOrDefaultOperandValue": true,
24             "discriminator": "SimpleHyperlinkOptionsDto"
25           }
Поле Описание
"formula" Формула для формирования гиперссылки
"openTarget" Тип открытия ссылки (SameWindow, NewTab, FileDownload, ModalWindow)
"useFirstOrDefaultOperandValue" Использовать ли только единичное значение операнда формулы (по умолчанию false, true). Для работы с множественным значением, надо выставить true.

Ссылка на веб-страницу

Для openTarget устанавливается тип ссылки - это может быть ссылка на веб-страницу, которая может открываться как в новой вкладке (NewTab), так и в текущем окне (SameWindow)

json cсылки на веб-страницу
1       "hyperlinkOptions": {
2             "formula": {
3               "expression": "'http://google.ru/'"
4             },
5             "openTarget": "SameWindow",
6             "useFirstOrDefaultOperandValue": true,
7             "discriminator": "SimpleHyperlinkOptionsDto"
8           }

Ссылка на скачивание файла

Кроме этого, существует отдельный тип ссылки для скачивания файлов (FileDownload)

json cсылки на скачивание файла
 1           "hyperlinkOptions": {
 2             "formula": {
 3               "expression": "'https://3v.3v-group.net/filestorage/api/FileStorage/Db/get/' + [0]",
 4               "operands": [
 5                 {
 6                   "dictionaryId": 1212,
 7                   "attribute": {
 8                     "innerAttribute": {
 9                       "id": 23,
10                       "discriminator": "OwnAttributeDefinitionDto"
11                     },
12                     "id": 21,
13                     "discriminator": "TransitiveAttributeDefinitionDto"
14                   },
15                   "attributeId": null,
16                   "code": null,
17                   "id": 0,
18                   "name": null,
19                   "discriminator": "AttributeFormulaOperandDto"
20                 }
21               ],
22               "code": null,
23               "id": 0,
24               "name": null
25             },
26             "openTarget": "FileDownload",
27             "useFirstOrDefaultOperandValue": true,
28             "discriminator": "SimpleHyperlinkOptionsDto"
29           },

Небольшое отступление: если используете ссылку на хранилище проекта, то, обычно, на разных схемах одного и того же проекта эта ссылка отличается. Чтоб избежать необходимости каждый раз переписывать ссылку, рекомендуется использовать относительный адрес ссылки, например, '/filestorage/api/FileStorage/Db/get/'

Ссылка на объект репозитория как операнд

Для использования метаобъекта в качестве операнда, можно воспользоваться следующим примером:

ссылка на объект репозитория как операнд формулы гиперссылки
 1            "hyperlinkOptions": {
 2             "metaObjectSource": {
 3               "formula": {
 4                 "expression": "if ([1] > 0, [2], null() )",
 5                 "operands": [
 6                   {
 7                     "dictionaryId": 114,
 8                     "attribute": {
 9                       "discriminator": "OwnAttributeDefinitionDto",
10                       "id": 1
11                     },
12                     "attributeId": 1,
13                     "discriminator": "AttributeFormulaOperandDto",
14                     "code": null,
15                     "id": 1,
16                     "name": null
17                   },
18                   {
19                     "metaObjectId": 117,
20                     "discriminator": "MetaObjectFormulaOperandDto",
21                     "code": null,
22                     "id": 2,
23                     "name": null
24                   }
25                 ],
26                 "code": null,
27                 "id": 1,
28                 "name": null
29               },
30               "discriminator": "FormulaValueSourceDto"
31             },
32             "parameterSources": [
33               {
34                 "parameterId": 1,
35                 "valueSource": {
36                   "dictionaryAttribute": {
37                     "dictionaryId": 114,
38                     "attribute": {
39                       "discriminator": "OwnAttributeDefinitionDto",
40                       "id": 1
41                     }
42                   },
43                   "discriminator": "AttributeValueSourceDto"
44                 }
45               }
46             ],
47             "discriminator": "MetaObjectHyperlinkOptionsDto",
48             "openTarget": "SameWindow",
49             "refreshAfterModalWindow": false
50           },