6.综合应用案例

在实际应用中,一个完整业务场景的实现,常需结合二者之力:前端的填表公式处理即时交互,后端的业务公式确保核心逻辑,形成完整的“组合拳”。接下来,让我们一起走进工厂的打包装箱业务,通过这个具体场景展开学习。

1.需求

如下图所示,在工厂打包装箱时,装箱员取空箱打包时
1)选择带出库的出库单,系统自动带出待出库产品明细
2)装箱员扫描产品(用Ctrl+C复制,Ctrl+V粘贴模拟扫描),将产品添加到已扫描明细。装箱过程中,系统会实时校验装箱数量,确保不超过对应出库数量。
3)装箱完毕后,装箱员单击【打印装箱单】,系统将按既定箱码规则生成箱码(支持箱码与装箱清单打印),并自动刷新待出库明细,同时清空已扫描明细。
图1:使用效果

2.需求分析

整个界面设计简洁直观,装箱员只需点击两次即可完成操作,无需页面跳转,极大提升了操作效率。同时,系统会实时将数据自动保存至服务器,兼顾便捷性与数据安全。
为实现功能,系统需有以下四个模板协同工作:
  • 商品信息:记录产品的基本信息,包含条码信息
  • 出库单:提供待出库产品的信息,是装箱操作的依据。
  • 出库装箱(操作界面):装箱员在界面进行扫描操作,界面本身不保存数据,仅作为实时操作入口。模板的基本属性设置“不保存表单到数据库”。
  • 装箱清单(装箱结果):记录每个箱子所装产品的完整明细,是最终需要生成并保存的业务单据。
问题1:如何把操作界面上的扫描记录同步到装箱清单呢?
当前界面的扫描数据并未直接保存,导致无法触发业务公式。因此还需要一个辅助模板:
  • 装箱记录(关键桥梁),它用于提交每一次的扫描动作,当记录保存时,触发保存保存表单后事件,从而触发后续的业务操作。
问题2:如何提交装箱记录呢?
通过填表公式的“新建并提交表单”操作,它不仅会根据初始值创建表单完成提交,从而触发表单的 “保存表单后” 业务公式,执行业务。从而执行内部逻辑,把已装箱记录写入到“装箱清单”,同时回写到出库单。
问题3:当箱码没有生成时,在数据的流转过程中如何保证箱子唯一?
在出库装箱单中,定义辅助数据项“临时箱码”,通过系统变量.UUID 给它赋值,临时箱码与箱码一 一对应,单击【打印装箱单】后,会针对下一个箱子操作,重新赋值“临时箱码”。
我们把红线以上的操作称为可视化操作,红线以下的称为内部逻辑。可视化的操作用填表公式实现,内部逻辑用业务公式实现。

3.实现步骤

3.1设计模板

图3:出库单模板设计
图4:出库装箱模板设计
图5:扫描记录模板设计
装箱清单的箱码是唯一标识,利用自动编号给它赋值,根据设置的规则自动生成。
图6:装箱清单模板设计

3.1选择出库单

单击【出库单单号】组合按钮,弹出“待出库出库单列表”,选择“出库单”填写“待出库明细”,清空“已扫描明细”。
1)设计数据接口,待出库出库单列表。
数据源:出库单.明细 ;
数据列:出库单号,客户名称;
过滤条件:仅筛选出仍需出库的明细记录。判断逻辑为 明细.数量(出库单要出库数量) > 出库数量(已出库数量)时,说明还需要出库。出库数量可能是空值,调用空值替换函数,当出库数量是空值时转化为0再比较。
由于数据源为明细,数据列是基本信息,每条明细都会将基本信息带出显示一次,数据列将会出现重复数据,勾选“重复数据只显示一次”,以确保列表清晰,相同出库单号的基础信息仅展示一条。
2)在“出库单号”的填写规范上调用上面的数据接口,选择“出库单”后,将出库单单号和客户名称填写到“出库装箱”界面。
3)选择出库单后,填写待出库单明细,清空已扫描明细
选择出库单后,触发“出库单号”的值变化事件,在该事件下,添加“更新待出库明细”赋值操作,调用数据接口 出库明细(该数据接口的设计与待出库出库列表 数据数据接口非常类似,不同的是带有参数出库单号,数据列需添加产品信息),更换出库单时,先删除已有的待出库记录再插入新的记录,勾选“插入前删除所有的行(列)”;
清空已扫描明细,将已扫描明细所有的记录更新为空。
4)准备装箱,唯一标识空箱,先赋值临时箱码。

3.2扫描条码填写商品

扫描条码时,触发“扫描条码”的值变化,通过“条形码”找到商品(初级中有详细讲解,不再赘述),并把商品的信息”填写到“出库装箱”界面的右侧,以便装箱员核对产品。

3.3扫描更新明细并做校验

先更新“待出库明细”的“装箱数量”,每扫描一次,在明细中找到记录,并把数量+1;
再更新“已扫描明细”,当商品不在已扫描明细中时,需要新增一条新的记录。
校验装箱数量时,需在“待出库明细”中先定位当前操作的记录(通过过滤条件定位)。如果该记录的“出库数量”与“已装箱数量”相等,就报错并终止后续操作;否则,继续累加本次的装箱数量。因此先执行校验,再执行更新,将该公式上移(如下图)

3.4扫描提交数据

通过 “新建并提交表单” 操作,将扫描数据同步提交到服务器。该操作会根据初始值创建表单完成提交,为了方便将商品的名称、规格型号、计量单位先合并成一条“提交文本”再提交。
每个扫描一个产品系统自动提交一条记录到服务器,数量默认为1。

3.5保存扫描记录更新装箱清单

新建并提交“扫描记录”时,触发该模板的新建保存时业务公式,利用该事件将数据更新到“装箱清单”。箱子的箱码与临时箱码一 一对应,先通过“临时箱码”找箱子,如果找不就新建装箱清单,如果能找到
就把产品更新到装箱清单.明细,把相同的产品合并,累加数量(通过“文本片段”函数把文本拆分成不同的片段,赋值给对应的数据项)。

3.6保存扫描记录更新出库单

保存扫描记录时,同时利用业务公式,找到正在操作的出库单
增加商品的已出库数量。

3.7单击打印装箱单返回箱码

1)获取箱码。在“出库装箱”界面,单击【打印装箱单】按钮,通过临时箱码到“装箱清单”获取真正的“箱码”并赋值到当前界面。
2)为下一个箱子做准备,重新生成临时箱码。
3)重新加载“待出库明细”,重新调用“出库明细”数据接口,获取最新的待出库明细记录。
4)清空已扫描明细,引用已设置过的公式。

4.结论

在实现上述实际业务场景时,我们结合了填表公式与业务公式的协同使用:
1)通过填表公式将表单提交至服务器,触发业务公式执行,以此完成复杂的业务操作。该方式不仅降低了界面操作负担——用户无需等待界面加载即可执行后续步骤,也更好地满足了复杂场景的需求。
2)数据能够实时提交至服务器,即使在网络中断的情况下,操作仍可持续进行。

5.优化校验

为确保业务逻辑的准确与严谨,我们可在界面端和服务器端分别增加校验机制。
1) 在扫描出库时,系统会实时校验该产品是否仍需出库,以避免多人同时操作同一出库单导致的数据冲突。
设计数据接口,用于统计指定出库单号及商品编号下尚未出库的产品数量(用计数函数,避免填表公式判断空值),具体过滤条件如下:
本模板.出库单号 = 自定义参数.出库单号 并且 本模板.明细.商品编号 = 自定义参数.商品编号 并且 本模板.明细.数量 > 空值替换(本模板.明细.出库数量 ,0)
2)提交扫描记录时,业务公式会先校验商品是否仍需出库。具体流程如下:调用子数据源“查询数量”,从“出库单”中获取应出数量与已出数量进行比对。若查询结果为空,或 应出数量   < 当前已出数量+1,则判定无需继续出库。
2025-12-23
0 0