单据关联关系丢失问题排查思路
1 场景
场景1:源单下查不到目标单。
场景2:源单下推完目标单,然后保存目标单,发现上查不到源单。
场景3:保存目标单未反写源单,查询数据库发现关联关系丢失。
2 问题分析
下推生成的单据,查询数据库没有关联关系,有如下几种可能:
1)转换规则配置界面,没有勾选“记录关联关系”参数:
下推时就不会往lk子单据体中,填写源单内码和源单分录行内码;
直接表现:lk子单据体没有记录;
如果没有勾选此选项,下推的单据都不会有关联关系;
如果没有勾选此选项,后台monitor日志不会生成记录;
2)下推后打开下游单据界面,用户删除了下推生成的行,然后添加新行:
删除分录行时,会同步删除其下级lk子单据体记录;
手工新增的行和源单是没有关联关系的;
直接表现:lk子单据体没有记录;
这是用户操作行为,只有在用户按照如此步骤操作才会出现,不是100%出现;
这是正常操作,后台日志不会有异常输出;
3)复制了新行,然后删除了下推生成的行
直接表现:lk子单据体没有记录;
这是用户操作行为,只有在用户按照如此步骤操作才会出现,不是100%出现;
这是正常操作,后台日志不会有异常输出;
4)业务插件代码,在保存(或提交)前,清理了单据体分录行,重新添加
直接表现:lk子单据体没有记录;
这是插件代码行为,出现几率和插件的条件判定有关,可能不会100%出现;
这是插件正常逻辑,后台日志不会有异常输出;
5)下游单据保存、提交,基于lk子单据体中记录的源单内码,建立关联关系,分别存储到各业务单据的分录级关联关系跟踪表xx_tc,以及平台统一的单据级关联关系跟踪表t_botp_billtracker,如此过程出错,也会导致后台关联关系没有建立好
xx_tc表和业务单据数据表在同一个数据库,同一个事务中保存,数据是一致的;
直接表现:lk子单据体有记录,xx_tc表可能有记录、t_botp_billtracker表没有记录;
如果此过程出错,通常是异常级别错误,回滚了数据,会有后台异常日志输出;
6) 用户导出下推生成的单据,修改内容后重新覆盖式导入,单据体采用替代新建的方式导入(或使用webapi保存接口修改单据,与导入逻辑一样)
覆盖式导入,且提单新建单据体行,会删除下推生成的行,然后重新导入,效果就像是新建分录行;
直接表现:lk子单据体没有记录;
这是正常操作,后台日志不会有异常输出;
因为单据先保存,后被覆盖导入,可以用源单内码为关键字,查到2次后台反写日志: 第1次是反写,第2次是撤销反写;
3 排查步骤
1) 检查转换规则,是否勾选记录关联关系选项
2) 检查上机操作日志
确认有没有源单下推日志;
确认下游单据操作过程,逐一排查各操作,重点关注有没有重复保存;
3)打开下游单据列表,点击更多-引入结果查询菜单,查看有没有引入数据
确认有没有引入过,覆盖引入也可能会影响分录行关联关系;
4)检查下游单据数据
查看lk, tc, t_botp_billtracker等各表记录,检查是否完整;
确认问题是在保存前,还是在保存后:lk没记录就是在保存前就有问题;
查看哪些是必须下推生成的字段值,和其他正常单据的差异,推测用户可能改过的字段值;
5)检查后台日志
以源单内码为关键字,搜索日志,检查反写源单过程;
以下游单据内码为关键字,搜索日志,检查下游单据操作过程;
6) 检查下游单据的插件代码
确认有没有在保存前,删除关联生成的分录行;
下推插件;
下游单据的表单插件;
下游单据的保存、提交操作插件;
下游单据的反写插件;
7)实地操作下游单据
确认删除行、新增行按钮,在下推生成的单据上是否可用;
单据关联关系丢失问题排查思路
本文2024-09-23 00:24:31发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139270.html