通过循环容器进行MRP运算
1. 简介
1.1 案例简介
本文将以 MRP(物料需求计划)计算为例,介绍 循环容器 的遍历执行能力:即针对一批查询到的数据,逐条执行相同的一套操作(包括计算、写入等),从而实现物料的自动化拆解。
1.1 MRP介绍
MRP 运算即根据产品的 BOM(物料清单)结构,从顶层逐级向下拆解,从而精准计算各级物料的需求数量。
以生产 10 台电脑为例,拆解过程如下:

运算步骤 | 拆解过程 |
1.确定生产计划 | 10 台电脑 |
2.向下拆解一级物料需求 | 根据电脑的 BOM 找到其下级物料:键盘、主机,并计算数量 |
3.向下拆解二级物料需求 | 根据键盘和主机的 BOM,分别找到其下级物料:主板、显卡、存储单元,并计算数量 |
4.…… | 以此类推,直至最后一层物料被算尽 |
1.3 预期效果
变更生产计划的状态为 “物料分析” 时,便可触发智能助手进行 MRP 运算,将各级结果写入「物料需求清单」。
.gif)
2. 实现思路
此类数据遍历场景均可通过循环容器实现:
注:循环容器的遍历上限为 200 条数据,超出时不建议使用循环容器解决。
2.1 场景分析
在 MRP 运算中,每级物料中的数据处理是完全一致的:
- 查询: 查找当前层级物料的下级物料。
- 计算与写入: 对每条下级物料,计算需求数量并同步至物料清单及辅助表。
- 递归: 对新生成的下级物料再次执行上述逻辑。
其中,对每一级物料中查找出的数据都需执行「计算—新增到物料清单—新增到辅助表」这一套操作,本质上属于遍历场景,可以直接使用循环容器来解决。
2.2 解决方案
借助循环容器,可以将上述的成套操作封装在一个循环体中,只需配置一套操作,系统会对每条数据都执行相同的这套操作,当所有数据执行完毕后,将自动跳出循环,进入后续节点。
相应的循环容器设置如下所示:
- 选择节点:选择查询节点查找出的物料数据作为遍历对象。
- 配置循环体:即需要对数据执行的操作,即「计算—新增到物料清单—新增到辅助表」。

注:为何需要辅助表,以及需将物料新增写入到辅助表的原因可查看本文 3.2 节。
3. 表单搭建
点击安装 示例应用模板,本文将按照模板中的示例数据进行讲解。
3.1 表单搭建
本文案例主要用到如下 7 张表单:
1)BOM维护相关表单
- 产品信息表:存储产品相关的基本信息,如产品名称、型号等,是 BOM 的基础数据来源。
- BOM基础表:用于记录产品与其组成部件之间的关系,以及所需的每个组件的数量。
注:建议参考 多级BOM搭建方案【第 2 节】了解 BOM 相关表的搭建思路,并完成 BOM 数据的录入。
2)MRP运算相关表单
- 生产计划:记录产品的生产计划,包括计划生产的产品和需求数量。
- 物料需求清单:存储 MRP 运算的最终结果,包括所需的各级物料名称和数量,可用于指导采购和生产活动。
- 运算辅助表:用于辅助触发下级物料的计算。
3.2 表单&智能助手设计思路
本节以三级 BOM 为例,介绍所需智能助手和辅助表的数量。
1)智能助手数量 = BOM层级数
由于 1 个循环容器能够遍历计算一级物料需求,且 1 个智能助手仅能添加 1 个循环容器,因此三级 BOM 相应需要 3 个智能助手。
2)辅助表数量 = BOM层级数-1
首先来看,为什么需要辅助表?智能助手的原始设计思路为:
- Pro1 计算一级物料&写入物料清单
- 随后触发 Pro2 计算二级物料&写入物料清单
- 随后触发 Pro3 计算三级物料&写入物料清单
由于智能助手为了防止死循环,存在 循环触发限制,因此 Pro1 写入物料清单时,无法继续触发剩余 Pro,因此需要借助辅助表来触发下一级物料的计算。例如:
- Pro1 计算一级物料&写入物料清单&辅助表
- 触发 Pro2 计算二级物料&写入物料清单&辅助表
- 触发 Pro3 计算三级物料&写入物料清单
因此三级 BOM 的计算需要 2 张辅助表。用户可根据实际物料层级,按需调整智能助手和辅助表数量即可。

4. 计算一级物料
注:智能助手的具体设置可在安装 示例应用模板 后了解。
新建智能助手,在生产计划状态为「物料分析」后触发,首先查找计算一级物料数量,并同步至物料需求清单和辅助表。具体如下:
1)新建智能助手后,选择触发表单为「生产计划」,并对触发节点进行如下设置:
- 添加触发动作:仅在任意指定字段「状态触发器」修改时;
- 添加触发条件:「状态触发器」等于「物料分析」。

2)添加 查询多条数据节点,设置查询条件为选择上级产品「等于」触发数据—BOM,查询出一级物料。

3)添加循环容器,并进行如下设置,计算一级物料数量,并同步至物料需求清单和辅助表。
- 循环方式:指定节点「查询多条数据」,对节点内数据逐条执行循环。
- 循环体配置:使用计算节点计算需求数量,以及新增数据节点将结果写入物料需求清单和辅助表。

4. 计算二级物料
注:智能助手的具体设置可在安装 示例应用模板 后了解。
新建智能助手,在一级物料被写入「一级BOM运算」表后触发,根据一级物料查找计算出二级物料,并同步至物料需求清单和辅助表。具体如下:
1)新建智能助手并设置触发表单为「一级BOM运算」。随后,设置触发动作为「新增数据时」:

2)添加 查询多条数据节点,设置查询条件为选择上级产品「等于」触发数据—BOM,查询出二级物料。

3)添加循环容器,并进行如下设置,计算二级物料数量,并同步至物料需求清单和辅助表。
- 循环方式:指定节点「查询多条数据」,对节点内数据逐条执行循环。
- 循环体配置:使用计算节点计算需求数量,以及新增数据节点将结果写入物料需求清单和辅助表。

4. 计算三级物料
注:智能助手的具体设置可在安装 示例应用模板 后了解。
新建智能助手,在二级物料被写入「二级BOM运算」表后触发,根据二级物料查找计算出三级物料,并同步至物料需求清单。具体如下:
1)新建智能助手并设置触发表单为「二级BOM运算」。随后,设置触发动作为「新增数据时」:

2)添加 查询多条数据节点,设置查询条件为选择上级产品「等于」触发数据—BOM,查询出三级物料。

3)添加循环容器,并进行如下设置,计算三级物料数量,并同步至物料需求清单。
- 循环方式:指定节点「查询多条数据」,对节点内数据逐条执行循环。
- 循环体配置:使用计算节点计算需求数量,以及新增数据节点将结果写入物料需求清单。


400-111-0890
在线咨询