1. 循环基本概念
循环是什么?就是重复做一件事,比如抄写10遍课文。在云表里怎么做到这一点?答案就是:让数据来驱动重复,实现高效的批量处理。
2. 循环的使用
2.1 不使用循环
若不使用循环,要实现单击一次按钮弹出3个对话框,则需要在【测试循环】按钮事件下手动并列放置3个“提示框”操作(通常需复制或多次引用同一公式)。

注意:提示框操作勾选“执行后续操作”选项,确保弹出提示框后能继续执行后续操作。
这种方法设计冗余、效率低下且不易维护,仅作为理解循环优势的对比示例。
2.2 使用循环
在填表公式中,数据源是操作的驱动基础,它被配置在具体操作之上。当数据源包含多条记录(例如下图所示的3条)时,系统便会依次驱动操作重复执行:每一条记录都会触发一次操作,从而实现3次提示框的依次弹出。

那么,如何便捷地生成这样的多条记录呢?让我们以 “序号列表” 这个实用功能为例,来具体探索。
2.2.1 序号列表
通过系统预设的「数据接口-序号列表」功能,可根据设定的起始序号与结束序号自动生成连续数字序列。该功能包含以下两个参数:
- 起始序号:序列的起始数值
- 结束序号:序列的结束数值
例如,当起始序号设为1、结束序号设为3时,系统将生成列表
[1, 2, 3]。
2.2.2 数据源调用序号列表实现循环
1)设置数据源。在提示框操作中,将数据源设置为「模板数据接口-全局.序号列表」,系统将根据数据源记录数自动生成循环操作;
2)配置数据接口参数:为「开始序号」和「结束序号」分别赋值 1 和 3。

注意:去掉“显示对话框”
2.2.3 运行效果
在运行界面单击【测试循环】按钮,系统将弹依次弹出3次提示框。

从这个案例中不难看出,数据源的作用是驱动一个循环过程:它会依次读取每一条记录(如第一条1、第二条2、第三条3……),数据源中有多少条记录,该循环就执行多少次。在读取每条记录的同时,提示框中还可以获取该记录的详细数据。

3. 实践案例-数据源在批量打印中的应用
接下来,我们来看如何利用数据源实现多次打印的实际应用场景。以打印商品标签为例:当您点击【打印】后,系统会根据表单中的“标箱数量”,自动打印对应份数的相同标签。
1)设置打印操作:在【打印】工具栏按钮的单击事件下,找到并修改已有的“打印”操作,将其数据源设置为「数据接口-序号列表」。.
2)配置动态打印份数:为了实现根据标箱数量动态控制打印份数,将数据接口参数中的结束序号设定为 本表单.标箱数量。

当表单中的标箱数量设为2时,系统会生成序号列表 [1, 2],并据此执行2次打印操作;当标签数量为3时,则生成列表 [1, 2, 3],并执行3次打印操作。打印执行次数与生成的序号数量始终保持一致。

4. 数据源循环的拓展与应用思路
4.1 明细
在填表公式中,可将“明细”设为数据源,系统会自动根据该明细的记录条数来驱动循环。即明细中有多少条记录,后续操作便会执行多少次。

实现 销售合计金额计算 时,合计金额等于所有明细金额的总和。具体配置步骤如下:
1)在“明细.金额”的值变化事件下,设置一个为“合计金额”赋值的操作。
2)将数据源设置为 明细,系统将自动遍历明细中的每一条记录。
3)在赋值表达式中,使用 合计金额 + 数据源.金额 的方式累加,从而动态更新合计金额。

为确保计算正确,需先清空合计金额的初始值,再进行累加。操作顺序应为:①清空合计金额 → ②执行累加赋值。

图:清空合计金额
4.2 文本列表
在填表公式中,数据源不仅可设为序号列表,也可设为文本列表。
下面我们将实现以下功能:点击【拆分】按钮时,系统依据标题将“组合字符串”内容拆分并写入对应的数据项中(效果如下图所示)。具体实现方式是借助文本列表作为数据源来驱动循环操作。

在实现上述功能前,我们先来了解文本列表的基本用法。您可以在「数据接口-全局」中找到“文本列表”。它包含以下三个参数:
- 字符串:待拆分的原始文本
- 分割符号:用于划分文本的标识符
- 是否去重:若勾选,则拆分后重复的文本仅保留一项
其作用是将“字符串”按“分隔符号”拆分为多个文本,并以列表形式展示。

注意:分割符号是英文半角符号还是中文全角符号,一定要对应
当字符串中的内容如图所示,系统将根据设定的分隔符将其拆分为一个包含4条记录的文本列表。接着,只需将每条记录中“:”之后的值赋给对应的数据项即可完成操作。

图:文本列表调试使用
步骤一:添加赋值操作。在【拆分】单元格按钮的单击事件下,添加一个赋值操作,并命名为“拆分”。
步骤二:配置文本列表数据源2. 设置该操作的数据源为
全局.文本列表,并完成其字符串、分隔符等参数的赋值。步骤三:为目标数据项设置赋值逻辑3. 在给目标数据项赋值的表达式中,使用
IF 函数和 文本片段 函数来实现动态取值。示例:为“商品编号code”赋值表达式逻辑为:
IF(文本包含“code”, 文本片段(数据源.Value, ":", 2), 数据项.Value)。即:如果数据源文本包含“code”,则截取以“:”分隔后的第二个值(例如“A01”)进行赋值;否则,保持数据项原值不变。
图:拆分的公式
执行过程如下:
- 读取第1条记录 "code:A01" → 匹配到 商品编号 → 赋值 "A01";其他项不变。
- 读取第2条记录 "desc:我的商品" → 匹配到 商品名称 → 赋值 "我的商品";其他项不变。
- 读取第3条记录 "qty:5" → 匹配到 数量 → 赋值 5;其他项不变。
- 读取第4条记录 "lot:09" → 匹配到 批次 → 赋值 "09";其他项不变。
- 循环结束。

图:文本列表循环过程