反写规则配置错了,但已经使用并反写了,回滚反写时报错
问题描述
配置了一个反写规则,业务规则中配置了一个计算公式或单位换算,现在单据设计做了改动,把用到的字段改了名字,在反审核或删除历史数据时,回滚反写历史时会报错,提示字段不存在,怎么解决?
解决方法
下游单据在保存反写源单时,会自动把当前使用的反写规则归档生产一条历史反写规则版本,并同步生成一条历史反写数据,记录用了反写规则的那个版本号,反写了那张源单,反写了多少值;
在重新打开历史数据进行修改保存、提交、审核、反审核、删除等操作时,会找到历史反写记录,使用历史反写规则版本进行回滚,然后用最新的反写规则版本重新反写。
如果历史反写规则版本上使用的字段,或配置的单位换算等服务依赖的单据元数据发生了变化,那么就会回滚失败导致中断。
历史反写规则版本是自动产生的,并没有提供维护入口去调整。遇到这种情况,只能是后台修复数据。
思路:
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内容,反写规则历史版本是有缓存的,后台修改了规则内容根本不会生效,暂时还没有提供直接刷新历史版本缓存的方法。
反写规则配置错了,但已经使用并反写了,回滚反写时报错
本文2024-09-23 00:25:36发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139390.html