文件服务.常见问题.单据平白无故多出来一些附件,如何做数据修复
1、现象及原因:
用户在使用过程中发生过这样的现象,单据平白无故多出来一些附件。如下图,单据创建时间2016年3月7号,但是有两个上传时间为2015年4月27号的附件。
出现这样的原因是早先在2020年7月份补丁前删除单据是不会删除附件的,而我们附件列表展示附件数据,是根据业务对象标识加单据内码的组合条件来进行展示的,一旦已删除单据的内码被新增单据所占用,那么将会把历史已删除单据的附件加载进来。
这样的场景发生概率较少,原因是单据内码是递增的,已经用过的内码是不会被复用的。但是也有可能存在客户修复过种子表或者二开插入删除过单据数据,那么也会导致该种情况。但是如果发生了,该如何修复呢?
2、如何修复:
以上面截图单据编号为CGSQ000037的采购申请单为例。注意由于涉及到数据库操作,建议操作前先在管理中心对相应数据中心进行备份以预防万一。
2.1、通过【采购申请单单据编号CGSQ000037】查询得到【采购申请单单据内码100100】
2.2、通过【采购申请单单据标识PUR_Requisition】跟【单据内码100100】查询得到关联单据下所有附件信息:
2.3、通过步骤2.2查询得知内码为10010的采购申请单PUR_Requisition下共有三个附件,但是FBillNo单据编号有两个:HBGX001、CGSQ000037,说明其中之一可能来自已经被删除的单据。
在采购申请单表格下分别查询单据编号CGSQ000037、HBGX001。其中HBGX001没有数据说明已经被删除了,可删除附件脏数据:
注意,实际验证中可能还会如下的情况:
1)版本变更的情况,如合同变更,变更前后单据编号不一样,但是历史上传附件还是可以关联得到,这种附件数据不属于脏数据不需要清除,如下图:
2)单据均存在的情况,此种情况无法从数据层面确定哪条附件数据为脏数据,建议是保留原数据或者沟通制单人确认哪条附件数据为脏数据。
2.4、删除采购申请单下单据编号为HBGX001的附件脏数据,注意此处删除附件脏数据脚本的条件,包括FBILLTYPE业务对象标识、FINTERID单据内码、FbillNo单据编号。
delete from T_BAS_ATTACHMENT where FBILLTYPE = 'PUR_Requisition' and FINTERID = 100100 and FBillNo = 'HBGX001';
下图为删除后的界面效果展示:
2.5、上述介绍了通过已经知道有问题的单据及单据编号来进行操作,那么如果查出来当前系统其它单据是否也存在相同问题呢,可通过如下脚本:
select temp.FBILLTYPE,temp.FINTERID,COUNT(temp.FileCount) BillNoCount from (select FBILLTYPE,FINTERID,FBILLNO,COUNT(FBILLNO) FileCount from T_BAS_ATTACHMENT where FBILLNO <> '' AND FBILLNO is not null group by FBILLTYPE,FINTERID,FBILLNO) temp group by temp.FBILLTYPE,temp.FINTERID having COUNT(temp.FileCount) > 1
通过查询脚本可知道内码为164730,标识为BD_Supplier的单据下可能存在附件脏数据,然后可以通过2.2-2.4的步骤进行数据修复。其它BD_Currency、166726的同理。
文件服务.常见问题.单据平白无故多出来一些附件,如何做数据修复
本文2024-09-23 03:45:36发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160927.html