在工作流设计中,连线条件和参与人设置条件上都可以使用高级页签的pyhton语句来实现。
下面对一些常用的python语句的编写进行了整理,希望能对设计者有所帮助。
首先,如果您写了一个python语句如果不知道可否正常运行,建议使用表达式测试进行测试。
下面开始举例:
一、流程变量:
1、发起人=XXX
python语句:WF.Originator == 'XXX',使用单引号,XXX为发起人名称;
2、发起人岗位=XXX
python语句:WF.OriginatorPost = 'GW000001',GW000001是岗位编码,高级条件中的岗位都是记录的岗位编码。
3、发起人岗位存在多个岗位时或不同发起人,判断发起人岗位
python语句:WF.OriginatorPost in['GW000001', 'GW0000012', 'GW000003',...],只要发起人岗位编码为其中的一个值都会为true;如果不在其中,使用 not in。
4、节点执行人为空
python语句:WF.GetApprovalActionExecutor(17) ='',单引号中间没有空格键;
节点执行人不为空:WF.GetApprovalActionExecutor(17) <>''
5、节点执行人岗位为空
python语句:WF.GetApprovalActionExecutor(17) ='';单引号中间没有空格键;
节点执行人岗位不为空:WF.GetApprovalActionExecutorPost(17)<>''
二、单据变量:
1、文本类型字段
文本字段为空:F_JD_Text1=null
文本字段内容=XXXX:F_JD_Text1 = 'XXXX'
搜索字段中是否包含某段文本:XXXX:F_JD_Text1.find('XXXX') >= 0
多行文本字段
文本字段为空:XXXX=null or XXXX=" "
文本字段不为空:XXXX<>null and XXXX<>" "
2、复选框类型字段
勾选:F_JD_CheckBox1 = true;
不勾选:F_JD_CheckBox1 = false;
3、数值类型
字段值为1判断:F_JD_Decimal1 = 1
4、下拉列表类型
下拉列表字段,存储的是枚举项值,显示的是枚举项名称,公式中,需要与枚举项值进行比较
如F_JD_Combo1绑定的枚举类型为价格类型,有两个枚举项('1' : 到岸价; '2' : 出厂价)
F_JD_Combo1 = '1'
5、基础资料类型
因为基础资料字段有恨多属性,不能直接使用基础资料和期望的值进行比较。
需要明确的指定属性与常量值进行比较:
基础资料的ID:F_JD_Base1.Id = 100001
基础资料的编码:F_JD_Base1.FNumber = 'GW0001'
基础资料的名称:F_JD_Base1.FName = '采购员'
6、日期字段
字段值为日期型,不能与字符串常量进行比较。
可以采用公用函数,把日期转换为字符串进行比较:
F_JD_Date1.ToString('yyyy-MM-dd') = '2016-07-07'
如:日期字段等于当前日期:
FDate.ToString('yyyy-MM-dd') == WF.CurrentDate(WF.CurrentDate目前已经提供的变量)
当前日期-单据的创建日期大于2天
(datetime(WF.CurrentDate) - FCreateDate.Date).Days > 2
7、单据体字段
工作流高级条件的界面没有展示出单据体字段,但是通过写python是可以支持到的。
因为单据体是多行数据,需要lambda表达式,对单据体行,进行循环,逐行取基础资料字段值进行比较:
len(filter(lambda x: ( x.维修次数 == '2' ), FEntity))>0 维修次数是字段的标识,如果名称需要加Fname
表达式说明: FEntity是单据体标识,bos设计器中点击单据体,属性中显示的标识;
x 代表单据体当前行, 逐行判断单据体字段维修次数是否为'2',如果是,则计数加一; 循环结束,如果计数器大于0,返回真:即起码有1行,符合条件。
举例1:采购入库单单据体中仓库不等于XXX
len(filter(lambda x: ( x.FStockId!=None and x.FStockId.FNumber <> 'CK001'), FInStockEntry))>0
例如:所有分录数量都大于15
len(filter(lambda x : x.FReqQty>15 , FEntity)) = len(FEntity) 所有分录数量都大于15
例如:所有分录有一条数量都小于10
len(filter(lambda x : x.FReqQty<10 , FEntity)) >0
例如: 所有分录中最低的数量在10和15之间
min(map(lambda x:x.FReqQty, FEntity)) >= 10 and min(map(lambda x:x.FReqQty, FEntity)) =<15
单据体字段为下拉列表类型时,单据体中有下拉列表字段为:收货 的行时
len(filter(lambda x : x.F_dev_Combo ='1' , FEntity))>0 ,1为单据体下拉列表收货的枚举项值
举例2:其他出库单单据体仓库名称等于CK作为条件:为true
len(filter(lambda x: ( x.FStockId!=None and x.FStockId.FName = 'CK'), FEntity))>0
举例3: 单据体日期字段只要有一行日期字段为空判断条件就为true
len(filter(lambda x:x.F_BHR_Date==null or x.F_BHR_Date=="" ,FEntity))>0
举例4:直接调拨单单据体调入仓库名称包含“仓”的情况为true
len(filter(lambda x: ( x.FDestStockId!=None AND x.FDestStockId.FName.find('仓')>=0), FBillEntry))>0
直接调拨单单据体调入仓和调出仓同时满足条件的情况
len(filter(lambda x: (x.FDestStockId!=None and x.FSrcStockId!=None and ((x.FDestStockId.Fnumber ="CK005"and x.FSrcStockId.Fnumber ="CK006") or (x.FDestStockId!=None and x.FDestStockId.Fnumber ="CK002"and x.FSrcStockId.Fnumber ="CK003"))), FBillEntry))>0
举例5:费用报销单据体所有分录的费用项目编码都为CI001,条件才是true
len(filter(lambda x: x.FExpID.FNumber = 'CI001', FEntity)) = len(FEntity)
举例6:采购入库单单据体中必须所有行的物料编码都是001
len(filter(lambda x :x.FMaterialId.FNumber ='001',FInStockEntry)) == len(FInStockEntry)
如果是单据体中所有行都要物料编码包含001
len(filter(lambda x :x.FMaterialId.FNumber <> null and x.FMaterialId.FNumber.find('001')>=0, FInStockEntry)) == len(FInStockEntry)
举例7:采购入库单单据体中必须所有行中物料编码是001或者是002,不能是其他
len(filter(lambda x :x.FMaterialId.FNumber ='001',FInStockEntry)) + len(filter(lambda x :x.FMaterialId.FNumber ='002',FInStockEntry))== len(FInStockEntry)
举例8:费用申请单单据体申请金额大于500,小于等于1000时为true
len(filter(lambda x : x.FOrgAmount > 500 and x.FOrgAmount <= 1000,FEntity)) >0
8、多选基础资料类型
例如:判断发起人是多选基础资料中的任何一个值时为true:
WF.Originator in (map(lambda x:x.Name,F_MOB_MulBase))
多选基础资料中选择的个数条件判断,选择大于1个时下面语句true
len(filter(lambda x:x.Name,F_MOB_MulBase))>1
9、多选下拉列表字段python的写法
例如在单据头新增多选下拉列表字段,枚举类型选择如图:
需要在流程连线上判断多选下拉列表字段的值:"1" in F_PAEZ_MulCombo_qtr.split(',') or "4" in F_PAEZ_MulCombo_qtr.split(',') or "5" in F_PAEZ_MulCombo_qtr.split(',') ,当多选下拉列表选择1或者4或者5或者同时选都为true
其中1、4、5是枚举项值, F_PAEZ_MulCombo_qtr是多选下拉列表字段标识
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/7542.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~