审批流中通过明细表中的仓库设置不同的条件审核

原因说明

工作流的流转条件需要一个确定的布尔值(True/False)来决策流程走向。但单据体明细可能有多行,不同行的值可能不同,没有一个确定的值直接作为判断依据,所以系统设计上不允许在基本页签直接选取单据体字段。

解决方案:高级页签 + lambda表达式

通用公式模板

len(filter(lambda x: (x.字段标识.关联属性 判断条件), 单据体标识)) > 0

公式含义:遍历单据体的所有行,逐行检查是否符合条件,如果至少有一行符合条件,则返回True(>0)。

常用场景公式示例

场景公式说明
按仓库编码匹配len(filter(lambda x: x.FStockId.FNumber in ['CK001','CK002'], FEntity)) > 0单据体中有仓库编码为CK001或CK002的行
按仓库名称匹配len(filter(lambda x: x.FStockID.FName == '原料仓', FEntity)) > 0单据体中有仓库名称为”原料仓”的行
按金额判断len(filter(lambda x: x.FAmount > 1000, FEntity)) > 0单据体中有金额大于1000的行
按逻辑字段判断len(filter(lambda x: x.FCheckDelivery == true, FEntity)) > 0单据体中有某勾选框已勾选的行
取反(不符合条件)len(filter(lambda x: (x.FStockID.FName == '原料仓'), FEntity)) == 0单据体中没有任何一行仓库为”原料仓”

操作步骤(以本次场景为例)

假设您希望:其他出库单明细中包含”原料仓”时,走仓管员审批节点;否则直接终审

① 找到仓库字段标识

登录BOS设计器,打开【其他出库单】→ 查看明细单据体页签标识(通常是 FEntity)和仓库字段标识(通常是 FStockId),以及仓库编码字段的关联属性(FNumber)。

② 配置流转连线条件

在【工作流设计器】中:

  1. 选中有判断条件的流转连线
  2. 切换到 【高级】 页签
  3. 在原有条件基础上(如 ActionResult == 'Consent')用 And 连接,输入公式: 条件1:走到仓管员审批节点
ActionResult == 'Consent' And len(filter(lambda x: x.FStockId.FNumber in ['原料仓编码'], FEntity)) > 0
图片[1]-审批流中通过明细表中的仓库设置不同的条件审核-Dgcity

条件2:直接终审(不包含指定仓库)

ActionResult == 'Consent' And len(filter(lambda x: x.FStockId.FNumber in ['原料仓编码'], FEntity)) == 0
图片[2]-审批流中通过明细表中的仓库设置不同的条件审核-Dgcity

③ 公式参数说明

参数说明示例
x.字段标识单据体明细中的字段x.FStockId(仓库字段)
FNumber基础资料的编码属性仓库的基础资料编码
FName基础资料的名称属性仓库的基础资料名称
FEntity单据体明细页签的标识不同的单据标识可能不同
in ['A','B']匹配多个值(或关系)仓库编码为A或B都符合
==精确匹配单个值等于某个特定值

💡 小技巧:如何快速获取字段标识

在BOS设计器中,点击单据体字段 → 右侧属性栏查看 【绑定实体字段】 或 【字段标识】FNumber/FName 是基础资料字段的关联属性,分别代表编码和名称。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像-Dgcity
欢迎您留下宝贵的见解!
提交
头像-Dgcity

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容