✨ 系列第47篇|从零开始搭建标准ERP架构
👣 接续第46天“计划变更存档与滚动分析”,今天我们进入生产执行的核心环节——物料齐套性分析
🔧 目标:实现“一键生成欠料数据”
🎯 关键点:跨表联动 + 自动化流程 + 版本绑定
💡 核心价值:让每一次排程发布都自动驱动物料需求计算
📂 回顾:我们已经做了什么?
在前两篇中,我们完成了:
建立了 MPS计划发布存档 机制
实现了 计划版本号管理
构建了 计划变更分析存档系统
支持了 多版本对比与趋势追踪
现在,我们拥有了:
✅ 每次排程都有“正式版本”
✅ 变更历史可追溯
✅ 版本之间可对比
但还缺最后一步:
如何基于每个版本的排程,自动计算出所需的物料?
如何识别哪些物料“缺货”?
这就是本篇要解决的问题:建立“欠料分析自动化触发”机制,实现“计划→用料→欠料”的闭环。
✅ 步骤一:重构模块结构 —— 让数据更清晰
✅ 创建子文件夹:

✅ 新建两个数据表:
| 表名 | 作用 |
| 欠料控制 | 控制按钮触发,绑定计划版本号 |
| 欠料分析 | 存储每条生产任务对应的用料明细及欠料状态 |
✅ 设计目的:
分离“控制”与“结果”
便于后期扩展预警、通知等功能
✅ 步骤二:配置“欠料控制”表 —— 手动触发的“版本开关”

✅ 字段配置:
| 字段名 | 类型 | 配置说明 |
| 编号 | 编号 | 自增数字,格式 000001 |
| 计划版本号 | 公式 | 动态获取当前可用的计划版本号 |
| 生成欠料 | 按钮 | 触发自动化流程 |
✅ 公式详解:计划版本号

✅ 解读:
UNIQUE(...):对“MPS 计划-发布存档”中的【计划版本号】去重
INDEX(..., [@编号]):根据当前记录的编号,取对应版本号
IFERROR(...,""):防止越界报错
✅ 优点:
自动同步所有已发布的计划版本
不需要手动维护
支持未来无限扩展
✅ 步骤三:配置“欠料分析”表 —— 存储最终结果

✅ 字段配置(均为非公式字段):
| 字段名 | 类型 | 说明 |
| 生产任务号 | 单选 | 来自 MPS 计划 |
| 物料编码 | 单选 | 来自 BOM 或用料明细 |
| 名称 | 文本 | 物料名称 |
| 订单数量 | 数字 | 当前订单数量 |
| 销售订单-项次 | 文本 | 关联销售订单 |
| 子件编码 | 文本 | 子件编码 |
| 子件需求 | 数字 | BOM 中该子件的需求量 |
| 实发数量 | 数字 | 已发货数量(后续扩展) |
| 未发数量 | 数字 | = 子件需求 – 实发数量 |
| 排程日期 | 日期 | 开工/完工时间 |
⚠️ 注意:
不能使用公式字段,因为会被自动化流程覆盖
所有字段必须是“可写入”类型(如文本、数字、单选等)
✅ 步骤四:配置自动化流程 —— 实现“一键生成欠料”
✅ 流程步骤详解:
🔹 第1步:触发条件

事件:点击按钮时
字段:生成欠料(按钮)
所在表:欠料控制
✅ 当用户点击“点击按钮”时,流程启动。
🔹 第2步:查找当前记录

目标表:欠料控制
查找范围:第1步触发的记录
查找内容:计划版本号
✅ 获取当前要处理的计划版本号(如 3-5)
🔹 第3步:查找 MPS 计划中的任务

目标表:MPS 计划-发布存档
查找范围:满足条件的记录
筛选条件:计划版本号 = 第2步获取的版本号
选择内容:所有字段(生产任务号、线体、开工时间、完工时间等)
✅ 获取该版本下所有的生产任务信息
🔹 第4步:查找用料明细

目标表:生产用料明细表
查找范围:满足条件的记录
筛选条件:生产任务号 = 第3步中的生产任务号
选择内容:所有字段(子件编码、子件名称、子件用量、数量等)
✅ 获取每个任务对应的BOM用料清单
🔹 第5步:新增记录到“欠料分析”

目标表:欠料分析
字段映射:
- 生产任务号 → 来自第4步
- 物料编码 → 来自第4步
- 名称 → 来自第4步
- 订单数量 → 来自第4步
- 销售订单-项次 → 来自第4步
- 子件编码 → 来自第4步
- 子件需求 → 来自第4步
✅ 把所有用料数据一次性写入“欠料分析”表
🔹 第6步:查找欠料分析

🔹 第7步:修改记录(补版本号)

📊 实际效果演示(以图为例)

✅ 解读:
每个任务都有其对应的物料需求
初始阶段只显示“理论需求”
后续可通过库存数据判断是否“缺料”
