Платформа 3V/Формы/Источники данных/Отчет/Параметры/На значении выражения (EntryExpressionByExpression): различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 23: Строка 23:
 
| expressionId || Идентификатор [[Платформа_3V/Формы/Выражения|'''выражения''']]
 
| expressionId || Идентификатор [[Платформа_3V/Формы/Выражения|'''выражения''']]
 
|}
 
|}
 
==Пример использования в качестве параметра выражения==
 
При необходимости вычисления некоторого выражения на основании значения вычисленного с помощью другого выражения, добавленного ранее, используется соответствующий параметр EntryExpressionByExpressionDto
 
 
Кейс: Собрать строковый элемент управления, в котором будет отображаться "Договоры:" + "Наименования договоров"
 
 
"Наименования договоров" собрать из наименований договоров, которые выбраны пользователем в соответствующем элементе управления на справочнике "Договоры" (использовать для этого отдельное выражение на расчет строки с перечнем наименований договоров с помощью выражения [[Платформа_3V/Формы/Параметры_выражений_и_отчетов/На_источнике_-_справочнике_(EntryExpressionDictionarySourceParameterDto)|'''на источнике карточки - справочнике (EntryExpressionDictionarySourceParameterDto)''']])
 
 
И в отдельном выражении добавить перечню договоров фразу "Договоры:"
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
 
<div style="font-weight:bold;line-height:1.6;">JSON серверной карточки</div>
 
<div class="mw-collapsible-content mw-collapsed-content">
 
<syntaxhighlight lang="JSON" line>
 
{
 
"id": 123,
 
"name": "Использование в выражении параметра EntryExpressionByExpressionDto",
 
"description": null,
 
"title": null,
 
"entrySettings": null,
 
"uiSources": [
 
{
 
"dataSourceId": 100,
 
"nameTemplate": "",
 
"displayAttribute": null,
 
"hasMultipleValue": true,
 
"hasNullableValue": false,
 
"maxElements": null,
 
"hasServerFiltration": false,
 
"searchSettings": {
 
"maxElements": null,
 
"minInputChars": 2,
 
"searchMode": "Client",
 
"debounceMs": 300
 
},
 
"id": 1,
 
"caption": "Выпадающий список договоров",
 
"enable": true,
 
"visible": true,
 
"hint": null,
 
"doActionOnChangeValue": true,
 
"onAfterChangeValueConditionalActions": null,
 
"onAfterChangeValueByClientConditionalActions": null,
 
"rebuildDependentsObjectOnChange": true,
 
"enableRuleIds": [],
 
"visibleRuleIds": [],
 
"access": null,
 
"isValueChanged": false,
 
"expressionId": null,
 
"discriminator": "DictionarySourceEntry"
 
},
 
{
 
"trimSpaces": false,
 
"defaultValue": null,
 
"value": null,
 
"id": 2,
 
"caption": "Договоры: 'Наименования договоров' (строка)",
 
"enable": true,
 
"visible": true,
 
"hint": null,
 
"doActionOnChangeValue": false,
 
"onAfterChangeValueConditionalActions": null,
 
"onAfterChangeValueByClientConditionalActions": null,
 
"rebuildDependentsObjectOnChange": true,
 
"enableRuleIds": [],
 
"visibleRuleIds": [],
 
"access": null,
 
"isValueChanged": false,
 
"expressionId": 1001,
 
"discriminator": "StringSourceEntry"
 
}
 
],
 
"entryDataSources": [
 
{
 
"dictionaryId": 38238,
 
"hierarchyId": null,
 
"filter": null,
 
"sortingOptions": null,
 
"groupingOptions": null,
 
"dictionaryAttributes": null,
 
"defaultValueExpressionId": null,
 
"parameterId": null,
 
"dictionarySourceSelectionMode": "None",
 
"dataSourceAttributesAdditionsSettings": [],
 
"externalFileStorageUrl": null,
 
"filePrefix": null,
 
"defaultNewElementSettings": null,
 
"id": 100,
 
"name": "Договоры",
 
"isReadOnly": true,
 
"dataEditRuleIds": [],
 
"beforeSaveDataActions": [],
 
"afterSaveDataActions": [],
 
"discriminator": "DictionaryDataSource"
 
}
 
],
 
"parameters": [],
 
"binaryConditionsRules": [],
 
"submitValidateRules": [],
 
"expressions": [
 
{
 
"id": 1000,
 
"expression": "Concatenate(', ', [1])",
 
"returnFirstParameterValue": false,
 
"parameters": [
 
{
 
"id": 1,
 
"allowMultipleValues": true,
 
"discriminator": "EntryExpressionDictionarySourceParameterDto",
 
"dictionarySourceId": 100,
 
"attributeId": 2,
 
"getFirstElementValue": false,
 
"useAllInstanceElements": false
 
}
 
],
 
"comment": "Получение строки с перечнем наименований выбранных пользователем договоров"
 
},
 
{
 
"id": 1001,
 
"expression": "'Договоры: '+ [1]",
 
"returnFirstParameterValue": false,
 
"parameters": [
 
{
 
"id": 1,
 
"allowMultipleValues": false,
 
"discriminator": "EntryExpressionByExpressionDto",
 
"expressionId": 1000
 
}
 
],
 
"comment": "Добавление к перечню наименований 'Договоры:'"
 
}
 
],
 
"controlsValueCalculateRules": [],
 
"actions": [],
 
"conditionActionIdsOnOpen": [],
 
"conditionalActions": [],
 
"selectionSets": [],
 
"reportTemplates": [],
 
"useNewDependenciesBuilder": null
 
}
 
</syntaxhighlight>
 
</div></div>
 
  
 
==Пример использования в качестве параметра отчета==
 
==Пример использования в качестве параметра отчета==

Версия 11:56, 17 сентября 2021

Параметр, который возращает значение другого выражения, добавленного ранее в серверную карточку, имеет следующую структуру:

1 {
2 	"id": 1,
3 	"allowMultipleValues": false,
4 	"discriminator": "EntryExpressionByExpressionDto",
5 	"expressionId": 1000
6 }

Описание свойств параметра

Свойство Описание
id Идентификатор параметра
allowMultipleValues Флаг об получении результата в виде коллекции значений (true/false)
discriminator EntryExpressionByExpressionDto
expressionId Идентификатор выражения

Пример использования в качестве параметра отчета

При необходимости передать в качестве параметра отчета значение расчетного выражения, используется соответствующий параметр EntryExpressionByExpressionDto

Кейс: Отчет отображает реестр компаний с типом "Публичное акционерное общество", перечень компаний приходит в параметр отчета (id=1) на основании справочника "Компании" без возможности менять перечень пользователем. Также должна учитываться фильтрация элементов по атр."Тип контрагента" (id=21) = "Публичное акционерное общество" (id=3). Также элемент управления отображает отфильтрованные компании без возможности изменения. Сформировать одно, единое выражение с помощью справочника - объекта репозитория (EntryExpressionByDictionaryRequestDto), которое будет использоваться для получения отметки в элементе управления, а также в параметре отчета

JSON серверной карточки