前阵子一个客户急急忙忙找我说系统里的账对不上了少了三万八问是不是系统坏了。我远程过去看了一圈系统没坏。是有张单据被删掉了。问下来他员工的原话是“录错了嘛删掉重新录一张不就行了。”这句话听起来特别合理也是绝大多数人第一次用系统时的本能反应。但在业务系统里单据不是一张纸删掉它往往是最错误的那一步。今天就把录错了到底怎么改这件事讲清楚。一、为什么不能直接删第一单据是业务链条上的一环。一张销售单后面可能已经跟着出库单、收款单、发票、对账单。你把源头删了后面那些单据还挂着。就像把桥中间的一节拆掉两头的桥墩还在但路断了——数据之间的关联关系就断了。第二删完没有痕迹。改错了能查到改了什么、谁改的、什么时候改的。删掉了就真的没了。月底对账的时候你只能看到一个窟窿谁干的、什么时候、为什么全查不到。这是最麻烦的地方——问题不是账错了是你连错在哪都不知道。第三库存和金额会一起错位。单据一删理论上库存要退回去、往来欠款要减掉。但很多系统在删除单据的时候只删了这张单本身下游数据没跟着回滚。于是账面少了三万八库存也对不上两边同时对不上。二、录错了分四种情况处理情况一还没提交审核。这是最简单的。单据还处在草稿状态没有人接着它干活。直接改就行或者作废掉重开一张。随便怎么弄都不会影响别的数据。情况二已经审核了但下游还没人接着干。走反审核有的系统叫弃审“撤审”把状态退回去改成正确的再重新提交审核。这一步一般需要单独的权限不是所有人都能点——因为它动的是已经生效的数据。情况三已经审核下游已经走了已出库、已收款。这种情况不要改原单要做冲销。所谓冲销行业里也叫红冲就是开一张方向相反的单据把这笔错的冲掉再开一张正确的。原来的单原封不动留着只是被抵消了。为什么要绕这一圈因为出库、收款这些事已经真实发生过了。你回头把源头数字改掉历史账就假了——看起来从来没错过但实际错过。冲销的逻辑是承认事实这笔错了我用另一笔把它抹平。最终的账是对的整个过程也是真的、可查的。情况四月已经结了只是发现小数不对。不要去动已经结账的单据。走调整单有的系统叫差额调整、期初调整补一笔差额就行。已经封账的东西就让它躺在那儿不要为了看起来干净去撬开它。三、给一线员工的三句判断口诀录错了先别动手问自己三个问题这张单后面有没有人已经接着干了出库了吗收款了吗开过票吗改了会不会动到库存或者钱我要不要留下这里改过的记录三个问题答不上来就别删、别硬改先问一声。很多公司出事不是因为员工不会用系统而是没人告诉过他错了该怎么办。我后来给客户做培训都会额外加一张 A4 纸《录错了怎么办》就写上面这四种情况贴在工位旁边。比讲半小时操作管用得多。四、说说我为什么在这件事上较真我自己做这套 ERPminierp的时候改单这块功能做了整整两周。一开始我也觉得不就是加个撤销按钮吗三天搞定。后来才发现难点根本不在能不能改而在于——改完之后账面上发生过的每一件事还得都说得清楚。所以我的设计原则是宁可流程麻烦一点也别让人一键删干净。能改的改该留痕的留痕该冲销的冲销。系统存在的意义是让账可信而不是让操作爽。我在做一套自研 ERP叫 minierp基于 RuoYiJava Spring Boot Vue目前还在开发阶段开发日常会持续更在这里。关注我看我怎么把 minierp 这套 ERP 一点点做出来。