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

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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


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

需求说明: 客户在设置流程时,要求当单据明细[FEntity]中的文本字段[FStoreName]全部为【仓库组】时,走一条分支,当全部为【生产组】时...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息