常见场景:
校验规则里判断单据体中某一列至少包含一个数据。
单据头实体服务规则,计算单据体里物料编码为1.01.001的物料的采购数量,并赋值给单据头字段。
场景一:校验规则里,判断单据体的国家下拉列表中至少有一行是中国。
(1)在单据体中拖一个下拉列表,枚举类型绑定国家,可以看到中国的枚举项值是1
(2)在操作列表里选择保存,在校验规则里新增一条单据合法性校验
(3)配置如下:
len(filter(lambda x: x.F_TPQJ_Combo1<>"" and x.F_TPQJ_Combo1="1", F_TPQJ_Entity))>0
表达式分解介绍:
①lambda x: x.F_TPQJ_Combo1<>"" and x.F_TPQJ_Combo1="1", F_TPQJ_Entity,遍历单据体,取满足条件的值,不满足则为空。
②filter(①),在遍历出来的单据体数据中,过滤出来满足条件值为中国的数据,去掉了①的空值。
③len(②),计算出满足值为中国的数据的个数。
场景二:计算单据体里物料编码为1.01.001的物料的申请数量,并赋值给单据头字段。
1.采购申请单,在单据头加一个数量字段。
2.在单据头新增一条实体服务规则,前置条件虽然选不到单据体字段,但是可以手动输入,物料<>null and 申请数量<>0。规则内容,新增一条如下:
F_TPQJ_Qty =sum(map(lambda x:(x.FReqQty if (x.FMaterialId<>null and x.FMaterialId.FNumber == "1.01.001")else 0 ),FEntity))
表达式分解介绍:
①x.FReqQty if (x.FMaterialId<>null and x.FMaterialId.FNumber == "1.01.001")else 0,物料编码为1.01.001的时候,取申请数量,否则取0
②lambda x:①,FEntity,遍历单据体,取满足条件的数据,不满足的置为空
③map(②),将②映射成一个数量的集合
④sum(③),汇总求和。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/5498.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~