基础资料分配的时候提示已分配,又无法取消分配怎么办?原创
金蝶云社区-我不会啊
我不会啊
5人赞赏了该文章 859次浏览 未经作者许可,禁止转载编辑于2023年03月29日 10:28:25
封面

分配的时候提示:编码为XXX的基础资料已经配到组织“XXX”中”,如需重新分配清先操作“取消分配”。

image.png

但是取消分配操作的时候提示:目标组织的记录删除步成功导致取消分配失败:内码为XXX的基础资料不存在,可能已经被删除。

image.png

出现这种现象是因为在分配关系表T_ORG_BASEDATAALLOCATEENTRY 中已经记录这个分配关系,但是对应的基础资料表里面却没有目标组织下的该基础资料数据。导致这种数据产生的原因很多:可能是服务器异常中断或重启导致分配过程中断;可能是二开基础资料没有继承受组织控制的基础资料模板,导致删除操作上缺少了BaseDataDeletePlugIn插件,导致在删除基础资料的时候不会清理分配关系表;也可能是旧版本使用WebApi删除的基础资料的时候没有清理掉分配关系表

image.png

解决办法:

删除分配关系表T_ORG_BASEDATAALLOCATEENTRY表中存在,但是在基础资料表中不存在的数据,sql如下:


DELETE T_ORG_BASEDATAALLOCATEENTRY  WHERE FENTRYID in 

(

select a.FENTRYID from T_ORG_BASEDATAALLOCATEENTRY a left join 基础资料表 b on a.FDESTID=b.基础资料表主键ID

where a.FTABLENAME='基础资料表' and b.基础资料表主键ID is null

);


基础资料表可以通过BOS设计器查找表名,以物料为例,表名为T_BD_MATERIAL,主键可以通过数据库查找,为FMATERIALID ,所以物料的脏数据删除语句就是:

DELETE T_ORG_BASEDATAALLOCATEENTRY  WHERE FENTRYID in 

(

select a.FENTRYID from T_ORG_BASEDATAALLOCATEENTRY a left join T_BD_MATERIAL b on a.FDESTID=b.FMATERIALID

where a.FTABLENAME='T_BD_MATERIAL' and b.FMATERIALID is null

);

image.png


赞 5