先确认是不是真删了——区分逻辑删除与物理删除
在NC系统中,95%以上的‘删除’操作实际为逻辑删除:系统仅将记录状态字段(如dr)置为1,并未从数据库表中清除数据。此类操作可通过后台还原或回收站功能恢复;而执行DELETE FROM语句、清空表、或启用‘彻底删除’插件后的操作属于物理删除,无备份则无法恢复。
SELECT * FROM bd_psndoc WHERE dr = 1 AND code = 'XXX'(替换为具体编码)。若能查出记录且dr=1,即为逻辑删除,具备恢复条件。最短恢复路径:3步定位+2步执行
针对常规业务单据(如采购入库单、应付凭证)和基础档案(如供应商、会计科目),优先采用以下最小干预路径:
- 进入对应模块列表页(如【供应链】→【采购管理】→【采购入库单】)
- 点击右上角【更多】→【显示已删除】(部分版本显示为【查看历史】或【回收站】)
- 勾选目标单据 → 点击【恢复】按钮(非【还原】或【反审核】)
注:该路径仅对开启‘软删除开关’且未超保留周期(默认90天)的单据生效。
为什么点【恢复】没反应?检查这4类权限与配置
- 角色权限缺失:用户所属角色未授予【数据恢复】功能权限(路径:【系统管理】→【角色管理】→编辑角色→【功能权限】→勾选‘数据恢复’)
- 模块开关关闭:【系统管理】→【系统参数设置】→【基础设置】中‘启用删除数据查看与恢复’未勾选
- 单据状态锁定:被删除单据关联了已生成凭证、已结账期间、或存在下游审批流未终结,系统强制禁止恢复
- 客户端缓存异常:浏览器缓存导致列表未刷新,需按
Ctrl+F5硬刷新或更换Chrome无痕窗口重试
高频原因拆解:6类典型不可恢复场景
并非所有‘删除’都可逆。以下场景即使满足逻辑删除条件,系统仍会拒绝恢复或导致数据不一致:
期间已结账:跨月/跨年删除后无法回退
若删除操作发生在已结账期间(如2024年3月已结账),恢复该期间单据将破坏账务连续性。NC系统自动拦截恢复动作,并提示‘当前期间已结账,不能恢复历史期间单据’。
凭证已生成:财务链路断裂风险
删除前已生成凭证的单据(如应付单生成了应付凭证),恢复后凭证不会自动更新,导致‘单据有、凭证无’或‘金额不匹配’。此时必须同步手工冲销原凭证并重新生成,否则引发总账差异。
主子表级联删除:只恢复头表,子表丢失
NC中部分单据采用主子表结构(如销售订单含订单行、费用明细)。若通过SQL直接更新dr字段恢复头表,但未同步处理子表(如saleorder_b表),将导致界面报错‘子表数据不存在’或保存失败。
推荐做法:分角色执行的标准操作流程
不同岗位人员应遵循职责边界操作,避免越权或误操作扩大影响:
- 业务员:仅限在本模块列表页使用【显示已删除】→【恢复】,禁止接触SQL或系统参数
- 财务会计:恢复前须核对关联凭证状态(路径:【财务会计】→【总账】→【凭证查询】输入单据号),确认未结账且凭证未记账
- 系统管理员:需先备份当前库(
expdp导出对应表),再执行SQL恢复(UPDATE bd_psndoc SET dr = 0 WHERE pk_psndoc = 'xxx'),并立即执行【数据稽核】→【单据完整性校验】
回退方案:当标准恢复失败时的替代路径
若【显示已删除】不可见或恢复按钮灰显,按优先级尝试以下路径:
- 联系实施顾问调取最近一次RMAN/EXPDP备份,在测试环境验证后恢复生产库指定表(需停机窗口)
- 启用NC内置【数据快照】功能(如已部署),选择删除前1小时快照进行局部回滚
- 向用友支持提交工单,提供
单据号+删除时间+NC版本号+数据库类型,申请日志级数据提取(仅限U8+/NC Cloud V6.7+)
注意事项与风险红线
恢复操作不是无风险‘撤销键’,必须严守以下底线:
特别提醒:
• 不得在生产环境直接执行UPDATE ... SET dr = 0语句,必须配合UPDATE ... SET ts = SYSDATE更新时间戳,否则触发NC校验失败
• NC V6.5以下版本无图形化回收站,必须依赖SQL+备份双轨操作
• 所有恢复操作需在【系统日志】中留存记录(路径:【系统管理】→【日志查询】→筛选‘数据恢复’操作类型)