对关联关系表做数据修复解决方案
1 业务背景
下游单据是手工录入、引入的,与源单没有关联关系,不支持联查、反写。
源单、目标单都是通过webapi集成进系统,需建立关联关系,以支持上下查。
现在用户需要手工修复与源单的关联关系,以支持联查、反写。
本章介绍如何通过SQL脚本的方式,向后台关联关系表写入数据,以实现建立源单于目标单的关联关系。
2 解决方案
首先了解后台各关联关系表的表结构和数据写入时机。
上图中_tc、_lk、t_botp_billtracker 几个表都记录了关联关系,可以在目标单的“关联配置”属性找到这些表名。
这些表的写入时机:
下推时,生成目标单数据包(还没有保存),会把源单信息,填写在单据上自动创建的子单据体中(_lk),为每条分录行记录其原始来源;
保存时,会根据_lk表中的记录,生成单据到单据之间的关联关系,存储到t_botp_billtracker(所有单据到单据关联统一存储在此表);把分录到分录之间的关系,存储到xx_tc表(每种单据有自己xx_tc表,存储自身单据分录行和源单分录行的关联关系);
反写时,会把反写结果记录在_wb表上,这个表也是各单据分别创建,是xx_tc表的子表。
这些表的用途和使用时机:
查询原始下推数据:xx_lk记录,称为关联子实体,是单据实体的一部分,存储下推时原始的源单信息:可以使用此表追查原始下推时数据;
联查:先到统一的单据到单据关联关系表t_botp_billtracker中,搜索本单的所有源单、目标单,然后在根据源单、目标单类型,到各自分录行关联关系表_tc中,搜索分录行之间的关联关系,再读取_wb表,获取反写历史数据;
按如下步骤进行后台表数据处理:
第一步:
修复系统库 t_botp_billtracker表,该表用于下查
字段说明:
fsbillid 源单单据fid
fstableid 该字段来自 元数据库t_meta_entityinfo 表的ftabelid字段,获取sql:select fstableid from t_meta_entityinfo where ftablename = '源单表单设计里面对应的表名'
ftbillid 目标单单据fid
fttableid 该字段来自 元数据库t_meta_entityinfo 表的ftabelid字段,获取sql:select fstableid from t_meta_entityinfo where ftablename = '目标单表单设计里面对应的表名'
额外说明:
该表的修复可在开发平台搜索botp_billtracker,然后扩展一个保存按钮,然后把上述查询结果依次填到对应空位内
第二步:
修复 tc表,该表在对应下游单据的表单设计器里面,找到【关联配置】-【关联追踪表】,该表在对应业务库内,用于上查
字段说明:
fsbillid 源单单据fid
fstableid 该字段来自 元数据库t_meta_entityinfo 表的ftabelid字段,获取sql:select fstableid from t_meta_entityinfo where ftablename = '源单表单设计里面对应的表名'
fsid 源单的分录id
ftbillid 目标单单据fid
fttableid 该字段来自 元数据库t_meta_entityinfo 表的ftabelid字段,获取sql:select fstableid from t_meta_entityinfo where ftablename = '目标单表单设计里面对应的表名'
ftid 目标单的分录id
额外说明:1.因为该表没有界面,所以fid只能手动填写,无法自动生成;2.如果botp关系配置关联实体里面是分录,则fsid和ftid是对应分录的id
第三步:
修复lk表,该表在对应下游单据的表单设计器里面,找到【关联配置】-【反写字段与记录原单】,该表在对应业务库内。
字段说明:
fid 父实体行内码
fpkid 手动生成的id
fsbillid 源单单据fid
fstableid 该字段来自 元数据库t_meta_entityinfo 表的ftabelid字段,获取sql:select fstableid from t_meta_entityinfo where ftablename = '源单表单设计里面对应的表名'
fseq 行序号
fsid 源单关联实体是单头,为单据内码;源单关联实体是单据体,为分录内码;源单关联实体是子单据体,为子分录id。
对关联关系表做数据修复解决方案
本文2024-09-23 00:24:37发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139281.html