1.前言
在前面的章节中,用了很多次"新建表单"操作来生成应付款单、库存日志等。但实际业务中,还有一种常见需求:如果记录已存在就更新它,不存在才新建。比如入库时更新商品库存,第一次入库需要新建一条库存记录,后续再入库时直接累加数量而不是重复新建。
本教程讲解业务公式中"新建表单"与"更新表单"两种操作的区别,以及如何通过"不存在时新增一条记录"实现更新或新建的自动化处理。
2.操作步骤
(1) 理解两种操作的区别
目标:了解新建表单和更新表单各自的特点和适用场景。
| 对比项 | 新建表单 | 更新表单 |
|---|---|---|
| 原理 | 不管目标总表的数据,直接新建 | 先到目标表总表找记录,找不到再新增 |
| 执行速度 | 直接新建,更快 | 先找到再新建,稍慢一点 |
| 设计 | 必须填写匹配条件 |
(2) 新建业务公式
目标:在入库事件下添加一个新的业务公式,用于更新库存表。
① 打开"采购入库单"模板,进入设计页面,点击"业务公式",选中"入库"状态改变事件,点击"添加公式"。

②目标模板选择"库存表"。

(3) 设置公式-使用更新表单
目标:入库时更新库存表中的商品库存数量,如果该商品还没有库存记录则自动新建一条。
① 将情况1的名称改为"入库-更新库存"。

② 设置数据源:将默认的"本表单"切换为"本表单.明细"。每个商品都需要更新对应的库存记录。

③ 设置执行条件:
本表单.入库 = 常量.是。表示入库时执行该情况。
④执行类型选择"更新表单"。

⑤ 设置匹配条件:
库存表.商品编号 = 本表单.明细.商品编号 并且 库存表.仓库编号 = 本表单.仓库编号。用于找到对应仓库中的对应商品。 
⑥ 勾选"不存在时新增一条记录"。当该商品还没有库存记录时,系统会自动新建一条。

⑦ 建立字段对应关系。
先说明赋值的计算逻辑:入库后,库存数量等于原有的库存数量加上本次入库的数量,库存金额等于原有的库存金额加上本次入库的金额,最后用合计后的库存金额除以合计后的库存数量,计算出移动平均单价。其余字段对应赋值。
具体赋值关系如下:
库存表.数量 = 库存表.数量 + 本表单.明细.数量库存表.金额 = 库存表.金额 + 本表单.明细.金额库存表.单价 = 库存表.金额 / 库存表.数量库存表.仓库编号 = 本表单.仓库编号库存表.仓库名称 = 本表单.仓库库存表.商品编号 = 本表单.明细.商品编号库存表.商品名称 = 本表单.明细.商品名称库存表.库存单位 = 本表单.明细.单位

⑧ 在基础信息的赋值项(仓库编号、仓库名称、商品编号、商品名称、库存单位)上勾选"新增时才赋值"。表示只有新增库存记录时才填入这些基础信息,更新已有记录时不做修改。

(4) 运行业务公式验证效果
使用效果:入库时,系统先查找该商品是否已有库存记录,有则累加数量,无则新建一条库存记录并填入数量。

3.核心要点回顾
(1)新建表单每次触发都创建新记录,适用于日志、单据等新增场景。
(2)更新表单先按匹配条件查找已有记录,找到则更新,适用于修改已有数据的场景。
(3)更新表单勾选"不存在时新增一条记录"后,找不到记录时会自动新建,实现更新或新增的智能切换。
(4)匹配条件是更新表单的核心,决定了系统更新哪条记录,必须正确填写。