合并报表/财务报表中,如何对存入多维库中的报表数据做重分类?
问题描述:
报表可以对科目进行重分类,一般建议先通过ACCT取数进行重分类。如果取数无法实现重分类,或者项目上需要展示重分类前和重分类后的数,则需要先将数据取过来存到多维库中后再进行重分类。那么,应该如何对存入多维库中的报表数据做重分类?
解决方案:
业务场景
以应收账款和应付账款为例,当对余额进行重分类时:
当应收账款余额为负数时,应该以正数写到应付账款,并在应收账款展示0;
当应付账款余额为负数时,应该以正数写到应收账款,并在应付账款展示0
重分类的思路
1. 先把被重分类科目的值变为0,具体方式为:新增一个重分类审计线索Reclass,在该审计线索上写上一个原值的相反数,最终,原值的审计线索EntityInput+重分类审计线索Reclass1上的相反数,对应科目的ATTotal则展示为0
2. 再把被重分类科目的值写到重分类的目标科目上,具体方法为:在新增的重分类审计线索Reclass上,将需要重分类的数写过来,最终,目标科目的原审计线索EntityInput+重分类审计线索Reclass上的数,目标科目的ATTotal就包含了重分类过来的数
3. 最终,在“默认币报表”看的数据,就是重分类前的数据;在“默认币报表调整后”看的报表数据,就是重分类后的数据。
具体操作
(1)新建一个审计线索ReClass,放到RptDS的下级,聚合算法设置为+;
(2)配置业务规则,放到需要执行的过程上。规则示例如下:
//假设在A、C、D三个组织中执行。实际场景中,哪个组织执行就将编码维护到 [] 中;如果不限制组织,将下边两行以及规则最后的 } 删掉即可
let Entlist = ["A","C","D"]
if(Entlist.includes(CTX_E_CODE)){
//先清空所有ReClass的数据
runs("v('AT@ReClass')=null" );
let AccSc=scope(A["需要执行重分类的科目的上级编码"].base(),AT.in("EntityInput"));
let Cs=getCellSet(AccSc);
Cs.forEach(
function(dc){
AData=-dc.value;
Acc=dc.Account;
RcIc=dc.InternalCompany;
if(AData>0){
runs(
//给需要重分类的科目在ReClass审计线索上写一个相反数,最终在ATTotal看,这个科目的结果就变成了0
"v('AT@ReClass,IC@"+RcIc+",CT@EndingBalance,A@"+ Acc +"')= " + AData,
//把被重分类科目的值写到承载科目上,该例子中是将应收写到应付,所以应付R1001是承载科目,实际是哪个科目要按照情况修改 "v('AT@ReClass,IC@"+RcIc+",CT@EndingBalance,A@R1001')=v('AT@ReClass,IC@"+RcIc+",CT@EndingBalance,A@R1001')+" + AData
);
}
}
)
}
注意事项
该文章是对科目余额进行重分类。如果需要对借贷发生额进行重分类,那么,需要再额外增加借方发生额、贷方发生额两个变动类型成员,先写入未重分类的借贷发生额数据,然后再参考期末余额重分类逻辑,对借方发生额、贷方发生额变动类型成员进行重分类。
规则是一个示例,不能照搬使用。将规则示例复制到系统中后,需要确定项目上需要执行的组织和科目范围,并按照项目自己的组织执行范围、重分类科目范围对规则做修改。
组织范围和科目范围的限定语句,分别对应规则示例中加粗倾斜部分的内容。
如果无法自行按照项目情况修改业务规则,或修改后调试有问题,请提单反馈。
合并报表/财务报表中,如何对存入多维库中的报表数据做重分类?
本文2024-09-22 23:12:50发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-131607.html