1.前言
经过前面章节的学习,我们已经会用业务公式做新建、更新、删除、校验等各种操作。但在一个事件下挂了多个公式、一个公式里有多个情况和多个赋值项时,公式到底按什么顺序运行?如果中途报错会怎样?不理解这些执行规则,就可能设计出逻辑混乱、难以排查的公式。
本教程系统总结业务公式的执行规则,帮助你在设计公式时预判运行顺序,避免因执行顺序导致的逻辑错误。
2.业务公式的执行规则
(1) 同一个事件下有多个业务公式:从上到下依次执行
规则:在一个事件(如"审核"状态改变事件)下可以添加多个业务公式,它们按从上到下的顺序依次执行。
原理:顺序决定了依赖关系。比如3.12中,库存校验公式要放在前面先运行,库存不足时直接报错,后面的出库公式就不会执行。如果把校验放在后面,出库单已经生成了才报错,就达不到拦截的目的。

(2) 针对多个目标对象操作:先基本信息后明细
规则:当业务公式的目标模板带明细表时,必须先在"基本信息"目标对象上操作,找到对应的表单,再在"明细"目标对象上操作。
原理:明细是挂在基本信息之下的。如3.10更新采购订单的入库数量,必须先通过采购单号找到是哪张采购单,才能定位到它下面的商品明细行。

(3) 一个业务公式有多个情况:从左到右依次执行
规则:同一个业务公式内的多个情况,按从左到右的顺序逐个运行,满足执行条件的情况才执行。
原理:如3.3中"入库"和"取消入库"两个情况,点击入库按钮时,"入库"情况条件满足会执行,"取消入库"条件不满足则跳过。情况顺序如果放反,可能导致判断出错。

(4) 一个业务公式给多个数据项赋值:从上到下依次执行
规则:同一个操作中的多个赋值项按从上到下的顺序依次执行。
原理:赋值顺序很重要。如3.8计算库存单价时,必须先赋值库存数量和库存金额,再赋值单价——因为单价的条件表达式要引用前面已经算好的数量。顺序写反,单价就会引用到旧值。

(5) 业务公式报错时:事件下所有公式全部回滚
规则:执行过程中只要有一个业务公式报错,本次事件触发的所有业务公式执行结果都会回滚到执行之前的状态。
原理:这是为了保证业务数据的正确性和一致性。比如3.12中,如果库存校验公式报错,即使前面已经有其他公式执行了部分操作,也会全部撤销,不会留下半截数据,确保要么全部成功、要么全部不生效。

3.核心要点回顾
(1)同一事件下的多个业务公式从上到下执行,前置校验要放在前面。
(2)目标带明细时,先操作基本信息定位表单,再操作明细。
(3)一个公式的多个情况从左到右执行,满足执行条件的情况才运行。
(4)多个赋值项从上到下执行,后面的赋值可以引用前面算好的结果。
(5)公式报错时事件下所有公式全部回滚,保证业务数据的完整一致。