1.前言
在前面的章节中,业务公式的数据源都使用默认的"本表单",公式只执行一次。但实际业务中,入库单有多行商品明细,每行都需要生成一条对应的库存日志。如果公式只执行一次,只能生成一条记录。
本教程讲解如何将业务公式的数据源切换为"本表单.明细",使公式按明细行数逐行执行,每行生成一条库存日志。
2.操作步骤
(1) 新建库存日志模板
目标:创建一个用于记录库存变动的新模板。
① 新建一个表单模板,模板名称为"库存日志",直接导入样式文件"库存日志.evs"。

② 定义数据项:商品编号(文本)、商品名称(文本)、数量(整数)、操作类型(文本)、操作日期(日期和时间)、来源单号(文本)等等,如下图所示。

注意:日志编号可以通过设计自动编号数据接口来自动填写,本教程不详细讲解,可以查看:
入门课程:自动编号的设计(2) 理解数据源驱动规则
目标:了解业务公式中数据源的作用,为切换做准备。
① 业务公式的数据源默认为"本表单",公式只执行一次。

② 数据源除了提供数据外,还有一个重要作用——数据源中有多少条记录,公式就执行多少次。

③ 将数据源切换为"本表单.明细"后,明细有多少行,公式就会执行多少次。

(3) 设置入库生成日志
目标:入库时,为每行商品明细生成一条库存日志。
① 将情况1的名称改为"入库-生成日志"。

② 设置执行条件:
本表单.入库 = 常量.是。表示入库时执行该情况。
③ 对库存日志执行"新建表单"操作。

④ 建立字段对应关系,将数据源中"明细"的"商品编号"对应到库存日志的"商品编号","数量"对应到"数量",操作类型赋值为"采购入库",来源单号赋值为本表单的单据编号。

(4) 设置取消入库生成日志
目标:取消入库时,同样按明细行逐行生成库存日志,记录出库信息。
① 点击"添加情况",将情况2的名称改为"取消入库-生成日志"。

② 在情况1上右键复制,在情况2中右键粘贴,将公式复制到情况2。

③ 将执行条件改为:
本表单.入库 = 常量.否。表示取消入库时执行该情况。
④ 将操作类型改为"取消入库",数量赋值为
:
本表单.明细.数量*-1 。
(5) 运行业务公式验证效果
使用效果:确定入库时,明细表有多少行商品,系统就逐行生成多少条"入库"类型的库存日志;取消入库时,同样逐行生成"出库"类型的库存日志。

扩展说明:
- 数据源选择"本表单"时,公式只执行一次。
- 数据源选择"本表单.明细"时,明细有多少行,公式就执行多少次。
- 这是业务公式数据源的核心特性——驱动执行次数。
3.核心要点回顾
(1)数据源默认为"本表单",公式只执行一次。
(2)数据源切换为"本表单.明细"后,公式按明细行数逐行执行。
(3)数据源中的记录数量决定了操作的执行次数,这是数据源的核心作用之一。
(4)通过执行条件和多情况机制,可以区分入库和取消入库两种业务场景。