Isi Kandungan

主数据与口径

本文档说明制造系统中主数据靠三种记法并存,仅靠名称识别物料会导致改名断链与重名误配,并给出名称不改、产品单一入口、空壳行定期清理三条规则。

  • 同一物料存在内部关联号、名称文本、编码文本三种记法
  • 只靠名称识别物料:改名即断链,重名即认错
  • 报价审批自动新建物料档案,产生只有名称规格单位的空壳行
  • 物料软删除实际不拒绝,库存与采购明细不在校验范围
  • 手机端仍读写废弃产品表,与管理端资料库形成两份清单

14.1 那句话的下一层

第三章留了一句:录单的人才是唯一能写下依据的人。这一章往下追问一句——他写下来的那个东西,系统认得吗。

老陈厂里有个件,叫"连接支架"。工艺员的清单上写连接支架,车间派工单上写连接支架,仓库领料单上还写连接支架。三张单说的是同一个东西,但系统不知道,是人在替它们对上。

这就是"主数据"这两个字的真面目:不是一个菜单、一张表,而是全厂几十张单据共用的那一个"这是什么"。它要是各说各话,后面所有的统计、库存、追溯都在拼运气。

14.2 一个东西,三种记法

指向同一个物料或产品,这套系统里同时存在三种写法。

记法认靠什么谁在用
内部关联号一个系统内部序号采购明细、供应商×物料、清单与明细行
名称文本一串字正好相等工单、报价明细、检验单、发货明细
编码文本一串字正好相等入库、盘点、领料三张明细

仓储那三张明细行上没有内部关联号那一栏,只有"物料编码""物料名称"两格文字。第 11 章说手机端不填采购单号也能入库,根子就在这里:它连"这是档案里哪一行"都不问。

工单明细上那个物料关联号,注释里自己写着"已废弃,保留兼容历史数据"。也就是说这条路以前是靠关联号的,现在改成靠名字了。

于是有这一章第一句判断:凡是只靠名字认的地方,改名就等于断链,重名就等于认错。 物料档案上编码是唯一格,名称不是。名字撞了两个,后端按名字去找物料的那十几处,每次都取排在最前的那一行。取到哪一行没人知道,也没人会报。口径是"用名称等值查物料"这一条搜出来的,不是估的。

14.3 主数据是谁写进去的

第三章那句话在这章有个具体落点。

报价单被批下来、进首件订单库那一刻,系统会逐行看明细:档案里有同名物料的,把这行挂上去;没有的,当场新建一条物料档案。编码优先用零件编号,没有就自动生成一个当日流水码,分类找不到就顺手建一个分类。单位那格直接抄明细上填的,没填就落"件"。

好处很实在:业务员不会被"档案里还没建所以下不了单"卡住。 中小厂最常见的死结就是这个,这一条把它绕开了。

代价也要写清:档案里会长出一批只有名字、规格、单位三格有内容的空壳行。 不是谁偷懒,是流程顺手造的。这些行将来顶不顶用,取决于有没有人回去补图纸、安全库存、默认仓库。

一句判断:这套系统的主数据不是资料员建的,是单据带着建的。 所以它干不干净,等于录单纪律干不干净。

14.4 删一条物料,系统查什么

物料删除是软删除:列表里不再出现,历史还能翻。删之前会查三类引用——清单、工艺路线、质检单,查到几处就在返回里带上几处。

两件得老实说:

  • 那个方法的说明文字写着"有引用则拒绝删除",代码实际不拒绝。它只把引用清单带回给前端做提示,照样删。
  • 查的只有那三类。库存行、采购明细、订单明细都不在范围内;仓储那三张明细本来就没有关联号,想查也查不到。

结果是一个很具体的坑:物料可以被删掉,单据上那行字还在。 三个月后翻一张入库单,物料名字在,规格、单位、图纸、安全库存全没了——档案那一行已经不在列表里。

编码这一格倒是有个想得周全的地方,值得单独提:如果同码的物料处于软删状态,新建不会撞码报错,而是把那一行复活并用新数据覆盖。 这挡住了"删了就永久占号"这类麻烦。

14.5 "产品"有两套定义,两套都还在被写

产品资料库的说明写得很硬:全站唯一产品数据源,由原来三张表合并而来,产品信息以它为准,新代码禁止直接引用旧的那张产品表。旧表的定义上也打上了废弃标记。

管理端确实按这个走了:产品那一块全部指向资料库,页面路由上还有三处旧地址直接跳转到它。资料库是全局共享的,客户专属信息放在映射表里,图纸单独管,单据上再留一份快照,保证历史不被后来的改动冲掉。

但手机端不是。手机端有三个页面还在读写那张废弃的旧产品表,其中包括新建和修改。 旧表认为产品属于某个客户,资料库认为产品全局共享、客户归属另记一张映射表——这两套对"产品是什么"的定义不一样。

所以真实情况是:同一个厂里存在两份产品清单,手机上建的那一条,管理端在产品资料库里看不见。 这条已经登记在册,还没动手。它不需要大改,需要的是先定一句:产品到底只在哪里建。

14.6 编号这件事,没有"只有一个出口"

第 5 章说过编号规则是配置驱动的,各模块共用一套生成函数。这条是真的:工单号、请购单号、入库单号、检验单号、物料编码都从它出。

但现状有三个出口并存,这一条我们不装:

  • 配置驱动那一条,按后台规则出号;
  • 客户项目式那一条,把客户名转成拼音首字母拼进单号,前缀写在代码里(工单、报价、订单、批次产品四处各写一次);
  • 还有一条例子不经过任何规则,直接在报价回填里当场拼出一个当日流水码。

结果是同一个字段能出现两种格式的单号:工单号走转生产那条路是客户项目式,走直接建单那条路是规则式。不影响用,影响的是"看单号就能认出这是什么单"这种直觉,以及按号检索时的手感。

14.7 单位是一格自由文本

八张表上都有"单位"这一格,全是文本框,默认值写着"件"。手机端的单位是个手填输入框。物料档案那一格允许五十个字符,别处那几格只允许二十个——同一个物料,两处能写下不一样的单位。

系统里没有单位字典,没有单位换算,也没有任何一处校验说"这张单的单位必须跟档案一致"。报表里那些数量是直接相加的。

一句判断:在系统眼里,单位是写在纸上的一个词,不是一个受控的值。 这跟编码、名称那两格完全不是一个待遇。

多数厂里这不是事——全厂都论"件"。但一旦有一堆料按千克进、按件用,账上的数量就会开始骗人,而且骗得很安静:没有任何一处会报警。

14.8 已经收口的部分

裂缝说完,把已经合上的那几处也说清,免得读成一片黑。

  • 金额与数量的精度是统一的:算钱的地方一律留两位,报表里的比率留一位,数量按四位小数存。
  • 进度只有一个算法:有效完成数等于过程检验合格数减最终检验不合格数,全厂一处口径,原来那两份重复实现已经合掉(第十章)。
  • 异常的类型与状态已经收到一处真源:值全部存后端枚举码,显示名由状态字典单点给出,管理端运行时拉取。这是本轮改掉的,第七章、第十章按新口径写的。
  • 可扩展字段只在四个档案对象上:客户、物料、产品、产品资料能加自定义格,单据不能加格。第 6 章那个二分在这儿是硬事实。
  • 数据范围在查数据那一步生效,不是在前端藏起来。谁负责的客户,就只有他能看见、能操作。第 17 章展开。

一份数据能长期用,靠的不是第一天建得齐,是这些口径有人收过。

14.9 这一章不做的事

  • 不做主数据治理工作台。 重复项合并、批量改名、字段级变更审批,这些都没有。脏了只能人工改或单独跑一次处理。
  • 不做单位换算。 千克和件之间系统不会替你折,也不拦着混用。
  • 不做多厂区主数据分域。 一套档案全厂共用,不按厂区各建一份。
  • 不做自动清洗。 空壳行、同名行、孤儿行,系统只负责存着,不会自己判哪个该并、哪个该停。

14.10 今晚能定的三条

  1. 名称一旦被单据用过就不许改。 要改规格改规格,确实要更名就走一个新编码,旧行停用。这一条不花钱,直接保住 14.2 那条链不断。
  2. 产品只在一处建。 会上先定死入口(建议就定产品资料库),手机端那三个产品页改成只查不改。第 14.5 那个坑在修之前,靠这一条堵住。
  3. 空壳行过一个季度清一遍。 报价自动长出来的那些物料行,由资料员过一遍:补图纸和安全库存,或者停用。清单谁出、多久出、出完记在哪儿,定个日子就行。

这一章能定的事就一句:主数据不是建好放在那儿的,是每天被单据写坏的。 所以保住它的办法不是加一个漂亮界面,是给三件小事定死规矩——名字不改、产品一处建、空行定期清。