单据转换引擎(BOTP/DAP)
BOTP(Business Object Translate Platform)业务对象转换平台:主要就是为了解决单据和单据之间的数据转换的问题,而且通过参数配置的方式,让这种转换规则不再是一种固化的规则,而是可以灵活调配的。DAP(dynamic accounting process)单据转换是botp中的一种特殊转换,简而言之,DAP就是只针对生成目标单为凭证的转换。
单据转换主要可以分为【配置期】和【转换期】两大时期;
配置期
I 规则列表查询界面
转换规则通过管理单元隔离。
规则列表界面,能查看到的规则是当前登录管理单元、上级管理单元以及集团上的规则。
II 规则类别
动态会计规则: 业务单据到财务凭证的转换;
主要处理业务数据生成财务数据的过程,相应的业务单据可根据动态会计平台定义的转换规则自动或者批量生成财务凭证
单据转换规则: 业务单据到业务单据(非凭证)的转换;
动态会计规则_利润中心:为利润中心提供生成凭证功能;
III 规则映射
转换规则的映射方式如下:
直接映射:目标对属性对应源对象属性
公式计算:目标对象属性对应运算结果
缺省值:目标对象属性对应默认值,这种默认值一般在下游业务单据保存时自动填充和更新值
IV 分组合并功能
单据分组合并规则是为了将分组字段相同的数值进行合并;一般,分组规则、数值合计、字符合计三项是组合使用的。
分组规则负责进行分组属性的定义以及运行期决定生成的单据是否合并为一张单据,在单据合并的情况下,运用数值合计和字符合计配置将分组到同一个组的对应属性值进行数值加总和字符拼接。
分组规则存在分级的概念,单头为1级;分录为2级;辅助账为3级。简单分别方式可以以属性中的”.”来判别,在所有分组属性都未配置的情况家,将以各个级别的id作为分组规则。
备注:字符合计在高版本中,会进行自动去重,且根据表元数据的长度进行字符的自动截取,避免字符合并过长而导致存储异常的情况。在配置时需注意,需要合并的字符中不能够包含拼接符号。
V 反写规则
目标单据生成后,源单据的某些属性应该被改变,这种改变通常表现为状态更新、某些数值属性值增减等,例如防止源单据被重复生成相应凭证而更新源单“是否生成凭证”的标志位等,从而导致数据的紊乱。
反写规则页签是否显示和允许配置,与上游和下游单据是否保存分录级别的关联关系有关;目前,大部分的单据规则配置界面,已经不展示这个反写页签,即不走转换规则的反写,而走业务单据的代码反写的方式实现。
反写规则页签中出现的字段,必须源单有字段的扩展属性支持,是否支持反写为true,才可使用反写规则。
另外,特别注意,引擎的分写功能出发的时间点,是在下游单据提交时触发。另外,批量反写也常常作为一个性能优化点应用在性能分析和优化中。
反写规则分为一般反写和核销反写
一般反写:通常指直接把目标单据的某些属性值反写到源单据中
核销反写:核销反写通常用来勾稽数量,来标记源单据中有多少数量已经生成了目标单据,还有多少未生成。核销反写通常是需要设置计算公式的
VI 规则过滤/单据过滤
规则过滤是根据单据数据,选择符合条件的规则进行转换,生效时间点是在查询规则期间;其作用是用户选择了一批数据,系统根据这些数据选择符合条件的规则
单据过滤是在确定了使用的转换规则之后,过滤符合条件的单据数据进行转换,生效时间点是在选择规则之后,执行真实转换之前,其作用是用户选择了一批数据和一个转换规则,系统根据这些数据和规则根据数据过滤条件,将其中符合条件的数据进行转换。
规则过滤和单据过滤的判定标准一致,但是单据头的过滤条件和分录级别的过滤条件的判定条件不一致,这一点需要注意。单头过滤需要所选的所有单据全部满足时,规则才被判定为可用;而分录级别的过滤需要所选单据至少有一条分录满足,规则即会被判定为可用。
VII 其他规则配置项
7.1)目标单类型:
指生成的目标单单据的类型;这是在规则创建或者复制后就已经确定的,且无法变更。
另,botp原则上不处理生成凭证的转换,只有dap(规则类型为动态会计规则)才是专门处理生成凭证的转换,dap在生成凭证之后具有凭证特有的后处理和校验操作,具有较强的针对性,能够保证凭证处理结果的合规和完整性。
7.2)多次生成控制
不允许多次生成:单头关系校验且加锁
按分录不允许重复生成:
保存分录关系的单据->查分录关系
不保存分录关系的->先插分录关系,再额外查来源分录id字段,如若两者都没有,则该判定失效。
允许多次生成且不提示
允许多次生成并提示
7.3)所属财务组织
“所属财务组织”是dap规则特有特性,其与单头公司字段互斥;
效果:在运行期校验规则是否被合法组织调用,在配置期字段配置中过滤值列表用;
7.4)日志输出设置
输出日志会损耗部分转换性能,一般用作定位和分析问题所用;同时,日志输出中还会打印各个阶段和转换模块的耗时,可以协助进行性能分析。
日志输出位置:server/profiles/server*/logs/BotpTrace.log;
7.5)分录规则过滤功能
分录规则功能是补丁带出的新功能,主要作用是在执行每行分录转换规则前判定分录规则过滤列所设定的过滤条件是否符合,相当于当前行分录规则的启用开关。恰当的分录规则过滤配置,可以大大降低脚本执行次数,提升整体转换性能。
具体配置可参考课程:https://vip.kingdee.com/school/5931
7.6)用户界面不可见
勾选配置后查询规则时会自动过滤掉该规则。一些特殊场景下,某些规则在查询规则期间不想被选择时可以采用这种方式。
7.7)预分组合并
在转换前,获取分组规则,反向推理原单属性,并以此将原单进行一次预分组处理操作,大数据量可以一定程度提高处理性能;(谨慎使用,建议咨询总部开发后开启)
7.8)特殊借贷排序
特殊借贷排序是DAP规则的特有配置属性,涉及到内部引擎的循环和处理逻辑的变更。
具体表象为:
未开启配置的循环和结果:规则*原单的循环方式,达到借借贷贷的效果;
开启配置的循环和结果:原单*规则的循环方式,达到借贷借贷的效果;
7.9)页面配置
可配置已启用的web扩展界面;即指定转换后打开下游单据的界面、联查打开的界面。
注意:该功能是用做配置web页面寻址所用,作用点在转换过程、联查功能,适用于web扩展多个页面或者单据寻址异常情况的临时解决。
VIII botp脚本和公式
Botp中的脚本灵活性较高,采用Kscript脚本语法,且内置了一些系统函数,例如sql查询函数;脚本在后台执行依赖KScript脚本解析器解析执行;
注意:kscript脚本配置时,遵循以下要求:
字段别名不允许有特殊符号、空格,会导致公式平台解析失败;
所有脚本均以分号结尾;
字符串用双引号引入;
Botp的脚本支持导入和导出,在脚本编辑界面空白处右键即可操作。
8.1)botp中的sql脚本写法
请参考:https://vip.kingdee.com/school/109977304515676672
8.2)自定义函数
请参考:https://vip.kingdee.com/school/112147157712393984
8.3)注册自定义公式
先定义自定义函数的java类(有关自定义公式的定义,可以参见BaseFormulaFunctions类或者BotpFormulaFunctions类),然后在具体需要使用该自定义公式的目标单据上配置扩展属性 billFormulaClass , BOTP引擎在规则定义界面自动将自定义公式的实现类注册到公式平台中。
具体约束为:
注册函数应注册在目标单据的billFormulaClass扩展属性上
注册函数名称以”__BOT”开头;
方法声明第一个参数为Context类型(因为在服务端调用),在使用公式平台时直接略过第一个参数;
实现IFormulaFunctions接口;
转换期
单据转换的主要流程可以大致划分如下图:
I 查询规则
查询规则逻辑,涉及到三个公共系统参数:
BOTP_IS_SHOW_RULES_WITHFILTER--启用规则过滤
BOTP_CTRLUNIT_AUTHOR--是否拥有上级管理单元的BOTP规则的使用权限
当拥有上级管理单元的规则使用权限时,除了查询本级管理单元的规则,而且会逐级向上查询所有上级管理单元的规则;
BOTP_HAS_SUPER_CTRLUNIT --是否合并上级管理单元规则
当参数为是,即合并上级管理单元的规则时,会将所有查询到的规则结果合并并组装成为一个返回结果返回;当参数为否,即不合并上级管理单元的规则时,当在某个管理单元组织下查询到了规则,即立即返回结果。(该参数需要结合BOTP_CTRLUNIT_AUTHOR进行使用)
注意:
1.DAP转换当前所使用的规则不一定就能在规则配置查看界面看到
2.如果多张单据生成凭证,每张单据的主业务组织不同,只会取第一张单据的主业务组织来查询规则,而不会对每张单据分别查询规则生成凭证。
II 转换引擎
转换引擎的内部处理流程比较繁多,这里只做画出主要的流程图供大家了解参考。
2.1)真实转换前
2.2)真实转换过程中
上图中的”引擎处理”工作内部流程可以大致分为以下结构
2.3)转换后
其他功能
I 多种单据生成凭证功能
多种单据生成凭证功能可将不同类型的单据,根据规则配置,合并或者不合并生成凭证,该功能能够打破原单类型的壁障限制。例如:源单为应收单和应付单两种业务单据,通过规则两条规则“应收单-凭证”、“应付单-凭证”生成同一张凭证。
具体操作可以参考附件文档:《多种单据生成凭证文档》
II 单据联查
单据联查功能,可以上查或者下查关联单据;
所谓关联单据,即为转换引擎生成的,后台保存有单据与单据之间关系的单据;
(在较新版本中,也支持联查无标准关联单据、但是存在业务认为具有关联的相关单据,不过需要业务模块自行实现相关关联逻辑查询功能)
单据转换引擎(BOTP/DAP)
本文2024-09-22 20:04:53发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-111337.html