减少填表公式的联动触发,也可以在很大程度上加快系统的运行效率
在填表公式的性能优化中,还有一种典型情况:把可以“一步到位”的计算,设计成了多个公式的链式触发(联动触发),导致速度变慢。 下面用一个例子说明。
场景:采购单录入物料后,自动计算金额与税额
数据字段:
- 物料编码(用户选择)
- 单价(从物料表带出)
- 数量(用户输入,假设已输入2)
- 金额(自动计算:单价×数量)
- 税额(自动计算:金额×13%)
方案一:联动触发(慢)
设置三个公式,靠字段值变化连环触发:
- 公式1(触发事件:物料编码值变化)从物料表带出单价,填入“单价”字段。
- 公式2(触发事件:单价或数量值变化)计算
金额 = 单价 × 数量,填入“金额”字段。 - 公式3(触发事件:金额值变化)计算
税额 = 金额 × 0.13,填入“税额”字段。
执行过程:用户选择物料编码 → 公式1触发,修改单价 → 单价变化触发公式2,修改金额 → 金额变化触发公式3,修改税额。
整个链条跑了 3 次公式执行,每次都可能伴随界面刷新,系统需要反复检查是谁的值变了、要不要触发新公式,开销很大。
方案二:直接赋值(快)
只用一个公式,在同一个事件下一次性完成所有赋值:
- 公式(触发事件:物料编码值变化)
- 步骤① 从物料表取出单价
- 步骤② 计算
金额 = 取出的单价 × 数量 - 步骤③ 计算
税额 = 金额 × 0.13 - 步骤④ 将单价、金额、税额一次性填入对应字段
执行过程:用户选择物料编码 → 公式触发一次,所有字段同时算出并填入,没有中间值变化,也就不会产生额外的公式触发。
整个操作只跑了 1 次公式执行,速度明显更快。
小结
- 联动触发虽然把逻辑拆得很细、看上去清晰,但会产生一连串的“值变化→再触发”,导致多次公式执行和界面刷新,性能较差。
- 直接赋值将有依赖关系的计算整合在一个公式里,一次触发、一步到位,减少了中间传递,是重要的优化手段。
在优化过程中,可以把这类“一个事件下原本需要多公式链式触发才能完成的计算”合并为“同一个公式内直接赋值”,作为有效的提速措施