二开案例.表达式.表达式中的汇总计算

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:3

二开案例.表达式.表达式中的汇总计算

【场景描述】在保存操作上的校验规则中,如何将单据头的金额字段 与单据体的金额字段的汇总进行比较?

例如,配置了表达式:F_PAEZ_Amount <> sum(FAllAmount),如下图,但是运行时执行报错?

666666666666666666666666666666.webp


当我们按上图配置好表达式后,运行时会报如下错误:

666666666666666666666666666666.webp


这个报错是因为,我们要对单据体的某个字段进行遍历汇总,但是传入表达式上下文中的数据包是当前行的,而不是整个单据体集合的,所以执行该表达式会提示错误说,某某字段无法遍历。

修复办法如下:打开元数据XML,找到对应的表达式所在位置,强行指定当前参与表达式计算的数据包为当前被汇总的字段的父分录(此例中为单据头)


<ConditionValidation ValidationType="1003">

  <ErrorMessage>yyy</ErrorMessage>

  <ErrorWhenExpressIsTrue>True</ErrorWhenExpressIsTrue>

  <Express>F_PAEZ_Amount &lt;&gt; 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

666666666666666666666666666666.webp

















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表达式.表达式中的汇总计算

【场景描述】在保存操作上的校验规则中,如何将单据头的金额字段 与单据体的金额字段的汇总进行比较?例如,配置了表达式:F_PAEZ_Amount...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息