二开案例.表达式.获取分录行的最大日期
【应用场景】获取分录行的最大日期。
【案例演示】采购订单,单据头和单据体分别增加日期字段,该案例演示通过使用实体服务规则,获取分录行的最大日期,并赋值给单据头的日期字段。
【实现步骤】
<1>BOSIDE扩展采购订单,单据头和单据体分别新增两个长日期字段。
<2>在单据头上新增实体服务规则,如下图,保存元数据,开发完毕。
前置条件:
F_Jac_Datetime1 <> null AND FPOOrderEntry <> null AND FPOOrderEntry.Count > 0 AND len(filter(lambda row: row.F_Jac_Datetime1 <> null, FPOOrderEntry)) > 0
计算公式:
F_Jac_Datetime = max(map(lambda x : x.F_Jac_Datetime1, filter(lambda row: row.F_Jac_Datetime1 <> null, FPOOrderEntry)))
现在可以登录业务站点,打开采购订单编辑界面,单据体中录入日期,验证一下实体服务规则的控制效果啦。
【扩充知识】
<1>如果是求日期的最小值,把max改为min即可。
F_Jac_Datetime = min(map(lambda x : x.F_Jac_Datetime1, filter(lambda row: row.F_Jac_Datetime1 <> null, FPOOrderEntry)))
<2>前置条件,必须加上表达式中出现的所有字段不为null的判断(F_Jac_Datetime1<>null),如果不加,实体服务规则可能会感应不到这些字段的值更新事件,导致规则未执行。
<3>map函数要求遍历的集合不能为空,因此,前置条件要加上单据体满足条件的行是否大于0的判断,如果不加,当不存在满足map运算的数据行时,运行时可能报错。
<4>更多疑问,可百度关键字【python max】【python map】【python lambda】
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表达式.获取分录行的最大日期
本文2024-09-23 04:20:52发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164718.html