财务报表 - 业务规则
1 简介
1.1 功能介绍
业务规则 本篇内容将从系统操作的角度对业务规则的功能进行完整的说明
1.2 系统路径
【财务报表】→【财务报表体系】→【业务规则】
2 主要操作
2.1 业务规则列表界面
当左边的规则分类选择明细时,功能按钮是完整的,如下:
当左边的规则分类选择的不是明细时,功能按钮如下:
“新增” 只有选中末级规则分类时,才允许新增规则,点击新增按钮后,会进入规则编辑界面。
”删除“ 只有选中规则时,才允许删除,分配多个过程的同一个规则,在一个过程里删除,其他分配的过程里也会被删除。
“提交” 将调试版的可编辑的规则覆盖更新到运行版;提交后,运行状态会更新为已提交。
“生效/失效”选定规则后,设置失效或生效,仅生效且已提交的规则才会被系统调用。
“分配”可将规则分配给报表模板,并设置执行条件。
“调整顺序” 选择可分配规则的过程后,点击,可调整该过程下所有规则的执行顺序。
“导出完整规则” 会将所有生效的运行版规则导出成一个.kdrle文件,文件名称基本格式为RuleScript_体系编码_时间戳
“导入完整规则” 允许导入.kdrle文件,且默认导入的是完整的规则,因此会覆盖更新系统内的所有规则
2.2 业务规则编辑界面
公共库规则编辑界面,如下:
默认引入 仅公共库规则脚本才会有的选项,若勾选,则系统会自动加载该规则脚本,否则需要在其他脚本使用import函数来加载引用
常规规则编辑界面,如下:
只有在IRpt/Radj/EIRpt/ERAdj才可以新增规则
分配过程 指定规则脚本在哪些过程上执行,必需,可多选;公共库规则无此选项
“调试”执行调试版规则脚本,调试规则也会修改系统数据,一般建议在完成逻辑调试后再加入数据计算语句调试。
“提交”将调试版的规则覆盖更新运行版,作为系统真正执行的规则。
“执行情况”可以查看历史调试记录及报表调用分配规则的执行日志。
3 规则脚本编写
Context,即上下文,在规则中使用缩写ctx,可以获取规则执行时的情景(Scenario)、财年(Year)、期间(Period)、组织(Entity)、币别(Currency)和过程(Process)这些维度成员
3.1 维度相关函数
base()
获取指定维度成员下的所有末级成员
示例:entList = E["0000G"].base() //获取0000G的末级组织成员
children()
获取指定维度成员的直接下级成员
示例:entList = E["0000G"].children() //获取0000G的直接下级组织成员
descendant()
获取指定维度成员的所有下级成员
示例:entList = E["0000G"].children() //获取0000G的所有下级组织成员
hierarchy()
获取指定维度成员的所有下级成员对象(含自己)
示例:entList = E["0000G"].hierarchy() //获取0000G的所有下级组织成员(含自己)
in()
指定维度的枚举成员范围,作为参数用于scope()函数
示例:let sc = scope( A.in("R1006","R1007") ) //指定科目范围为"R1006","R1007"
isBase()
判断指定维度成员是否是末级成员,或者,是否是指定维度成员的末级成员
示例:let isBaseEnt = ctx.E.isBase() //判断某一组织成员是否是末级成员
isBaseEnt = E.isBase("0000","0000G") //判断编码为0000的组织成员是否是0000G的末级成员
isChild()
判断指定维度成员是否是指定维度成员的直接下级成员
示例:isChildEnt = E.isChild("0000","0000G") //判断编码hild为0000的组织成员是否是0000G的直接下级成员
isDescendant()
判断指定维度成员是否是指定维度成员的下级成员
示例:isDescendantEnt = E.isDescendant("0000","0000G") //判断编码hild为0000的组织成员是否是0000G的下级成员
isHierarchy()
判断指定维度成员是否是指定维度成员的下级成员(含自己)
示例:isHierarchyEnt = E.isHierarchy("0000","0000G") //判断编码hild为0000的组织成员是否是0000G的下级(含自己)成员
lastPeriod()
获取指定期间的上一期间
示例:let p = ctx.P.lastPeriod() //获取当前期间的上一期间
lastYear()
获取指定财年的上一年
示例:let f = ctx.FY.lastYear() //获取当前财年的上一财年
parent()
获取指定维度成员的父级成员对象
示例:let ctxParentEnt = ctx.E.parent() //获取当前组织的直接父级组织
validBase()
仅组织维度可用,获取指定组织成员的所有有效末级成员对象,有效的定义为参与合并
示例:let vBaseEnts = E["0000G"].validBase() //获取0000G合并节点下的所有有效末级组织成员
validChildren()
仅组织维度可用,获取指定组织成员的所有有效直接下级成员对象,有效的定义为参与合并
示例:let vChildEnts = E["0000G"].validChildren() //获取0000G合并节点下的所有有效下级组织成员
3.2 数据操作函数
ABS()
在计算时取绝对值,在run或runs函数中使用
示例:runs(" v('') = ABS( v('') ) ")
esp()
获取指定投资单位与被投资单位,在指定的情景、财年、期间的各种持股比例
示例:let own = esp(2,2,"0000","0001") //获取组织0000对组织0001的直接持股比例
getCellSet()
获取指定维度成员范围的所有数据集及对应的维度成员组合,维度成员组合中仅包含未唯一指定的维度
示例:let sc = scope();
let cs = getCellSet(sc);
run()
并行执行计算语句
示例:run( scope(),
"v('') = v('')" );
runs()
串行执行计算语句
示例:runs( scope(),
"v('') = v('')" );
v()
从一个确定的维度成员组合上获取一个数据;或者作为run、runs函数里的计算表达式
示例:let dData = v("A@,……" ,0);
3.3 功能性函数
debug()
输出指定的字符串,仅调试生效
fix()…endFix()
如果在一段连续的规则脚本范围内,有相同的维度范围,那么可以在这一段规则的前后分别加上fix(scope())和endFix(),并在scope()中指定好相同的维度范围,那么这一段规则可以缺省scope()中定义了范围的维度
getCache()
将指定的内容放入缓存,在后续使用的时候直接访问而不需要再次从库中获取,常用来缓存维度成员对象
getRuntimeScope()
获取规则执行时的维度范围
log()
指定输出字符串,在调试及智能合并时均会输出,其中智能合并会打印在智能合并的日志中
scope()
维度成员范围指定函数
财务报表 - 业务规则
本文2024-09-22 22:53:03发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-129467.html