ERP 数据录入中最容易被低估的,不是“字段有没有填”,而是“字段分别填对了,组合起来是否仍然符合业务”。采购单上的物料、单位、数量、仓库和交期,单看都可能通过格式校验;但如果单位与物料不匹配、仓库不属于当前组织,或交期早于供应商可承诺日期,单据仍可能在后续收货、库存或结算环节出错。字段校验的进阶设计,不是继续堆限制,而是把业务规则放在合适的时机,用用户能理解的方式处理异常,并让规则可追踪、可维护。
我设计 ERP 数据录入规则时,会先问三个问题:这个规则要防止什么业务损失?错误最迟在哪个环节必须被发现?发现后由谁修正或批准例外?如果一个校验规则回答不了这三个问题,它很可能只是把录入流程变复杂,而没有真正提高数据质量。
例如,采购数量必须大于零,看起来是简单的数值范围校验。但如果某些采购类型允许录入负数来处理退货,那么“一律大于零”就会误拦合法业务。反过来,如果普通采购单允许数量为零,后续流程又没有明确用途,这条规则可能过松。校验条件必须依赖单据类型、业务状态和责任边界,而不能只看字段名称。
核心结论是:校验要围绕风险分层,而不是围绕字段数量扩张。低风险问题可以提示,高风险且无法补救的问题应阻断;需要完整单据或实时业务状态才能判断的规则,不应过早执行;确有合理例外的业务,也不能靠私下改数据解决。
为了让规则容易设计和维护,我通常把 ERP 校验拆成五层。前两层主要检查输入本身,后三层逐步进入主数据、字段关系和业务流程。实际系统不一定要把它们做成五套技术模块,但在规则台账和需求评审中应能区分。
这五层不是“越往后越高级、越重要”。格式错误往往成本低、适合尽早提示;权限和业务状态则可能依赖更多上下文,判断错误的代价也更高。设计时要同时看错误影响、判断所需信息、用户是否能立即修正,以及系统执行成本。
| 校验层级 | 典型问题 | 常见执行时机 | 主要风险 |
|---|---|---|---|
| 类型与格式 | 日期格式不正确、数量录入为文字 | 输入时或保存时 | 提示过晚会造成重复录入 |
| 必填与范围 | 数量为空、金额超过单据允许范围 | 保存时或提交前 | 范围定义不准确会误拦合法数据 |
| 主数据有效性 | 供应商已停用、仓库不属于当前组织 | 选择时及提交前复核 | 只检查“存在”会漏掉“不可用” |
| 字段关联关系 | 物料与单位不匹配、业务日期与类型冲突 | 字段变化后提示或提交时 | 依赖信息不完整时可能误判 |
| 流程与权限状态 | 已审批单据仍被修改、无权限人员提交 | 提交、审批或过账时 | 规则与流程状态不同步会形成绕行路径 |
表中时机是常见选择,不是所有 ERP 都必须采用的固定实现。系统能力、接口延迟和业务风险不同,适合的执行点也会不同。

字段校验不必从全系统铺开。更可执行的做法,是先找出高风险字段:填错后会影响库存数量、金额、税务处理、交付承诺、组织归属或审批责任;并且错误不容易在后续流程自动发现。物料、数量、单位、仓库、业务日期和主体通常值得优先评估,但具体名单要由企业自己的流程和数据决定。
我建议为候选字段标注四项信息:错误可能造成的影响、现有发现环节、人工修正成本、规则判断所需的数据。这样能避免“字段看着重要就上硬拦截”,也能发现一些名称普通但后果严重的字段。例如备注字段一般不影响过账,但若承担批次或特殊交付说明,就可能需要结构化字段或专门校验。
以采购订单录入为例,用户可能选择采购组织、供应商、物料、单位、数量、期望到货日期和收货仓库。只做基础校验时,系统会确认这些字段都有值、格式正确、引用对象存在。但业务正确性还取决于它们之间的关系:供应商是否能供该物料,单位是否属于物料允许的采购单位,仓库是否对当前组织开放,日期是否符合采购流程要求。
这就是许多“字段都填对了,单据仍被退回”的原因。系统检验的是每个字段的局部合法性,业务人员判断的却是整张单据在当前流程中的可执行性。若把所有关系都留到审核阶段才发现,用户会在提交后集中收到问题;若把所有关系都在输入时强制执行,又可能因为信息不完整、状态更新延迟而反复误拦。
采购录入中常见的异常,大致可以分为三类。第一类是用户可以立刻修正的输入错误,例如数量格式不合法;第二类是需要补充信息或业务确认的情况,例如预计交期早于供应商默认周期;第三类是当前流程不允许继续的情况,例如单据引用的供应商已停用,且没有授权例外。
这三类问题不应使用同一套“校验失败”提示。第一类适合就地定位并说明正确格式;第二类可以警告并要求确认或补充依据;第三类则应明确阻断原因和后续处理责任。把不同风险都做成硬拦截,会让用户频繁找管理员;全部做成提醒,又可能把关键风险交给用户自行忽略。
主数据校验经常只检查记录是否存在。更完整的判断还要看状态、适用范围、生效日期、所属组织和业务用途。一个仓库可能在系统里仍有记录,却已经停止接收某类货物;一个供应商可能存在,但只适用于指定采购组织;一个物料可能有效,却不允许使用当前采购单位。
如果规则依赖主数据状态,设计时要约定读取哪一份数据、何时刷新、状态变化后如何处理已打开的草稿。否则会出现典型冲突:用户打开单据时对象有效,提交时对象已停用;或者缓存尚未更新,系统仍接受已失效的对象。此类问题不是增加“必填”规则可以解决的,需要明确状态来源与复核时点。

强制必填看似能减少空值,却容易把“暂时未知”和“确实不适用”混为一谈。比如订单草稿阶段尚未确定收货日期,用户为了保存草稿随意填一个日期;后续人员又把这个占位值误当成正式承诺。表面上空值减少了,实际却增加了伪数据。
处理方法不是简单地取消必填,而是区分单据状态和字段责任。草稿可以允许部分字段为空,提交审批前再要求补齐;也可以允许不适用,但通过明确的选项和原因记录表达,而不是塞入“无”“默认值”或虚构日期。必填应关联业务阶段,而不是只关联页面是否显示该字段。
严格规则的价值取决于误拦截成本。若某条规则的依据不可靠,硬性拦截可能迫使用户采用线下沟通、临时改主数据或重复建单等绕行方式。绕行并没有消除风险,只是让系统日志失去真实过程,后续更难追查。
例如,系统根据某个默认交期判断日期异常,但这个交期只适用于常规供应商和普通物料。对加急采购或特殊运输而言,同样的日期可能合理。此时不应把“早于默认周期”直接当成错误,更合适的做法可能是提示风险、要求填写原因,或根据采购类别调用不同规则。
保存时校验容易实现,但不是所有问题都应等到保存才暴露。日期格式、数量精度等即时可判断的问题,如果用户填完一整张表才发现,会增加返工;反过来,供应商状态或库存可用量等可能随时间变化的信息,即时查询后也不应被视为永久有效。
更合理的做法是按规则的数据依赖选择时机。只依赖当前输入的规则可以尽早反馈;依赖完整单据的规则可以在保存或提交时运行;依赖动态状态的规则应在关键业务动作前再次确认。系统应说明哪些检查是初步提示,哪些检查是最终准入条件。
“校验失败”“数据不合法”“请联系管理员”都没有告诉用户该做什么。高质量提示应尽可能回答四件事:哪个字段或业务关系触发了规则、系统为什么判定异常、用户可以如何修正、若业务确实特殊应走什么流程。
如果提示涉及敏感信息,也要注意权限边界。例如用户没有权限查看完整供应商状态原因,系统可以提示“该供应商当前不可用于此采购组织,请联系采购主数据负责人”,而不是暴露不应公开的内部信息。提示应足够具体,但不必泄露多余数据。
规则会随着组织结构、产品目录、审批流程和业务政策变化。没有负责人和版本记录的规则,过一段时间就可能变成“没人敢改、也没人知道为什么存在”。这时管理员往往只能临时关闭规则,导致规则治理退化成开关管理。
每条关键规则至少要记录适用对象、业务目的、触发条件、执行时机、提示或拦截方式、例外路径、责任人和变更记录。规则有变更时,还要检查历史单据、接口、报表和下游流程是否会受到影响。

规则需求不应从“增加一个必填校验”开始,而应从可能发生的业务风险开始。推荐将需求写成“在什么业务条件下,哪个角色可能录入什么数据,导致什么后果,最迟在哪一步发现”。这段描述能帮助实施人员判断是否真该做字段校验,还是需要调整主数据、流程或权限。
例如,“不允许选择停用供应商”仍然太笼统。需要进一步明确:所有停用状态都禁止新采购吗?已经创建但未提交的草稿如何处理?停用后是否有历史协议订单例外?某些组织是否可以继续使用?没有回答这些问题,技术规则就可能把复杂业务压缩成一个过度简单的布尔判断。
我会用四个维度做规则评审:错误影响、错误被后续发现的概率、规则判断的确定性、用户修正的便利性。前两项越高,越有理由加强校验;判断确定性越低,越要避免直接硬拦;修正越困难,越需要提前提示和提供清晰的处理路径。
| 判断维度 | 需要回答的问题 | 对设计的影响 |
|---|---|---|
| 错误影响 | 是否影响金额、库存、履约、合规或责任归属? | 影响高时提高检查强度,并保留审计依据。 |
| 后续发现能力 | 下游是否能自动识别,还是只能靠人工抽查? | 难以发现时应更早发现,但不能忽视误判。 |
| 规则确定性 | 判断依据是否稳定、准确且能及时读取? | 依据不稳定时优先提示或复核,谨慎硬拦。 |
| 修正便利性 | 用户能否立即改正,是否需要跨部门处理? | 修正复杂时提供责任人和明确的升级路径。 |
输入时、保存时、提交时、审批时和过账时,不是五个互相替代的选项,而是可以组合使用的检查点。关键在于识别规则依赖什么数据,以及这些数据在何时才完整、可信。
一种常见的误解是“同一个规则只运行一次”。对于会动态变化的数据,可能需要先给用户预警,再在提交时重新核验。前一次判断用于帮助用户,后一次判断用于确保业务动作执行时条件仍成立。系统要区分这两种判断的目的,而不是把重复检查视为冗余。

反馈强度可以分为阻断、警告和建议。阻断适用于明确违反规则、继续执行会造成高风险或系统无法安全处理的情况;警告适用于规则显示较高风险、但业务上可能存在合理例外的情况;建议则适用于改善数据完整性或录入效率,但不影响当前流程的事项。
不要用“重要不重要”单独决定强度,还要看判断准确性。规则影响很大但数据来源不稳定时,贸然硬拦可能同样危险。必要时先采取“提交时人工复核”的过渡方案,收集足够的异常样本后,再决定能否升级为自动阻断。
实际业务不可能没有例外。新供应商试单、紧急补货、临时仓库调整或特殊项目采购,都可能需要突破常规条件。成熟设计不是取消所有限制,也不是给管理员一个无限制放行按钮,而是限定例外适用范围、审批责任、有效时间和记录内容。
例外流程至少应回答:谁能发起、谁能批准、必须填写什么原因、例外作用于单张单据还是某个对象、是否有有效期、批准后是否要复核。若例外具有重复性,就应评估是否已经成为新的常规业务,并考虑正式调整规则,而不是长期依靠特批。
下面以一个情景模拟的采购订单案例说明设计方法,不代表某个真实企业的实施记录,也不代表任何 ERP 产品的默认能力。假设企业有多个采购组织、多个收货仓库,物料主数据维护采购单位和允许使用范围;采购员负责录入订单,采购主管负责审批。
本案例的目标不是让系统识别所有采购判断,而是减少可预防的输入错误,让不确定的业务风险进入可追踪的确认流程。也就是说,系统负责稳定、可表达的规则,用户和审批人负责需要业务判断的例外。
| 字段或关系 | 规则示例 | 反馈建议 | 设计理由 |
|---|---|---|---|
| 采购组织 | 必须是当前用户可操作的组织 | 无权限时阻断 | 属于权限边界,不能靠用户自行确认绕过。 |
| 供应商 | 在当前采购组织和业务日期范围内可用 | 无有效关系时阻断或转受控审批 | 只验证供应商存在不足以证明可用于本单。 |
| 物料与供应商 | 该供应商可供应所选物料,或允许临时例外 | 警告或阻断,取决于维护数据可靠性 | 关系数据不完整时,应先核实主数据治理状况。 |
| 物料与单位 | 单位属于物料允许的采购单位,换算规则有效 | 无有效换算时阻断 | 错误可能传递到数量、库存和结算环节。 |
| 数量与精度 | 数量大于零,并符合物料允许的小数精度 | 输入时提示,提交时复核 | 常规采购的基础规则明确,适合尽早发现。 |
| 收货仓库与组织 | 仓库属于当前组织,并允许接收该物料类别 | 选择时过滤,提交时复核 | 仓库权限和可接收范围可能随组织或状态变化。 |
| 期望到货日期 | 不能早于业务允许的最早日期;超短交期需确认 | 警告并要求说明,不一概硬拦 | 交期判断可能受加急、运输方式等场景影响。 |
规则台账不能只写“校验单位”。至少应写出适用单据、判断条件、依赖数据、执行时机、反馈强度、例外路径和责任人。下面是一个采购单位规则的表达示例,具体实现方式应由实际 ERP 的配置能力、接口和开发规范决定。
规则名称:采购单位必须属于物料允许单位
适用范围:采购订单明细行
触发条件:物料已选择,采购单位已填写
判断逻辑:采购单位在该物料的有效采购单位列表中,且换算关系处于有效状态
首次检查:用户选择采购单位后
最终复核:提交采购订单时
失败处理:阻断提交,提示可用单位及物料编码
例外处理:仅允许授权角色发起,须填写原因并经采购主管批准
维护责任:物料主数据负责人
审计记录:记录规则版本、触发时间、处理结果和例外审批编号
这个写法的价值不在于格式本身,而在于减少需求歧义。业务人员可以确认规则是不是业务所需,实施人员可以确认判断数据从哪里来,测试人员可以据此设计用例,运维人员也能找到后续维护责任。
假设用户为某物料选择了不支持的采购单位。差的提示是“校验失败”;稍好一点是“单位错误”;更好的提示应说明当前选择与哪条关系不符,并给出可操作的下一步。若系统能够安全展示可选单位,可以直接列出;若没有可靠的可选项数据,则应指引用户联系物料主数据负责人,而不是猜测替代值。
示例中的编码为虚构占位符。实际提示是否展示对象名称、编码或完整关系,需要按用户权限和数据安全要求确定。
规则测试不能只测“正确值通过、错误值被拦”。采购单位规则至少要覆盖有效单位、无效单位、停用换算关系、主数据查询超时、草稿保存、提交时关系刚好失效、授权例外和无权限申请等情况。测试目标是确认系统在异常条件下不会悄悄给出错误结论。
最后一项常被忽略。校验通过并不保证用户只提交一次,网络重试和页面重复操作可能造成重复单据。是否需要防重、幂等或操作确认,应根据系统架构和交易风险评估,不能把它当成普通字段格式校验来解决。

如果上线后只统计“系统拦截了多少次”,容易把拦截多误认为治理效果好。拦截增加可能是错误变多,也可能是规则覆盖扩大;拦截减少可能代表数据改善,也可能代表规则被关闭或用户绕开。应结合结果和过程指标判断。
如果企业没有历史基线,先不要承诺“错误率下降多少”。可以先用两到四周建立观察口径:记录规则触发次数、修正结果、误拦复核、人工工时和最终退回原因。观察期长短应结合单据量和业务周期,样本不足时只能得出有限结论。
建议为每条关键规则建立可查询的台账。台账既不是技术文档的替代品,也不是只给审计看的表格,而是业务、实施、运维共同确认规则意图的最低限度记录。规则数量很多时,可以按模块和风险等级分层管理,但不能省掉版本、责任人和例外信息。
| 台账字段 | 填写要点 |
|---|---|
| 规则编号与名称 | 使用稳定、可搜索的标识,避免同一规则在不同文档中名称不一。 |
| 业务目的 | 说明要避免的业务后果,不写成“系统需要校验”。 |
| 适用范围 | 明确单据类型、组织、角色、状态或业务场景。 |
| 条件与数据来源 | 写清判断逻辑,以及依赖的主数据、接口或流程状态。 |
| 执行节点与反馈方式 | 记录输入、保存、提交等执行点,以及提示、警告、阻断方式。 |
| 例外机制与审批责任 | 明确谁能申请和批准,保留原因及处理结果。 |
| 规则负责人及版本 | 指定业务负责人、系统维护人、生效日期和变更记录。 |
调整字段规则可能影响接口导入、历史单据处理、移动端录入、批量导入、报表口径和下游系统。若用户页面有校验、接口却没有同等约束,数据可能从旁路进入;如果接口和页面重复实现但规则版本不同,又会出现“页面通过、接口拒绝”或相反的冲突。
因此,变更评审要检查规则是否在所有入口一致执行。对无法统一执行的场景,应明确哪一层是最终权威判断,以及失败后返回什么信息。批量导入通常还需要提供逐行错误报告,否则用户只看到整批失败,却不知道哪条记录需要处理。
监控指标应能回答规则是否减少了可预防错误、是否造成了额外人工工作、是否存在持续增长的例外。如果规则触发很多,但多数用户修改后仍然发生同类退回,说明提示或判断条件可能不够准确;如果例外申请长期集中在同一场景,可能应重新审视业务规则,而不是继续积累特批。
统计口径要保持可比。例如“提交通过率”必须定义分母是首次提交单据还是所有提交动作;“误拦截”必须有复核机制;“人工处理耗时”要区分实际处理时间和等待时间。没有一致口径时,仪表盘看起来精确,也可能无法支持决策。

固定周期复核适合检查规则长期是否仍有价值;业务变化触发复核则适合应对组织调整、主数据结构变化、新流程上线、法规或合同要求变化。仅依赖年度检查,可能错过关键变更;仅依赖临时通知,又可能让规则维护完全取决于个人记忆。
可以给高风险规则设定复核责任人和复核周期,同时将规则与相关流程、主数据负责人关联。复核不一定每次都修改规则,确认继续有效也应留下记录。对长期没有触发的规则,也要查明原因:可能业务已不再发生,也可能校验入口失效或规则条件写错。
如果系统刚上线或业务流程正在重建,先不要急着做大量字段硬校验。优先梳理主数据关系、组织权限、单据状态和例外类型,再把最稳定的规则纳入自动判断。规则依据尚未明确时,可以先用提示或审批检查收集样本,避免把未成熟的流程固化成技术限制。
上线前至少应让业务负责人确认规则目的和例外,系统人员确认数据来源与执行节点,测试人员确认正向、反向和异常路径。三方确认的是同一条规则,而不只是各自阅读过不同版本的需求文档。
如果现有 ERP 经常出现错录、退回或人工纠正,第一步是定位错误发生在哪里:输入当时就错了,还是主数据本身错误?是操作界面不清楚,还是规则不一致?是接口导入绕过了页面,还是审批人员只能事后发现?根因不同,对策也不同。
建议抽取一段可代表业务周期的单据样本,按错误类型、发现环节、修正角色和最终影响分类。样本数量由单据规模决定,不必追求一个对所有企业都适用的固定数字。对于高风险错误,哪怕出现次数不多,也应评估单次损失;对于高频低影响问题,则要比较自动校验收益与操作成本。
如果字段校验需要调用供应商系统、库存服务或主数据平台,设计者需要考虑接口超时、缓存延迟和服务不可用。调用失败时,系统应明确显示“暂时无法确认”,而不是假装规则通过,也不应将所有外部服务故障都转成用户数据错误。
是否允许暂存、是否允许提交、是否要求人工复核,要按风险分别设计。比如低风险草稿可以允许保存并标记待确认;高风险过账动作则可能需要等待权威状态返回。对用户来说,系统状态应清楚区分“数据不符合规则”和“系统暂时无法完成检查”。
若组织、物料或供应商规则经常变化,硬编码在多个页面或接口中的逻辑会增加维护风险。此时可评估把条件配置化、统一服务化或集中管理,但配置化并不自动等于易维护。配置项太多、命名不清、缺少测试和审批,反而会把代码复杂度转移给业务管理员。
配置规则仍需要权限控制、版本、生效日期、变更审批和回滚方案。对于高风险规则,修改配置也应走测试与发布流程,不能因为“无需改代码”就取消影响评估。
团队资源有限时,应选择业务影响较大、发生频率较高、判断依据清晰、用户可以快速修正的规则先做。不要同时承诺覆盖所有模块、所有字段和所有异常。小范围试点能更快暴露规则数据是否完整、提示是否可理解、例外是否可操作,再决定扩展顺序。
如果某条规则需要大量人工判断才能区分对错,就不适合一开始做成自动硬拦。可以先结构化收集原因和结果,观察一段时间后再判断是否能抽象出稳定条件。自动化的前提是规则可表达且数据可用,不是业务重要就必然适合自动化。

即时校验的优点是反馈快,适合格式错误、明确范围和简单主数据选择;缺点是可能依赖局部上下文,受到网络、缓存或频繁提示影响。提交复核能看到更完整的单据,适合字段关系和业务状态判断;缺点是发现太晚时,用户可能已经完成大量录入。
实践中通常不需要二选一。可以让输入时检查低成本、高确定性的规则,提交时复核动态状态和整单关系。需要明确的是,两次检查应有不同目的:第一次帮助用户尽早修正,第二次保障关键动作执行时条件仍成立。
硬拦截适用于确定性高、后果严重、继续执行不可接受的情况。软提示适用于存在合理例外、数据判断存在不确定性或错误成本较低的情况。两者之间还可以采用“必须确认”“需填写原因”“转审批”等中间方式,不必把所有情况压缩成允许或禁止。
如果系统长期出现用户反复忽略同一警告,应该检查警告是否过多、条件是否准确、文字是否具体,以及用户是否拥有解决问题的权限。此时一味提高拦截强度,未必能改善数据质量;有时更有效的方案是修正源头数据、重做页面流程或调整责任分工。
主数据关系维护良好时,系统可以更有信心地限制选择范围;主数据不完整或更新滞后时,硬约束可能把维护问题转嫁给业务用户。设计前要检查主数据的负责人、维护时效、有效状态和组织适用范围,否则规则会把“基础数据不可靠”伪装成“操作人员填错”。
若例外只在少数、明确场景出现,可以保留受控例外;若例外长期占据大量业务,说明规则或主数据模型可能与现实流程不匹配。此时应复盘业务设计,而不是继续增加更多豁免条件。
单字段校验简单、反馈直接,适合格式和范围;整单校验能够判断跨字段关系,但通常需要更多数据,并且提示需要准确定位到具体字段或关系。整单校验若只返回一段笼统错误,用户很难修正;若每次字段变更都重新运行复杂逻辑,也可能造成性能和交互负担。
较好的做法是先在字段变化时触发轻量关联检查,再在提交时执行完整规则。系统可以把错误按明细行、字段和业务关系分类呈现,并让用户能够跳转到问题位置。批量录入时则应支持汇总报告,避免逐条弹窗打断操作。

上线前,我会要求每条高风险规则都能通过以下检查。回答“不清楚”的地方不一定要立刻取消规则,但应先明确负责人和处理方案。对于阻断规则,尤其要确认误拦截时用户能联系谁、是否可以申请例外、申请期间业务如何继续。
第一步,盘点错误。选取采购、库存或其他高风险流程,整理近期常见错误、发现环节、修正角色和后续影响。没有可靠数据时,先做小样本记录,并注明样本范围,不要把个别印象包装成行业结论。
第二步,挑选规则。从高影响、判断依据明确、修正路径清楚的规则开始,分别设定执行时机和反馈强度。对依赖不完整数据的条件,先改数据治理或采用提示、人工复核,不要急于硬拦。
第三步,复盘效果。观察用户是否能依据提示修正,是否出现误拦和绕行,人工处理是否增加,错误是否从录入环节转移到下游。根据实际结果调整规则,而不是以规则数量或拦截次数作为成功标准。
ERP 字段校验真正的进阶,不是让系统对每个输入都说“不”,而是让系统知道什么时候应当提醒、什么时候必须阻断、什么时候需要把判断交给有权限的人。字段格式只是起点,主数据关系、业务上下文、流程状态、异常处理和持续维护,决定了校验能否真正减少错误。
如果现在只能做一件事,我建议先挑选一个错误影响大、发生频率可观察的业务流程,画出字段之间的关系,再把每条规则写明业务目的、执行时机、反馈强度和例外责任。先让一条规则可解释、可验证、可追踪,再扩展到更多字段,通常比一开始追求全系统硬拦更稳妥。
我在设计ERP录入规则时,常拿采购单做反例:物料编码、数量、单位、仓库分别都能通过格式检查,单据却仍可能出现“物料不适用该单位”或“仓库不属于当前组织”的问题。字段各自填得像样,不等于它们组合起来符合业务。到底该怎样分层,才能避免把校验做成一长串难维护的限制?
建议按规则检查的对象分层,而不是把所有规则都塞进字段属性里。采购单可以从五层梳理:格式与类型、必填与范围、主数据有效性、字段间业务关系、流程状态与权限。每条规则都应能回答“检查什么、依据什么数据、失败后怎么办”。以采购数量为例:数量必须是数值、精度不超过约定范围,属于格式与范围校验;
物料编码必须存在且可采购,属于主数据校验;采购单位必须是该物料允许使用的单位,属于字段关联校验;单据已审批后不可随意修改,则属于流程状态校验。这样拆分后,业务人员能看懂规则来源,系统维护者也更容易定位变更影响。
一个实用做法是先建规则台账,至少记录字段或字段组合、规则条件、业务依据、执行时机、失败提示、例外负责人和版本。不要为了显得严谨而追求规则数量;优先治理高频、高风险、可明确判断的错误,再用实际退回和人工修正情况决定是否扩展。
我担心所有规则都设成输入时即时拦截,会让录入变得很烦;但如果等到提交才检查,用户又可能填完一整张单据才发现问题。比如必填、物料与单位匹配、库存状态这些规则,分别放在哪个环节更合适?
不要给所有规则指定同一个校验时机。选择时机可以看三件事:规则需要的数据是否已经齐全、错误发现得越晚代价是否越高、用户能否在当前步骤立即修正。格式错误、明显必填项通常适合输入时提示;草稿保存时可检查记录是否达到可保存的最低要求,但不必把尚未填完的单据一概拦住;
需要读取整张单据、组织关系或实时业务状态的规则,更适合保存、提交或审批前复核。比如采购数量是否为正数可以早提示,而供应商、物料、组织和价格组合是否满足当前采购策略,往往需要信息齐全后再判断。可以用“早提示、关键节点拦截”作为默认思路:输入阶段尽量帮助纠正,正式提交前确保关键规则通过。
若依赖实时库存或外部数据,还要考虑数据刷新延迟、网络失败和重复提交等情况,并明确校验失败时用户是修改、重试还是转入人工处理。
我见过一些录入页面只弹出“校验失败”,业务人员不知道错在哪,只能找管理员或在线下沟通,最后还可能换个字段绕过去。我想知道提示信息至少要包含什么;哪些情况应该硬性阻断,哪些情况可以申请例外?
一条可执行的错误提示至少要说明出错对象、判断原因和下一步动作。例如,不只写“数据不合法”,而是指出“所选单位不在该物料的采购单位范围内,请改选允许单位;如确需新增单位,请联系主数据负责人”。这样既减少来回确认,也避免用户靠猜测修正。
可将反馈分为阻断、警告和建议,但分类依据应是风险,而不是技术上能不能拦。可能造成账务、库存或合规后果的规则,通常需要阻断;存在合理业务例外、且可由授权人员承担责任的情况,可进入审批例外;只影响录入便利或信息完整度较低的规则,可以先提示。
例外记录至少保留申请原因、批准人、适用单据和时间,避免出现不留痕的万能放行。上线前用几种真实业务情境走查提示:用户能否定位字段、理解原因、知道找谁处理?若同一规则频繁触发例外,不要只增加审批步骤,应回头检查规则是否过严、主数据是否缺项,或业务流程是否已经变化。
我准备给ERP补一批校验规则,但担心上线后只看到拦截次数变多,就误以为数据质量改善了。哪些指标能区分有效拦截和误拦?如果企业目前没有完整基线,应该怎样开始评估?
拦截次数只能说明规则触发过,不能单独证明数据变好了。它可能代表发现了真实错误,也可能意味着规则定义不准、提示难以理解,或用户反复提交同一问题。评估时应把规则触发与后续结果连起来看。可以先为每条高风险规则定义统计口径,观察触发后修正率、被退回比例、人工处理量、例外审批比例,以及规则误拦的反馈数。
比如“修正率”要明确统计的是触发后在规定时间内完成修正的单据,而不是把所有重新提交都算作成功;“误拦”也要由业务负责人确认,避免仅凭用户抱怨下结论。如果没有基线,不要先承诺错误率会下降多少。先选一类高频单据,记录一段时间内的触发、修正、退回和例外情况,再分批上线规则并对比同口径数据。
若拦截增加但退回和人工补救没有改善,优先复查规则条件、提示内容和校验时机,而不是继续堆更多限制。


读者评论
把校验按风险和单据阶段拆分,比一味增加必填项更实用,尤其是草稿与提交阶段的要求应有所区别。
主数据不仅要检查是否存在,还要核对状态、组织范围和生效日期,这部分很容易被简单校验遗漏。
文中提到硬拦截可能导致线下绕行,这点值得关注;规则依据不充分时,提示并要求补充原因或许更合适。
错误提示说明触发原因和处理路径,确实能减少用户反复找管理员,也更方便追踪异常责任。
情景评分和图表明确标注为模拟数据,避免把示例误当行业统计;实际优先级仍需结合企业流程调整。