业务流程问题--如果正确删除反写规则原创
12人赞赏了该文章
305次浏览
编辑于2024年01月04日 09:56:58
正常情况下反写规则是无法删除的,只能通过页面禁用,如果需要删除只能通过数据库处理,有以下几种情况需要注意:
情况1、反写规则没有使用过,既没有任何反写记录。
可以直接通过数据库删除此反写规则,需要处理的表(T_BF_WRITEBACKRULE 主表 ,T_BF_WRITEBACKRULE_l 多语言表, t_BF_WriteBackRuleCust 扩展表)
情况2、反写规则有过反写记录。
则先禁用此反写规则,把有相应反写记录的单据保存一遍,让反写的数据还原,最后才能通过数据库删除
情况3、反写规则在数据库删除了,但没有处理相关有反写记录的单据,怎么办?
这种情况单据再次操作往往会报“内码为xxx的反写规则不存在,或已被删除”,如下图,出现这种情况,只能还原相应的反写规则,或者修改反写快照记录。
如何修改反写快照:
1)先找到反写快照记录 select * from t_bf_instanceSnap where FCID like '单据formId%单据内码'
2)把FXMLBODY字段复制出来,取出<xzip></xzip>节点中的值,进行gzip解压,还原为XML数据,找到对应的反写规则,并从xml中去掉(gzip解加密: https://www.bejson.com/encrypt/gzip/)
3)把去除了相应反写规则的xml数据再次进行gzip加密。
4)把加密后的数据放到<xzip></xzip>节点中更新到反写快照表中即可了。
5)删除操作不再报错