151 getListFromState

This commit is contained in:
2025-10-16 11:23:48 +03:00
parent e33a9700af
commit bec77bb20a
4 changed files with 951 additions and 5 deletions
+38 -2
View File
@@ -100,8 +100,32 @@
from instance_state st
where st.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#local.qInstanceOperation.instance_operation_uid#" null=#!isValid('guid',local.qInstanceOperation.instance_operation_uid)#/>
order by st.version desc limit 1
</cfquery>
<cfquery name="local.qCurrentState" result="local.result">
select
<m:field_set titleMapOut="local.stateTitleMap" lengthOut="local.fieldCount">
<m:field title="instance_state_uid">st.instance_state_uid::text as instance_state_uid</m:field>
<m:field title="v.">st.version</m:field>
<m:field title="creator_id">st.creator_id</m:field>
<m:field title="dt_state">to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_state</m:field>
<m:field formatter=#request.castToBool#>st.is_test</m:field>
<m:field title="instance_operation_uid">st.instance_operation_uid::text as instance_operation_uid</m:field>
<m:field title="instance_data" formatter=#function(x){return (deserializeJson(x))}#>st.instance_data::text as instance_data</m:field>
</m:field_set>
from instance_state st
where st.instance_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#local.qInstanceOperation.instance_uid#" null=#!isValid('guid',local.qInstanceOperation.instance_uid)#/>
order by st.version desc limit 1
</cfquery>
<cfset var currentState = {}/>
<cftry>
<cfset currentState = deserializeJson(local.qCurrentState.instance_data)/>
<cfcatch type="ANY">
<!--- тут надо логировать ошибку ---><cfdump var=#cfcatch#/><cfabort/>
</cfcatch>
</cftry>
<cfquery name="local.qCfsParam" result="local.result">
select
<m:field_set titleMapOut="local.cfsParamTitleMap" lengthOut="fieldCount">
@@ -132,8 +156,9 @@
<m:field>sop.sort</m:field>
<m:field>iop.note</m:field>
<m:field>sop.nested_ref</m:field>
<m:field>sop.config::text</m:field>
<m:field>null as nested_ref_data</m:field>
<m:field>sop.config::text as config</m:field>
<m:field>null as nested_ref_data</m:field><!--- placeholder for future data --->
<m:field>sop.state_path</m:field>
<m:field formatter=#request.castToBool#>sop.is_sensitive</m:field>
</m:field_set>
from svc_operation_cfs_param sop
@@ -169,6 +194,17 @@
}/>
<cfinvoke component="instance_operation_cfs_param" method="generateClosure" argumentCollection=#args# returnVariable="local.fNestedRef"/>
<cfset local.qCfsParam.nested_ref_data = local.fNestedRef() />
<cfelseif len(local.qCfsParam.state_path) AND isStruct(currentState)><!--- deserializeJson может вернуть пустую строку вместо структуры,
по крайней мере, если получает поле пустого резалтсета --->
<cfset var args = {
"state":#currentState#,
"path":"#local.qCfsParam.state_path#"
}/>
<cfinvoke component="instance_operation_cfs_param"
method="getListFromState"
argumentCollection=#args#
returnVariable="local.qCfsParam.value_list"
/>
</cfif>
<cfif data_type EQ "map">