224 subparam compute fix

This commit is contained in:
2026-04-02 12:38:30 +03:00
parent b42aa109f0
commit 9409b2cd74
5 changed files with 62 additions and 57 deletions
+36 -38
View File
@@ -187,45 +187,42 @@
order by sp.sort
</cfquery>
<cfif len(local.qSubparam.func)><!--- приоритет отдается функции перед списком значений--->
<cfset var args = {
"functionName":"#local.qSubparam.func#",
"svcId":#local.qSvcOperation.svc_id#,
"contractId":#arguments.contractId#
}/>
<cfinvoke component="instance_operation_cfs_param" method="generateValueList" argumentCollection=#args# returnVariable="local.qSubparam.value_list"/>
<cfif len(trim(local.qSubparam.value_list)) AND listLen(local.qSubparam.value_list) EQ 1>
<cfset local.qSubparam.default_value=local.qSubparam.value_list/><!--- *** не очень красиво перетирать query, но делаем это довольно часто --->
</cfif>
<!--- <cfelseif len(local.qSubparam.nested_ref)>
<cfset var args = {
"functionName":"#local.qSubparam.nested_ref#",
"config":"#local.qSubparam.config#"
}/>
<cfinvoke component="instance_operation_cfs_param" method="generateClosure" argumentCollection=#args# returnVariable="local.fNestedRef"/>
<cfset local.qSubparam.nested_ref_data = local.fNestedRef() /> --->
<!--- <cfelseif len(local.qSubparam.state_path) AND isStruct(currentState)>
<cfset var args = {
"state":#currentState#,
"path":"#local.qSubparam.state_path#"
}/>
<cfinvoke component="instance_operation_cfs_param"
method="getListFromState"
argumentCollection=#args#
returnVariable="local.qSubparam.value_list"
/> --->
</cfif>
<cfif (len(local.qSubparam.func) OR len(local.qSubparam.expression) <!--- OR len(local.qSubparam.state_path) OR len(local.qSubparam.nested_ref)---> )
AND len(local.qSubparam.value_list) EQ 0>
<cfset local.qSubparam.value_list = []/>
</cfif>
<cfset var mapDescriptor=structNew("linked")/>
<!--- *** выдавать на фронт expression нам ни к чему, это временное явление --->
<cfloop query="local.qSubparam">
<cfif len(local.qSubparam.func)><!--- приоритет отдается функции перед списком значений--->
<cfset var args = {
"functionName":"#local.qSubparam.func#",
"svcId":#local.qSvcOperation.svc_id#,
"contractId":#arguments.contractId#
}/>
<cfinvoke component="instance_operation_cfs_param" method="generateValueList" argumentCollection=#args# returnVariable="local.qSubparam.value_list"/>
<cfif len(trim(local.qSubparam.value_list)) AND listLen(local.qSubparam.value_list) EQ 1>
<cfset local.qSubparam.default_value=local.qSubparam.value_list/><!--- *** не очень красиво перетирать query, но делаем это довольно часто --->
</cfif>
</cfif>
<cfif (len(local.qSubparam.func) OR len(local.qSubparam.expression) )
AND len(local.qSubparam.value_list) EQ 0>
<cfset local.qSubparam.value_list = []/>
</cfif>
<cfset var def = computeDefault(local.qSubparam.default_compute, local.qSubparam.default_value, qSvcOperation.svc_id, arguments.usrId)/>
<!--- *** пока не пытаемся восстановить значения из стейта
<cfif len(local.qSubparam.default_value) EQ 0>
<!--- и вот наконец мы извлекаем старое значение из стейта --->
<cfset var paramName = this.helper.snake2camel(local.qSubparam.svc_operation_cfs_subparam)/>
<cfif structKeyExists(local.instanceDataParams, paramName)>
<cfset var oldValue = structFind(local.instanceDataParams, paramName)/>
<cfset def = isStruct(oldValue) ? serializeJson(oldValue) : oldValue/> <!--- потому что передаем строку, а не объект --->
</cfif>
</cfif> --->
<cfset structInsert(mapDescriptor, local.qSubparam.svc_operation_cfs_subparam,
{
"svcOperationCfsSubparamId":"#local.qSubparam.svc_operation_cfs_subparam_id#",
@@ -240,7 +237,7 @@
"regex":"#local.qSubparam.regex#",
"man":"#local.qSubparam.man#",
"descr":"#local.qSubparam.descr#",
"defaultValue":"#local.qSubparam.default_value#",
"defaultValue":"#def#",
"isRequired":#request.castToBool(local.qSubparam.is_required)#,
"isSensitive":#request.castToBool(local.qSubparam.is_sensitive)#,
"refSvcId":#local.qSubparam.ref_svc_id#,
@@ -250,8 +247,9 @@
"isModifiableDefinition":false
}, true
)
/>
</cfloop> <!--- *** вообще-то передавать в дескриптор func и default_compute не нужно, это для не забыть --->
/><!--- *** вообще-то передавать в дескриптор func и default_compute не нужно, это для не забыть --->
</cfloop>
<cfset local.qCfsParam.data_descriptor = mapDescriptor/>
</cfif><!---/map --->