一、业务场景
在财务报表中,本年累计数与本期数间存在逻辑的相互依赖关系,通过录入本年累计数计算本期数,可减少本期数的取数、抵销等配置工作。
基本逻辑:本期数=本期本年累计数-上期本年累计数
二、解决方案
方案1:
在情景中限制输入类型,实现本期数的倒算,以月报成员为例,具体设置如下图
【注意事项】:【可输入变动类型】中选中【本年累计】后,系统会限制通过报表编制功能录入本期数,若需手工录入本期数,则需要选择全部类型。
方案2:
在【系统配置】-【业务规则】中配置业务规则,根据本年累计数计算本期数。
// 当前期间的上期间,需要注意的是如果使用了13期,那么13期的上期是11期,1期的上期还是1期
let CTX_P_LAST = ctx.P.lastPeriod() //获取当前期间的上一期间
if (CTX_P_CODE == "M_M01") {
CTX_P_LAST = "M_M01";};
if (CTX_P_CODE == "M_M013") {
CTX_P_LAST = "M_M11";};
//1月的本期=1月的本年累计;其他月份的本期=本期的本年累计-上期的本年累计;13期的本期=本期的本年累计-11期的本年累计,包含了12期本期数和13期调整数
//此业务规则需要分配给EJE等过程成员,这样抵销数等才会参与该计算
let sc = scope(A["R2001"].base(),其他维度).except(A.in("1001"));
let vExp = "v('CT@CurrentPeriod') = v('CT@YTD') - v('CT@YTD,P@" + CTX_P_LAST + "')";
if(CTX_P_CODE == "M_M01"){
vExp = "v('CT@CurrentPeriod') = v('CT@YTD')";
};
runs(sc,vExp);
【注意事项】
1.当前期间的上期间,需要注意的是如果使用了13期,那么13期的上期是11期,1期的上期还是1期;
2.业务规则需要分配给EJE等过程成员,这样抵销数等才会参与该计算 。
推荐阅读