从EAS向苍穹同步人员,苍穹中已有的分录信息(直接上级信息)被清空

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

从EAS向苍穹同步人员,苍穹中已有的分录信息(直接上级信息)被清空

问题描述:

通过‘预置_人员信息(EAS-苍穹)’方案,用户从EAS向苍穹同步人员信息时,如果EAS中缺失部门分录中的直接上级,而在人员信息同步后于苍穹端手工维护了该信息,那么应该如何避免下次同步时手工维护的直接上级被清空?

解决方案:


找到对应的集成方案:预置_人员信息(EAS-苍穹)

特别说明:所有修改需要结合现场的需求来评估是否满足现场的业务需求,并且经过测试环境验证后更新正式环境。


修改


查看/编辑 转换脚本


处理逻辑

EAS推送数据到苍穹时,先查询苍穹是否存在该数据,存在的话,取出当前苍穹的直接上级字段,根据分录的候选键重新塞到目标数据分录中。

注意点:目标数据中可能不存在当前单据的id,需要重新查询id,由于标准产品已经存在查询用户类型的查询脚本,为保证性能,可以直接在该脚本加一个fid字段,如果目标对象存在id字段,则可以忽略该逻辑。


加入处理脚本其中红色部分为需要加入的部分


if(tar.number== null){return null;}

var sql = "SELECT top 1 fusertype as type,fid from t_SEC_User@basedata where fnumber = ?";

var list = query_list($tar, sql, [tar.number], [VARCHAR]);

// 如果存在该用户,且用户类型不为1,忽略

if(list &&  list[0].type != '1') {

   tar.#_IGNORE_TAG = true;

}

 

if(list && list[0].fid != null){

//eas同步苍穹,部门分录不覆盖直接上级字段,其中fsuperiorid为苍穹直接上级字段,fposition,fdptid为候选键字段,用来做确定需要更新的时那行数据

var entrySql = "SELECT fsuperiorid,fposition,fdptid as fdpt FROM T_SEC_USERPOSITION@SYS where fid=?";

  //查询目标分录结果

  var entrylist = query_list($tar,entrySql, [list[0].fid], [BIGINT]);

if(entrylist){

for(row:entrylist) {

            if(row.fsuperiorid != null){

                     for(var i = 0; i < tar.entryentity.length; i++) {

                                if(tar.entryentity[i].position.zh_CN == row.fposition && tar.entryentity[i].dpt == row.fdpt ){

                              tar.entryentity[i].superior = row.fsuperiorid;

                       }

                }

      }

   }

}

}

查看部门信息分录候选键


附:如需保留目标系统中额外新增的分录信息

在转换脚本中根据部门分录中的部门id作为候选键进行判断,当目标系统中的分录信息不包含该id时,则将该条分录重新添加到写入的分录信息中。


加入处理脚本其中红色部分为需要加入的部分


if(tar.number== null){return null;}

var sql = "SELECT top 1 fusertype as type,fid from t_SEC_User@basedata where fnumber = ?";

var list = query_list($tar, sql, [tar.number], [VARCHAR]);

// 如果存在该用户,且用户类型不为1,忽略

if(list &&  list[0].type != '1') {

   tar.#_IGNORE_TAG = true;

}



//查询苍穹中存在但不是eas的部门分录,并保留该分录信息

if(list && list[0].fid != null){


var entrySql = "SELECT fsuperiorid,fposition,fdptid,fispartjob,fisincharge FROM T_SEC_USERPOSITION@SYS where fid=?";



var entrylist = query_list($tar,entrySql, [list[0].fid], [BIGINT]);


var entry={};

var max_seq=max(tar.entryentity.seq);


if(entrylist){

for(var e : entrylist){

entry={};

//当eas取数的分录不包含该部门信息时,在写入数据中添加苍穹的分录信息

      if(!tar.entryentity[$.dpt==#.e.fdptid]){

    max_seq+=1;

        entry.ispartjob=e.fispartjob;

entry.dpt=e.fdptid;

entry.isincharge=e.fisincharge;

entry.superior =e.fsuperiorid;

entry.seq=max_seq;

        tar.entryentity+=entry;

      }

    }

}

}


集成服务云使用指南:https://club.kdcloud.com/article/45312 

集成服务云新特性发布汇总:https://club.kdcloud.com/article/146134 

集成云常见问题处理合集: https://vip.kingdee.com/article/45556 



从EAS向苍穹同步人员,苍穹中已有的分录信息(直接上级信息)被清空

问题描述:通过‘预置_人员信息(EAS-苍穹)’方案,用户从EAS向苍穹同步人员信息时,如果EAS中缺失部门分录中的直接上级,而在人员信息同...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息