经常有实施会遇到这样的问题,需要将科目的核算维度可选改为必录。这个产品的前台已经做了控制,可选无法改成必录。
因为之前的可选状态下,维度可能没有录入数据,改成必录之后,后台保存的之前的历史数据维度依然为空,从程序的角度来说,这个数据是错误的。
但不影响历史数据的查询。
如果业务上确实需要可选改为必录,可以后台通过脚本修改,现提供以下sql语句供大家参考:
以物料维度为例:
1. 第一步,先备份表数据,这个是所有更新后台数据都需要操作的,以防万一,有备无患。
select * into T_BD_ACCOUNTFLEXENTRY_bak from T_BD_ACCOUNTFLEXENTRY ;
select * into T_BD_FLEXITEMGRPENTRY_bak from T_BD_FLEXITEMGRPENTRY ;
2. 在数据库中执行下面的2条语句,注意需要改下对应的科目和维度条件
字段说明:Finputtype = '1' 表示必录,Finputtype = '2' 表示可选
1)
UPDATE T_BD_ACCOUNTFLEXENTRY SET Finputtype = '1' WHERE facctid IN
(SELECT facctid FROM T_BD_ACCOUNT WHERE fnumber = '你要改的科目编码')
AND FDATAFIELDNAME = 'FFLEX8' -- FFLEX8 表示物料维度
2)
UPDATE T_BD_FLEXITEMGRPENTRY SET Finputtype = '1' WHERE FFLEXITEMPROPERTYID IN
(select FFLEXITEMPROPERTYID from T_BD_ACCOUNTFLEXENTRY WHERE facctid IN
(SELECT facctid FROM T_BD_ACCOUNT WHERE fnumber = '你要改的科目编码') )
AND FDATAFIELDNAME = 'FFLEX8'
----具体维度的对应的FDATAFIELDNAME值可以这样查询
执行一下语句找到物料对应的FID
SELECT * FROM T_META_OBJECTTYPE_L WHERE FNAME = '物料' ;
再根据FID 找到对应的FFLEXNUMBER ,这个FFLEXNUMBER 就是物料维度对应的FDATAFIELDNAME
SELECT FFLEXNUMBER FROM T_BD_FLEXITEMPROPERTY WHERE FVALUESOURCE = 'BD_MATERIAL'
注意:
以上操作先在测试库中进行,跟新之后测试下账表是否正常,再去正式库操作。
wl.bmp(528.99KB)
推荐阅读