1.循环的概念及作用

1. 循环基本概念

循环是什么?循环就是重复做一件事,比如抄写10遍课文。
如果想实现单击按钮就弹出提示框。先添加工具栏按钮【测试循环】,然后,在该按钮的单击事件下添加提示框操作(如下图)。
如果想实现单击按钮让提示框弹出3次。在该按钮的单击事件下添加 3 次提示框操作(或者重复引用公式),让操作重复执行3次。
注意:提示框操作必须勾选“执行后续操作”,确保弹出提示框后能继续执行后续操作
如果想实现单击按钮让提示框弹出5次,在该按钮的单击事件下添加5个提示框操作,让操作重复执行5次........但是这种方式使得设计冗余、效率低下还不易维护。那云表是如何让操作循环执行的呢?通过数据源。

2. 循环的使用

在填表公式中,数据源在具体的操作(比如提示框)之上。
当数据源包含多条记录(例如下图所示的3条)时,系统会自动执行一个循环,它会按顺序读取数据源的第1条记录并执行操作,接着是第2条、第3条……直到所有记录处理完毕。简而言之,数据源有多少条记录,操作就会重复执行多少次
那么,如何生成这样的多条记录呢?以 “序号列表” 这个实用功能为例来具体探索。

2.1 序号列表

通过系统预设的「全局数据接口-序号列表」功能,可根据设定的起始序号与结束序号自动生成连续数字序列。该功能包含以下两个参数:
  • 起始序号:数字从多少开始
  • 结束序号:数字到多少结束
例如,当起始序号设为1、结束序号设为3时,系统将生成列表 [1, 2, 3]
接下来要实现的是:单击按钮,让系统根据数据源自动循环弹出提示框。

2.2 数据源调用序号列表实现循环

1)设置数据源。在提示框操作中,将数据源设置为「模板数据接口-全局.序号列表」,系统将根据数据源记录数自动生成循环操作;
2)配置数据接口参数:为「开始序号」和「结束序号」分别赋值 1 和 3。
注意:去掉“显示对话框”

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