如何后台修改凭证的核算维度-慎用原创
金蝶云社区-emily
emily
11人赞赏了该文章 2,718次浏览 未经作者许可,禁止转载编辑于2021年06月29日 19:42:32
summary-icon摘要由AI智能服务提供

本文提醒读者强烈不建议后台修改历史期间的凭证核算维度数据,存在高风险,如确需修改需自行承担风险。详细说明了通过后台修改核算维度的步骤,包括新增凭证生成核算维度组合、替换凭证核算维度及修改科目余额表,并根据B核算维度是否已有数据给出不同的处理方法。同时提供了用于测试和替换核算维度的SQL脚本示例,以及查询科目余额表数据的方法。

前言:强烈不建议后台修改历史期间凭证的核算维度数据,存在极大风险,如您必须要修改,风险需自行承担,修改的步骤和后台数据表可参考以下内容。

一、  问题描述

历史期间的凭证,想修改核算维度,如何通过后台处理。

图片.png

图片.png

二、更改方法

1、首先,在系统中新增一个凭证,用来生成我们需要的核算维度组合。

图片.png

图片.png

2、后台替换凭证上的核算维度。

图片.png

3、修改科目余额表中的核算维度数据。

图片.png

由于科目余额表的主键为:账簿+年度+期间+科目+核算维度组合+币别,所以修改核算维度余额表的话,要分以下两种情况:

情况1:从A核算维度修改为B核算维度,B核算维度没有数据;

需要将科目余额表中A核算维度的数据减掉修改的这部分,同时往科目余额表里插入B核算维度的数据;

情况2:从A核算维度修改为B核算维度,B核算维度有数据。

需要将科目余额表中A核算维度的数据减掉修改的这部分,同时将B核算维度的数据加上修改的这部分。

由于逻辑复杂,sql语句不在此提供,可评估实际情况自行撰写语句。

注:数据处理前,请务必做好账套及改动的数据表的备份。

--附:案例中用到的脚本

--做一张测试凭证,后台得到正确的核算维度组合内码
select b.FDETAILID 
from T_GL_VOUCHER a
inner join T_GL_VOUCHERENTRY b on b.FVOUCHERID=a.FVOUCHERID
inner join T_BD_ACCOUNTBOOK c on c.FBOOKID=a.FACCOUNTBOOKID
inner join T_BD_VOUCHERGROUP_L d on d.FVCHGROUPID=a.FVOUCHERGROUPID and d.FLOCALEID=2052
inner join T_BD_ACCOUNT e on e.FACCTID=b.FACCOUNTID
where c.FNUMBER='001'    --输入账簿编码
    and a.FYEAR=2014    --输入年度
    and a.FPERIOD=5        --输入期间
    and d.FNAME='记'    --输入凭证字
    and a.FVOUCHERGROUPNO=1        --输入凭证号
    and e.FNUMBER='1221.03'        --输入科目编码



--替换凭证上的核算维度
select b.FDETAILID
--update b set FDETAILID=100005  --输入上步查询到的核算维度组合内码
from T_GL_VOUCHER a
inner join T_GL_VOUCHERENTRY b on b.FVOUCHERID=a.FVOUCHERID
inner join T_BD_ACCOUNTBOOK c on c.FBOOKID=a.FACCOUNTBOOKID
inner join T_BD_VOUCHERGROUP_L d on d.FVCHGROUPID=a.FVOUCHERGROUPID and d.FLOCALEID=2052
inner join T_BD_ACCOUNT e on e.FACCTID=b.FACCOUNTID
where c.FNUMBER='001'    --输入账簿编码
    and a.FYEAR=2014    --输入年度
    and a.FPERIOD=3        --输入期间
    and d.FNAME='记'    --输入凭证字
    and a.FVOUCHERGROUPNO=3        --输入凭证号
    and e.FNUMBER='1221.03'        --输入科目编码
 

--查询科目余额表的数据
select b.FNUMBER,c.FNUMBER,a.* 
from T_GL_BALANCE a
inner join T_BD_ACCOUNTBOOK b on b.FBOOKID=a.FACCOUNTBOOKID
inner join T_BD_ACCOUNT c on c.FACCTID=a.FACCOUNTID
where b.FNUMBER='001' and c.FNUMBER='1221.03' and a.FYEARPERIOD>=201403 and a.FDETAILID in (100005,100003)


赞 11