反写规则配置错了,但已经使用并反写了,回滚反写时报错

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

反写规则配置错了,但已经使用并反写了,回滚反写时报错

问题描述

配置了一个反写规则,业务规则中配置了一个计算公式或单位换算,现在单据设计做了改动,把用到的字段改了名字,在反审核或删除历史数据时,回滚反写历史时会报错,提示字段不存在,怎么解决?

解决方法

下游单据在保存反写源单时,会自动把当前使用的反写规则归档生产一条历史反写规则版本,并同步生成一条历史反写数据,记录用了反写规则的那个版本号,反写了那张源单,反写了多少值;

在重新打开历史数据进行修改保存、提交、审核、反审核、删除等操作时,会找到历史反写记录,使用历史反写规则版本进行回滚,然后用最新的反写规则版本重新反写。

如果历史反写规则版本上使用的字段,或配置的单位换算等服务依赖的单据元数据发生了变化,那么就会回滚失败导致中断。

历史反写规则版本是自动产生的,并没有提供维护入口去调整。遇到这种情况,只能是后台修复数据。

思路:

1. 找到下游单据出错的数据内码

2. 查找历史反写数据表(业务数据库,xx_wb),确认使用的历史反写规则版本号(即FRuleVerId字段值)

3. 查找反写规则历史版本表(元数据库 t_botp_writebackruleVer),找到使用的历史反写规则版本记录,确认其原始规则内码 (即FRuleId字段)

4. 在反写规则历史版本表,找到该规则下所有的历史版本,找到最新已经修复的一条版本

5. 编写升级语句,更新历史反写数据表,把旧版反写规则版本id,更新为新版id

参考语句: 

update xx_wb set FRuleVerId = ?新版规则id where FRuleVerId = ?旧版规则id and FSBillId = ?出错源单内码

误区:

1. 不要尝试直接删除反写规则历史版本记录,这会引发新的中断:加载反写历史版本失败提示数据不存在而中断

2. 不要尝试直接修改反写规则历史版本FData内容,反写规则历史版本是有缓存的,后台修改了规则内容根本不会生效,暂时还没有提供直接刷新历史版本缓存的方法。


反写规则配置错了,但已经使用并反写了,回滚反写时报错

问题描述配置了一个反写规则,业务规则中配置了一个计算公式或单位换算,现在单据设计做了改动,把用到的字段改了名字,在反审核或删除历史...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息