反写规则超额检查公式配置错误,禁用反写规则后,删除历史数据提示超额
问题描述
配置了一个反写规则,超额检查公式有些问题,保存下游单据时没有问题,在删除下游单据时,却提示超额,现在把反写规则禁用了,还是提示超额,怎么办?
解决方法
首先,对历史数据进行修改或删除,会按照历史反写规则回滚历史反写值,然后再使用历史反写规则超额检查公式检查是否超额。回滚了历史反写之后,才会用最新的反写规则重新计算、反写源单。
其次,禁用规则对历史数据不起作用,无法通过禁用反写规则解决问题。
出现这种情况,只能使用变通的方法解决:
临时方案一:
1. 扩展反写规则,修改反写规则的计算公式,改为覆盖反写0到源单;
2. 找到需回滚的历史数据,打开重新保存,后台会自动回滚历史反写量,然后使用最新反写规则重新反写,最终源单反写字段被覆盖为0,不会报超额;
3. 删除上述反写规则的扩展,恢复正常的反写规则;
4. 打开需回滚的历史数据,打开重新保存,按最新的反写规则重新反写数据;
5. 弊端:仅适用于1:1下推生成目标单,且只有少量错误数据的修复,直接通过配置规则实现,不需要后台修复数据。如果是1推多单,使用本方案直接把源单关联数量覆盖为0,会把其它下游单据对源单的的反写量也一并覆盖了,从而丢失反写量;
临时方案二:
1. 找到出错的历史数据内码(下游单据的);
2. 查找其历史反写数据表(业务数据库,xx_wb),确认使用的历史反写规则版本号(即FRuleVerId字段值)
3. 查找反写规则历史版本表(元数据库 t_botp_writebackruleVer),找到使用的历史反写规则版本记录,确认其原始规则内码 (即FRuleId字段)
4. 在反写规则列表,找到该规则,修复反写规则的配置错误,确认反写公式、超额检查公式是正确的;
5. 重新下推一条数据,使用修复后的反写规则反写源单成功;
6. 在反写规则历史版本表,找到该规则最新生成的版本id;
7. 编写升级语句,更新历史反写数据表(xx_wb),把旧版反写规则版本id,更新为新版id
8. 适用于大批量数据使用了错误规则反写了数据,需后台修改反写历史记录表xx_wb;
参考语句:
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-139391.html