2.技巧:利用值变化事件反算单价

在销售单据中,通过值变化事件实现数量与单价变化时自动计算金额,手动修改金额时自动反算单价,且不产生循环计算

1. 前言

在销售类单据中,通常需要根据数量和单价自动计算金额(金额=数量×单价)。但实际业务中还存在另一种需求:当用户直接修改金额时,系统应能自动反算出新的单价(单价=金额/数量),且修改金额时不能再触发金额的重新计算,否则会形成循环计算的死锁。本教程讲解如何利用值变化事件实现这一功能。

2. 操作步骤

(1)理解值变化事件

值变化事件是指当表单中某个数据项的值发生改变时,系统自动触发对应公式运行的机制。
可以这样理解:用户在表单中修改了某个字段的值(比如修改了"数量"),系统检测到这个变化后,会自动执行你预先设置好的公式(比如重新计算"金额"),无需用户手动触发。
值变化事件属于事件群,这意味着它可以同时监听多个不同的数据项,并为每个数据项分别设置不同的触发公式。例如:
  • 当"数量"变化时 → 自动计算金额
  • 当"单价"变化时 → 自动计算金额
  • 当"金额"变化时 → 自动反算单价
这三个场景互不干扰,各自独立运行。

(2)添加值变化数据项并设置计算公式

实现数量×单价=金额的计算逻辑:
在值变化事件下添加数据项,同时勾选"数量"和"单价"作为触发数据项。这样无论用户修改数量还是单价,都会触发同一个计算公式。
① 在值变化事件下添加数据项,选择"数量"与"单价"作为触发数据项。
② 在该数据项下添加赋值公式,对金额赋值为"本表单.明细.数量×本表单.明细.单价"
使用效果: 修改数量或单价时,金额字段会自动重新计算并更新。

(3)实现反算单价功能

现在需要实现:当用户手动修改金额时,自动反算出新的单价(单价=金额/数量),且不会与前面的计算逻辑形成循环。
① 在值变化事件下添加"金额"作为值变化数据项。
② 设置执行条件:数量 > 0。避免当数量为0时出现除零错误。
③ 在该数据项下添加赋值公式,目标字段选择"单价",设置计算公式为:金额 / 数量。
④ 勾选"不触发值改变"。这样修改金额时,系统虽然修改了单价,但不会再次触发单价上的值变化事件,从而避免了循环计算。
使用效果: 手动修改金额后,单价自动反算更新,且金额不会再次被重新计算,彻底避免了循环计算的问题。

3. 注意事项

(1)在设置计算公式时,可以先将所有数据项都勾选"不触发值改变",只在确实需要触发连锁计算时再取消勾选。
(2)如果单元格中使用了Excel公式,在该单元格上触发值变化事件会报错。值变化事件仅适用于填表公式赋值的字段。
2026-05-26
0 0