【K3Cloud】主对象为新增,明细**以下ids[0]已存在创建成功的异常映射

【K3Cloud】主对象为新增,明细**以下ids[0]已存在创建成功的异常映射

报错信息:
主对象为新增,明细**以下ids[0]已存在创建成功的异常映射
原因:
K3Cloud某些单据在某些情况下,当明细不存在数据时,会有一条id为0的空数据。在集成平台中认为这是一条有效数据。当多个单据存在这种数据时,第二条以及后面同步的单据会异常。
如单据A存在一个明细id为0,单据B也存在一个明细id为0,单据A同步成功后,单据B同步就会报以上错误。
解决方案:
目前没有统一的处理。需要先通过同步前自定义函数将此类数据过滤掉。
示例中的apiName根据实际情况替换。
感谢@刘建彩 提供
Map objData = syncArg.objectData as Map if( objData.object_describe_api_name!= "AR_RECEIVEBILL.BillHead" ){ //主对象数据才做过滤 log.info("no filter:"+objData.object_describe_api_name) return syncArg; } Map order_details = syncArg.details as Map; log.info(order_details) log.info("<<<<<<<<<<<<<<<<<<<<") List yspjdetails=order_details["AR_RECEIVEBILL.RECEIVEBILLREC"] as List; log.info(">>>>>>>>>>>>>>>>") List yspjdetailsnew=[]; if(yspjdetails) { yspjdetails.each{item-> log.info("item"+item) String id = item["_id"]; log.info("数据"+id) if(id!="0") { log.info("进来") yspjdetailsnew.add(item) } } } log.info("新的明细"+yspjdetailsnew) order_details["AR_RECEIVEBILL.RECEIVEBILLREC"]=yspjdetailsnew; syncArg.details=order_details; Map map = ["details":syncArg.details, "objectData":syncArg.objectData,"isCover":true] return map;
2024-05-22
0 0