二开案例.表达式.表达式中的汇总计算
【场景描述】在保存操作上的校验规则中,如何将单据头的金额字段 与单据体的金额字段的汇总进行比较?
例如,配置了表达式:F_PAEZ_Amount <> sum(FAllAmount),如下图,但是运行时执行报错?
当我们按上图配置好表达式后,运行时会报如下错误:
这个报错是因为,我们要对单据体的某个字段进行遍历汇总,但是传入表达式上下文中的数据包是当前行的,而不是整个单据体集合的,所以执行该表达式会提示错误说,某某字段无法遍历。
修复办法如下:打开元数据XML,找到对应的表达式所在位置,强行指定当前参与表达式计算的数据包为当前被汇总的字段的父分录(此例中为单据头)
<ConditionValidation ValidationType="1003">
<ErrorMessage>yyy</ErrorMessage>
<ErrorWhenExpressIsTrue>True</ErrorWhenExpressIsTrue>
<Express>F_PAEZ_Amount <> sum(FAllAmount)</Express>
<DisplayToFieldKey>FBillNo</DisplayToFieldKey>
<Id>37ce3bf9-8b01-4526-8e6e-3b5784bffd3a</Id>
<Description>单据头总金额和明细中的价税合计总金额不一致</Description>
<EntityKey>FBillHead</EntityKey>
<PreCondition />
</ConditionValidation>
按此方式调整好分录的Key后,表达式就可以正常的进行汇总啦。
注意:此调整目前仅支持直接修改XML。
因为在前置条件的表达式计算不存在此限制,另一种更骚的操作方式是:将表达式主体整个搬至前置条件中,而表达式主体则设置为常量true,如下图所示。具体操作手法可参考:https://vip.kingdee.com/article/68808207404972288
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表达式.表达式中的汇总计算
本文2024-09-23 04:21:34发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164800.html