配方数据结构化:BOM结构、物料属性与版本控制
配方管理,说白了就是管好“用什么、用多少、怎么用”。
很多工厂的配方还躺在Excel里,或者ERP系统里当普通物料管。结果呢?换个小料号,整个BOM要重做;改个浓度,版本就乱套了。
我早期在一家涂料厂就吃过这个亏。一个配方的助剂换了供应商,结果生产那边用了旧料,整批报废。从那以后,我下定决心要把配方数据结构化。
配方BOM的层次结构
化工配方BOM和机械BOM不一样。机械BOM是装配关系,螺丝拧在板上。化工BOM是反应关系,A加B生成C。
我个人习惯把配方BOM分成三层:
| 层级 | 名称 | 说明 | 示例 |
|---|---|---|---|
| L0 | 成品配方 | 最终产品,可销售、可发货 | 白色外墙乳胶漆 |
| L1 | 半成品/基料 | 需要预混或预反应的中间体 | 丙烯酸乳液基料 |
| L2 | 原材料 | 采购入库的物料,不可再拆 | 钛白粉、分散剂、水 |
关键原则:每一层只展开一层子项。不要把所有物料平铺在成品下面。否则换一个基料,你要改几十行。
举个例子。一个乳胶漆配方,如果直接挂100个原料,哪天你想换乳液供应商,得一个个改。但如果你把“丙烯酸乳液基料”做成半成品BOM,成品配方里只引用这一个半成品。换供应商时,只改半成品BOM就行。上层不动。
物料属性定义:别让工程师猜
物料属性是配方BOM的“元数据”。定义不清楚,后面所有计算都会错。
我记得有一次,一个工程师把“固含量”填成了“活性物含量”,结果配方成本算出来差了30%。
我建议至少定义以下核心属性:
- 物料编码:唯一,建议用有含义的编码规则(如类型+流水号)
- 物料名称:中文全称,避免缩写歧义
- 计量单位:kg、L、g、m³,必须统一。我见过用“桶”做单位的,一桶到底多少升?没人说得清。
- 密度:用于体积与重量换算,液体物料必填
- 固含量/纯度:影响配方有效成分计算
- 危险品标志:易燃、腐蚀、有毒,影响仓储和EHS
- 供应商信息:首选、备选,以及对应的物料编码映射
小技巧:把“物料类型”做成下拉选择:原料、半成品、成品、包材、辅料。这样在BOM展开时,系统可以自动判断是否要继续往下拆。
版本控制:配方的“后悔药”
配方不是一成不变的。客户要求改粘度、原料停产、成本优化……每一次变更,都要留下痕迹。
我曾经在一个项目里,因为没有版本控制,生产用了旧版配方,做出来的产品全部退货。老板问我:“能不能查出来是谁改的?”我说:“查不了,因为根本没记录。”
版本控制的核心要素:
| 要素 | 说明 | 我的建议 |
|---|---|---|
| 版本号 | V1.0、V1.1、V2.0 | 主版本号:重大工艺变更;次版本号:微调或替换原料 |
| 生效日期 | 该版本从哪天开始用 | 必须精确到日,避免新旧混用 |
| 变更原因 | 为什么改? | 写清楚:成本优化、原料替换、客户投诉、工艺改进 |
| 变更人 | 谁改的? | 系统自动记录,不可篡改 |
| 审批状态 | 草稿、待审、已批准、已废止 | 只有“已批准”的版本才能用于生产 |
避坑指南:不要用“最终版”、“最终版2”、“打死也不改版”这种文件名。版本号必须用数字递增,配合日期。我曾经见过一个配方有7个“最终版”,没人知道哪个是真的。
配方数据结构化核心逻辑
下面这张图,是我自己总结的配方数据结构化框架。你看一眼就能明白:
实战中的几个坑
- 物料编码重复:同一个原料,不同供应商给了不同编码。结果库存里同一个东西有两个编码,成本核算全乱。解决方案:建立“物料主数据”中心,统一编码规则。
- BOM层级过深:有人把配方拆了5层,结果生产看不懂,系统跑不动。我建议最多3层,超过3层就要考虑是不是拆得太细了。
- 版本号不连续:V1.0直接跳到V3.0,中间V2.0去哪了?要么是忘了归档,要么是有人偷偷改了没记录。版本号必须连续,跳号要说明原因。
- 生效日期不填:系统里一堆“待生效”的配方,没人知道什么时候生效。结果生产随便选一个,就出事了。我要求所有配方必须填生效日期,过期自动锁定。
总结一句话:配方数据结构化,不是为了好看,是为了让系统替你管住那些“人容易忘”的事。BOM结构清晰,属性完整,版本可控,后面所有环节——采购、生产、成本、质量——才能跑得顺。