历史数据清理工具涉及的脚本调整
根据使用历史数据清理工具进行清理或者结转所出现的异常问题,这里总结了四个需要涉及脚本调整的内容,请在清理或者结转前(前前前,重要的事说三遍)务必调整好:
注意:
1、目前WISE大部分版本的历史数据清理工具都需要正式许可才能使用;
2、调整前,请务必搜索对应版本是否有关于清理、结转的补丁,如果有必须要先安装好相关补丁);
3、以下内容适用于K/3 WISE产品可以使用历史数据清理工具的所有版本,KIS产品旗舰版的数据清理和账套结转功能也可以参考处理;
4、清理、结转的过程中如出现异常报错必须重新还原新的账套、调整好需要处理的数据再重新处理,不要使用已做过清理、结转的账套继续处理(也即只要是需要重新清理、结转,都需要重新恢复清理、结转前的账套进行处理);
5、以下说提及到的SQL文件路径在于:
目录盘:\Program Files\Kingdee\K3ERP\KDSYSTEM\KDCOM\SQLSRV,里面settleaccount.sql结尾的文件为清理调用的SQL文件,settleaccount_t.sql结尾的文件为结转调用的SQL文件;
分享1:账套结转提示“将截断字符串或二进制数据”(此报错不一定会出现提示)
分析原因:
采购发票【批号】FBatchNo、销售发票【备注】FNote 字段最大长度为255字节(称为前者)
期初发票明细表t_rp_begdataEntry 中【批号】FBatchNo、【摘要】FExplanation 字段最大长度为80字节(成为后者)
账套结转过程中将采购发票、销售发票中的数据向期初发票明细表中插入时,前者超过80字节的内容则不能写入后者中,系统会给出报错
解决方法:可在结转前执行以下语句增大期初发票明细表t_rp_begdataEntry 的【批号】FBatchNo、【摘要】FExplanation 字段长度:
alter table t_rp_begdataEntry alter column FExplanation varchar(255) null
alter table t_rp_begdataEntry alter column fbatchno varchar(255) null
分享2:数据清理时提示“将 expression 转换为数据类型 int 时出现算术溢出错误”
分析原因:
涉及报错的是文件“K3_V10.3_SCM_SettleAccount”里面的语句:
SELECT b1.FClassTypeID, b1.FID , SUM(ISNULL(a1.FICMOInterID,0)) AS FICMOInterID
FROM PPBOMChangeEntry a1
INNER JOIN PPBOMChange b1 ON b1.FClassTypeID=1002502 AND b1.FID=a1.FID
GROUP BY b1.FClassTypeID,b1.FID
FICMOInterID为INT类型,范围为-2147483648到2147483647,如果SUM(ISNULL(a1.FICMOInterID,0)) 超过此范围则会提示溢出报错。该文件中有多个脚本包含SUM(ISNULL(a1.FICMOInterID,0)) ,所以全部需要做调整。
建议方法:
需要在清理前将文件K3_V10.3_SCM_SettleAccount里面所有(所有、所有、所有)的SUM(ISNULL(a1.FICMOInterID,0))都改为SUM(ISNULL(CONVERT(bigint,a1.FICMOInterID),0))
如果是使用结转功能,同样地可以在K3_V10.3_SCM_SettleAccount_t中做上述一样的调整。
分享3、使用历史数据清理工具之后网络冲突失效
解决方法:将K3_V10.4_GL_SettleAccount中的脚本【TRUNCATE TABLE t_mutex】、K3_V10.3_GL_SettleAccount_t的脚本【DELETE FROM t_mutex】注释即可
分享4、数据清理后应收款汇总表的数据与清理前的不一致
分析原因:
清理时涉及的文件为K3_V10.3_ARP_SettleAccount,脚本为:
DELETE a from t_rp_AdjustRateEntry as a
left join t_rp_AdjustRate as b on a.FInterID=b.FInterID
WHERE b.FInterID is null
DELETE a from t_rp_AdjustAccount as a
left join t_rp_AdjustRate as b on a.FInterID=b.FInterID
WHERE b.FInterID is NULL
上述语句的关联字段a.FInterID=b.FInterID有异常,FInterID在上述数据表中均为标识列,而且如果存在反调汇业务的话,就会导致前者FInterID不等于后者finterid的情况
解决方法:
清理前将上述脚本(只限于上述脚本)的FInterID改成FAdjustID
建议需要再核实应收款、应付款汇总表报表、往来对账等应收应付报表的数据是否还有其他问题
同样地,如果是使用结转的功能,则需要调整K3_V10.3_ARP_SettleAccount_t中与上述同样的脚本:
DELETE a from t_rp_AdjustRateEntry as a
left join t_rp_AdjustRate as b on a.FInterID=b.FInterID
WHERE b.FInterID is null
DELETE a from t_rp_AdjustAccount as a
left join t_rp_AdjustRate as b on a.FInterID=b.FInterID
WHERE b.FInterID is NULL
结转前将上述脚本(只限于上述脚本)的FInterID改成FAdjustID
建议需要再核实应收款、应付款汇总表报表、往来对账等应收应付报表的数据是否还有其他问题
学习了
历史数据清理工具涉及的脚本调整
本文2024-09-16 15:29:05发表“k3wise知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3wise-3095.html