Wise BOS审批流异常单据数据修复方法

背景:有些客户的审批流设计的非常复杂,元素非常多,可能会出现加载审批流之后再保存时(目前未能找到原因),部分节点的数据丢失,混乱。导致了状态为审批中的单据无法审核也无法反审核。又不能重新调整审批流。导致业务操作中断。
因此使用下面这个方法来清除正在审核中的单据的审批记录,让他们恢复到制单人刚保存的状态。
--审批流编辑再加载过程中发生了异常导致界面上的节点加载不完全,再保存时出现了数据丢失的情况,需要重新编辑审批流;如果存在审核中的单据审批流无法反启用,
--用下面的脚本来清除所有正在审核中的单据的审核过程,将它们返回到未提交状态(刚保存状态)
--以费用报销单为例
--执行前先通过这个脚本查看一下是否你需要改动的单据Select * from icclasstype where FName_CHS = '费用报销单'
--下面是正文
set nocount on
declare @name as nvarchar(50)
set @name = '费用报销单'
declare @classtypeid as int
declare @TableName as nvarchar(50)
declare @sql as nvarchar(4000)
Select @classtypeid = FID,@TableName = FTableName from icclasstype where FName_CHS = '费用报销单'
if isnull(@classtypeid,0) <> 0
begin
Create Table #T1(FID int)
set @sql = N'insert into #T1(FID) select FID from ' + Quotename(@TableName) +N' Where FMultiCheckStatus = 4'
exec(@sql)
set @sql = N'delete ' + Quotename('ICClassMCRecord'+Convert(nvarchar(10),@classtypeid)) + ' Where FBillID in(select FID from #T1)'
--print @sql
exec(@sql)
set @sql = N'delete ' +Quotename('ICClassMCStatus'+Convert(nvarchar(10),@classtypeid))+' Where FBillID in(select FID from #T1)'
--print @sql
exec(@sql)
set @sql = N'Delete ICClassMCTemplateMap where FClassTypeID = '+ Convert(nvarchar(10),@classtypeid) +' and FBillID in(select FID from #T1)'
--print @sql
exec(@sql)
set @sql = N'Update ' + Quotename(@TableName) +N' Set FMultiCheckStatus = 2 Where FMultiCheckStatus = 4'
--print @sql
exec(@sql)
Drop Table #T1
end
Go
执行完上述脚本后,再去调整审批流配置;重新启动审批流再让制单人重新提交审批那些单据。
另外可以增加下面的触发器来避免类似事情发生(无法找到此bug产生的原因,暂时先用此触发器做保存检查避免出现数据丢失的情况)
还是以费用报销单为例
执行脚
Wise BOS审批流异常单据数据修复方法
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



