需求说明: 客户在设置流程时,要求当单据明细[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
著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/7546.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~