员工单据中岗位数据少于员工任岗明细数据时,其症状表现与修复方案
【问题描述】
如下图,员工(张三),在员工列表中打开只显示了4行任岗数据
而员工任岗明细中却显示张三有8行数据
因此,存在的问题:员工单据中的岗位信息存在缺失
【解决方案】
出现上述问题可以尝试自动修复,但若员工单据的任岗信息分录存在二开,就需要采用以下手工修复方案,特别注意:手工修复脚本需要专业的二开人员或找金蝶研发确认。
一. 手工修复步骤
1、备份原有数据,备份员工-员工任岗分录对应数据表中的数据;
--SQL SERVER数据库备份语句
SELECT * INTO t_bd_stafftemp20221014 FROM t_bd_stafftemp
--ORACLE数据库备份语句
CREATE TABLE t_bd_stafftemp20221014 AS SELECT * FROM t_bd_stafftemp
2、补数据,将员工任岗明细主数据表中的任岗数据补录到员工-员工任岗分录数据表。
insert into T_BD_STAFFTEMP(FENTRYID,FSTAFFID,FSEQ,FSTARTDATE,FPOSTID,FDEPTID,FID) select a.FTEMPSTAFFID,a.FSTAFFID,0,a.FSTARTDATE,a.FPOSTID,a.FDEPTID,a.FEMPINFOID from t_bd_staff a left join t_bd_stafftemp b on a.FTEMPSTAFFID=b.FENTRYID where b.FENTRYID is null and a.ftempstaffid>0;
update t_bd_stafftemp set FENTRYID=(select b.FTEMPSTAFFID from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FPOSTID=(select b.FPOSTID from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FSTARTDATE=(select b.FSTARTDATE from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FDEPTID=(select b.FDEPTID from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FID=(select b.FEMPINFOID from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FISFIRSTPOST=(select c.FISFIRSTPOST from t_bd_staff b inner join T_BD_STAFFPOSTINFO c on b.FSTAFFID=c.FSTAFFID where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set fworkorgid=(select b.fuseorgid from t_bd_staff b where b.fstaffid=t_bd_stafftemp.fstaffid);
update t_bd_stafftemp set FSEQ=(select MAX(FSEQ)+1 from t_bd_stafftemp b where b.FID=t_bd_stafftemp.FID) where FSEQ=0 ;
--特别注意:以上脚本补录的数据仅包含金蝶预置的字段,若存在二开字段,请手工添加相关sql进行数据补录。
员工单据中岗位数据少于员工任岗明细数据时,其症状表现与修复方案
本文2024-09-23 03:51:37发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161560.html