二开案例.表达式.操作服务前置条件原创
金蝶云社区-Jack
Jack
13人赞赏了该文章 1,348次浏览 未经作者许可,禁止转载编辑于2020年08月06日 16:29:45

【基础知识】

<1>操作服务前置条件执行时,始终传递的是表头级的数据包(上下层级关系完整,字段不一定完整)。

<2>表达式中,单据体字段属于集合中的元素,不能直接访问,如果要访问,只能采用遍历或聚合的方式访问。

【应用场景】

<1>编写表达式,判断采购订单明细中的总的采购数量超过100时,执行某个服务。

sum(FQty)>100

888888888888888888.png

<2>针对采购订单保存操作的服务端服务,编写表达式,当采购订单明细中存在库存数量大于采购数量的数据行时(订单明细逐行比较),执行某个服务。

len(filter(lambda row: int(row.ActiveObject["FQty2"])>int(row.ActiveObject["Qty"]), FPOOrderEntry ))>0

666666666666666666.png

注意:

(1)表达式中的"FQty2"是对应字段的【绑定实体属性】设置的名称。

(2)如果是提交、审核、反审核等操作,可能会提示报错信息:实体类型xxx中不存在名为yyy的属性,这是因为只有保存操作是全量数据包,而其它操作都是按需加载最简数据包(非全量数据包),因此参与表达式计算的数据包并未包含该字段,我们只需要在表达式前面加上任意一个含有该字段的恒等条件即可(主要作用是明确告知表达式执行器我需要用这个字段)。

例如:sum(FQty2)>0 AND sum(FQty)>0 AND 

len(filter(lambda row: int(row.ActiveObject["FQty2"])>int(row.ActiveObject["Qty"]), FPOOrderEntry ))>0

图标赞 13
13人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0