☰
易飞ERP品号单位切换工具包:SQL脚本与数据表说明
2026/9/26 7:44:50 网站建设 项目流程

简介:这份资源面向易飞ERP系统的实施顾问、运维人员及二次开发人员,聚焦品号单位切换这一常见但易出错的业务场景,提供可直接参考的修正工具与数据说明。压缩包共2个文件,包含1个SQL脚本和1个xlsx表格,整体约9KB,体积轻巧便于随取随用;其中SQL脚本用于处理单位切换涉及的数据修正逻辑,xlsx则梳理了相关单据与数据表的对应关系,帮助使用者快速定位受影响的数据范围。目前已有469人学习下载,说明该场景在实际项目中具有较高的关注度。通过这份资料,读者可以了解品号单位切换时涉及的单据类型与底层数据表结构,掌握单位修正的SQL处理思路,减少因单位不一致导致的库存、成本或单据异常,适合在实施与运维过程中作为排错与数据核对的参考依据。

1. 品号单位切换这件事,为什么值得单独做个工具包

品号单位切换在易飞 ERP 里属于那种「平时用不上、一旦用上就要命」的操作。品号建错计量单位、采购计价单位和库存单位对不上、BOM 用量单位跟领料单位不一致,这些情况在系统上线初期或者产品规格调整时经常出现。手工去改,一张单据一张单据地调,改完库存对不上、历史单据单位混乱,最后连成本核算都跟着出问题。这个工具包解决的就是这个场景:用一份 SQL 脚本加一份数据表说明,把品号单位切换涉及的单据和数据表一次性理清楚,让修正动作有据可依。适合正在做易飞 ERP 数据维护的运维、实施顾问,以及需要远程审核单据单位一致性的管理人员。包里三个文件各司其职,下面拆开讲。

2. 单位切换涉及哪些表:先把数据地图画出来

2.1 品号主档的单位字段分布

易飞 ERP 里品号单位不是存在一个字段里就完事。品号主档(常见表名INVMB或ITEM,不同版本命名有差异)至少涉及三个单位概念:库存单位、采购单位、计价单位。这三个字段在品号建立时就要定义清楚,后续所有单据都从这里取值。库存单位决定库存数量和库存异动的计量方式,采购单位影响采购单和进货单的数量表达,计价单位则直接关联成本计算和应付账款。

很多实施顾问在培训时会强调「单位一旦有交易就不要改」,原因就在这里。品号主档的单位字段被下游单据引用后,改主档不会自动同步历史单据,反而会造成新旧数据单位不一致。工具包里的涉及单据及数据表说明.xlsx就是干这个的——把哪些单据引用了品号单位、引用的是哪个字段、影响范围有多大,列成一张对照表。拿到这份表,你就能判断一次单位切换会波及多少张单据、多少条历史记录。

常见做法是先用说明表定位影响面,再决定是改主档还是走单位转换。如果影响面只在几张未结案单据,直接修正单据单位字段即可;如果已经产生库存异动和成本凭证,就要考虑用转换关系来处理,而不是硬改字段。

2.2 单据层的单位引用关系

单据层比主档复杂。采购单、进货单、领料单、入库单、出库单、调拨单,每张单据都有自己的单位字段,而且这些字段的取值逻辑不一样。有的单据直接取品号主档的库存单位,有的允许手工指定单位并带换算关系,有的在过账时会回写库存单位的数量。

以采购单为例,采购数量通常按采购单位录入,但过账到库存时系统会按换算关系转成库存单位。如果采购单位和库存单位之间的换算关系没维护好,过账后的库存数量就会出错。工具包里的 SQL 脚本会把这些单据表列出来,并给出检查单位一致性的查询语句。你拿到脚本后,先跑检查语句,看看哪些单据的单位字段和主档不一致,再决定修正范围。

提示:不同易飞版本的字段命名和表结构有差异,脚本里的表名和字段名需要根据实际版本调整。建议先在测试库跑一遍,确认查询结果符合预期再上生产库。

2.3 单位换算关系的维护位置

单位换算关系在易飞 ERP 里通常维护在品号主档的换算率字段或者独立的单位换算表中。常见做法是在品号主档里维护「库存单位 ↔ 采购单位」「库存单位 ↔ 计价单位」的换算率。如果换算率是固定值,直接改主档字段;如果换算率随批次或供应商变化,就要走单位换算表。

工具包的 SQL 脚本里会包含换算关系的检查逻辑:查品号主档的换算率字段是否为空、查单据上的单位与主档单位是否匹配、查换算后的数量是否与库存数量一致。这三步检查做完,基本能定位到单位切换的问题点在哪里。

3. 单位修正 SQL 怎么跑:从检查到修正的完整流程

3.1 修正前的数据备份与影响评估

跑任何修正 SQL 之前,备份是底线。易飞 ERP 的数据库通常是 SQL Server,备份方式可以用数据库完整备份,也可以只备份涉及的表。我一般会先把涉及的表导出一份到临时库,确认修正逻辑没问题再动原表。

影响评估用工具包里的说明表来做。打开涉及单据及数据表说明.xlsx,按「影响级别」列排序,先处理高影响的表。高影响通常指有库存异动或成本凭证关联的表,比如库存异动明细表、成本计算表。低影响指未过账单据或草稿单据,这些可以直接改。

-- 备份涉及品号单位的关键表(以 SQL Server 为例) SELECT * INTO INVMB_BAK_20250101 FROM INVMB; SELECT * INTO PURTC_BAK_20250101 FROM PURTC; SELECT * INTO INVTC_BAK_20250101 FROM INVTC;

这段代码把品号主档、采购单头、库存异动单头备份到带日期的临时表。参数说明:INVMB是品号主档表,PURTC是采购单头表,INVTC是库存异动单头表,实际表名以你的版本为准。备份表命名带上日期,方便回滚时定位。跑完备份后,用SELECT COUNT(*)对比原表和备份表的记录数,确认备份完整。

3.2 检查单位不一致的查询语句

检查分三层:主档内部一致性、主档与单据一致性、单据与库存一致性。工具包的 SQL 脚本里应该包含这些查询,如果没有,可以按下面的逻辑补。

-- 检查品号主档单位字段是否为空 SELECT ITEM_NO, ITEM_NAME, STOCK_UNIT, PUR_UNIT, COST_UNIT FROM INVMB WHERE STOCK_UNIT IS NULL OR PUR_UNIT IS NULL OR COST_UNIT IS NULL; -- 检查采购单单位与品号主档采购单位是否一致 SELECT P.PUR_NO, P.ITEM_NO, P.PUR_UNIT, M.PUR_UNIT AS MASTER_PUR_UNIT FROM PURTC P LEFT JOIN INVMB M ON P.ITEM_NO = M.ITEM_NO WHERE P.PUR_UNIT <> M.PUR_UNIT; -- 检查库存异动数量与单位换算后数量是否匹配 SELECT T.ITEM_NO, T.TRAN_QTY, T.TRAN_UNIT, M.STOCK_UNIT, M.CONV_RATE FROM INVTC T LEFT JOIN INVMB M ON T.ITEM_NO = M.ITEM_NO WHERE T.TRAN_QTY * M.CONV_RATE <> T.STOCK_QTY;

第一段查主档单位字段缺失,这是最常见的单位问题源头。第二段查采购单单位与主档不一致,LEFT JOIN保证主档缺失时也能查出来。第三段查库存异动数量换算后是否等于库存数量,CONV_RATE是换算率字段,实际字段名可能是CONV_RATE或EXCH_RATE。跑完这三段,把结果导出到 Excel,逐条确认是数据问题还是业务正常差异。

3.3 修正语句的写法与事务控制

修正语句要包在事务里,确认影响行数符合预期再提交。下面是一个修正采购单单位的示例。

BEGIN TRANSACTION; -- 修正采购单单位,使其与品号主档采购单位一致 UPDATE P SET P.PUR_UNIT = M.PUR_UNIT FROM PURTC P INNER JOIN INVMB M ON P.ITEM_NO = M.ITEM_NO WHERE P.PUR_UNIT <> M.PUR_UNIT; -- 查看影响行数 SELECT @@ROWCOUNT AS AFFECTED_ROWS; -- 确认无误后提交,有问题则 ROLLBACK -- COMMIT TRANSACTION; -- ROLLBACK TRANSACTION;

这段代码用INNER JOIN只更新主档存在的品号,避免更新到孤立记录。@@ROWCOUNT返回影响行数,跟检查语句查出的不一致记录数对比,一致才提交。事务控制是关键:先跑BEGIN TRANSACTION,执行更新,看影响行数,确认无误再COMMIT,有问题直接ROLLBACK。我见过太多人直接跑UPDATE不包事务,改错了只能从备份恢复,费时费力。

注意:修正语句执行前,确认没有其他用户正在操作相关单据。易飞 ERP 是多人并发系统,修正过程中如果有新单据录入,可能导致修正结果不完整。建议在业务低峰期执行,或者先锁定相关表。

4. 避坑与排查:单位切换翻车现场记录

4.1 改完主档单位,历史单据数量对不上

现象:品号主档的库存单位从「个」改成「箱」后,历史入库单的数量还是按「个」记录的,库存汇总时数量翻了几十倍。

原因:主档单位修改不会同步历史单据的单位字段,历史单据仍然按旧单位存储数量。库存汇总时按新单位解读旧数量,导致数量级错误。

解决:单位切换不能只改主档。要么用换算关系处理历史数据,把旧单位的数量按换算率转成新单位;要么保留旧单位,新建品号用新单位。工具包的说明表里会标注哪些单据需要同步修正,按表操作。

4.2 换算率填错,成本计算差一个数量级

现象:采购单位是「箱」,库存单位是「个」,换算率填了 1 而不是 12,导致采购过账后库存数量少了一个数量级,成本计算跟着出错。

原因:换算率字段的含义是「1 个采购单位 = N 个库存单位」,填 1 表示 1 箱 = 1 个,明显错误。很多人在维护品号时忽略这个字段,默认填 1。

解决:检查所有涉及多单位的品号,确认换算率字段的值符合业务实际。工具包的 SQL 脚本里有换算率检查语句,跑一遍就能筛出异常品号。修正换算率后,需要重新计算受影响期间的库存数量和成本,这部分要跟财务确认。

4.3 修正 SQL 没包事务,改错只能恢复备份

现象:直接跑UPDATE语句,发现更新范围比预期大,想回滚但没包事务,只能从备份恢复,恢复期间业务停摆。

原因:SQL Server 默认自动提交模式,不显式BEGIN TRANSACTION的话,每条语句执行完立即生效,无法回滚。

解决:所有修正语句必须包在事务里,先BEGIN TRANSACTION,执行更新,用SELECT @@ROWCOUNT确认影响行数,跟预期对比,一致才COMMIT,不一致立即ROLLBACK。这个习惯能省掉很多恢复备份的时间。

4.4 远程审核时单位字段显示不一致

现象:远程审核易飞 ERP 系统单据时,审核界面显示的单位和单据明细里的单位不一致,审核人员以为数据错了。

原因:审核界面的单位字段可能取自品号主档的当前单位,而单据明细里的单位是录入时的历史单位。两者不一致是正常的,但容易引起误解。

解决:远程审核前,先确认审核界面的单位取值逻辑。如果是取主档当前单位,审核时要对照单据明细的单位字段一起看。工具包的说明表里会标注哪些界面的单位字段取自哪里,审核人员按表核对即可。

4.5 单位切换后报表数据异常

现象:单位切换完成后,库存报表和成本报表的数据跟切换前对不上,差异集中在切换期间的单据上。

原因:报表通常按当前单位汇总历史数据,单位切换后,历史数据的单位解读变了,汇总结果自然不同。如果切换期间有未结案单据,差异会更明显。

解决:单位切换前,先跑一遍关键报表,留存切换前的数据快照。切换后对比报表数据,差异部分逐条核对。工具包的说明表里会列出受影响的报表清单,按清单逐一验证。

5. 进阶技巧:用说明表做单位切换的标准化检查清单

工具包里的涉及单据及数据表说明.xlsx不只是查询参考,还能改造成一份标准化检查清单。我的做法是在说明表里加三列:「检查状态」「修正状态」「验证状态」,每次做单位切换时按行填写,确保每个涉及的表都走完检查、修正、验证三步。

具体操作:打开说明表,按「影响级别」排序,高影响的表排前面。每处理完一张表,在「检查状态」列填「已检查」或「无问题」,在「修正状态」列填「已修正」或「无需修正」,在「验证状态」列填「已验证」或「待验证」。全部填完后,再跑一遍检查 SQL,确认没有遗漏。

-- 最终验证:确认所有品号主档单位字段完整且换算率合理 SELECT ITEM_NO, ITEM_NAME, STOCK_UNIT, PUR_UNIT, COST_UNIT, CONV_RATE FROM INVMB WHERE STOCK_UNIT IS NULL OR PUR_UNIT IS NULL OR COST_UNIT IS NULL OR CONV_RATE IS NULL OR CONV_RATE <= 0;

这段验证语句查四类问题:单位字段为空、换算率为空、换算率小于等于零。跑完结果为空,说明主档层面没有遗漏。再跑一遍单据一致性检查,确认单据层的单位也全部对齐。

还有一个技巧:把检查 SQL 保存成视图或存储过程,每次单位切换时直接调用,不用重新写语句。视图命名带上用途,比如VW_UNIT_CHECK,方便团队其他人复用。如果团队里有远程审核的同事,可以把视图查询权限开放给他们,审核时直接查视图,减少沟通成本。

从那以后我每次做单位切换,都强制走一遍「备份 → 检查 → 事务修正 → 验证 → 报表对比」这五步,少一步都不踏实。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询