13
2024
08
19:12:22

Python表达式: 流程条件使用单据体字段

需求说明: 客户在设置流程时,要求当单据明细[FEntity]中的文本字段[FStoreName]全部为【仓库组】时,走一条分支,当全部为【生产组】时走一条分支,当全部为【供应商组】时走一条分支,其他走第四条分支。

那么条件应该怎么写呢?

方法就是用Python的set()函数去重复,如果去重后记录大于1,说明是混合的,走其他分支。如果去重后记录等于1,再比较第一条记录,走对应分支。

Python条件表达式:

全部为【仓库组】

len(FStoreName)>0 And FStoreName[0]=='仓库组' And len(set(FStoreName))==1 

全部为【生产组】

len(FStoreName)>0 And FStoreName[0]=='生产组' And len(set(FStoreName))==1 

全部为【供应商组】

len(FStoreName)>0 And FStoreName[0]=='供应商组' And len(set(FStoreName))==1 

其他

len(FStoreName)==0 Or (len(FStoreName)>0 And len(set(FStoreName))>1)


如果字段为基础资料类型,比较编码Number,可以用如下表达式

len(map(lambda x: x.Number, FMaterialId))>0 And map(lambda x: x.Number, FMaterialId)[0]=='cangkuzu' And len(set(map(lambda x: x.Number, FMaterialId)))==1 


如果字段为基础资料引用类型,可以用如下表达式

len(map(lambda x: x.FMaterialName, FEntity))>0 And map(lambda x: x.FMaterialName, FEntity)[0]=='仓库组' And len(set(map(lambda x: x.FMaterialName, FEntity)))==1 


如果条件是包含,比如记录中包含【仓库组】

len(filter(lambda x: ( x == '仓库组' ), FStoreName))>0


python函数说明:

len() 返回对象(字符、列表、元组等)长度或项目个数。

map() 会根据提供的函数对指定序列做映射。

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。


作者:阿龙Zero

来源:金蝶云社区

原文链接:https://vip.kingdee.com/article/84700531192700160?productLineId=1&isKnowledge=2&lang=zh-CN

著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7546.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: