You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Map Reduce脚本加载保存工单记录失败,仅执行至work_order_Id求助

NetSuite Map Reduce脚本工单加载保存逻辑执行失败排查

我使用Map Reduce脚本仅尝试加载并保存工单(Work Order)记录,但脚本仅执行到work_order_Id的日志输出环节,后续加载、保存的日志均无法看到,加载操作未实际执行。

原代码:

function getInputData(){
    var process_data =[];
    try{
        var workorderSearchObj = search.create({
           type: "workorder",
           filters:
           [
              ["type","anyof","WorkOrd"], 
              "AND", 
              ["mainline","is","T"], 
              "AND", 
              ["status","anyof","WorkOrd:A","WorkOrd:B","WorkOrd:D"]
           ],
           columns:
           [
              search.createColumn({name: "internalid", label: "Internal ID"}),
              search.createColumn({name: "tranid", label: "Document Number"})
           ]
        });
        var searchResultCount = workorderSearchObj.runPaged().count;
        log.debug("workorderSearchObj result count",searchResultCount);
        workorderSearchObj.run().each(function(result){
           // .run().each has a limit of 4,000 results
           var work_Order = result.getValue({name:'internalid'});
           var document_no = result.getValue({name:'tranid'});
           process_data.push({
            'work_Order':work_Order,
            'document_no':document_no
        });
           return true;
        });
        
    
    }catch(error){
        log.debug(error);
    }   
        return process_data;
}
 function map(context){
    var process_data=JSON.parse(context.value);
    log.debug('process_data',process_data);
    var work_order_Id = process_data.work_Order;
    log.debug("work_order_Id",work_order_Id);
    var work_Order_obj = record.load({
        type: record.Type.WORK_ORDER,
        id: work_order_Id,
        isDynamic: true
    }); 
   log.debug("work_Order_obj",work_Order_obj);
    var recId=work_Order_obj.save({
        enableSourcing: true,
        ignoreMandatoryFields: true
    });
   log.debug("recId",recId);
}

排查与解决方案:

  • 添加错误捕获逻辑:原map函数未包含try-catch块,加载记录时若抛出异常会直接终止脚本,且无错误日志。需为map函数添加异常捕获,定位具体错误。
  • 验证Internal ID有效性:确认getInputData中获取的internalid为有效字符串/数字,可在map函数中先打印work_order_Id的类型,避免ID格式错误导致加载失败。
  • 检查角色权限:确保脚本部署的角色拥有Work Order的查看、编辑权限,权限不足会导致加载操作静默失败。
  • 调整动态模式设置:若无需动态模式操作,将record.load的isDynamic设为false,减少不必要的复杂度;若必须使用动态模式,需确保后续操作符合动态记录的要求。
  • 确认日志级别:检查脚本部署的日志级别是否设置为Debug,否则log.debug的输出会被过滤。

修改后的map函数示例(添加错误捕获):

function map(context){
    try {
        var process_data=JSON.parse(context.value);
        log.debug('process_data',process_data);
        var work_order_Id = process_data.work_Order;
        log.debug("work_order_Id",work_order_Id);
        // 打印ID类型,确认有效性
        log.debug("work_order_Id type", typeof work_order_Id);
        
        var work_Order_obj = record.load({
            type: record.Type.WORK_ORDER,
            id: work_order_Id,
            isDynamic: false // 若无动态需求,改为false
        }); 
        log.debug("work_Order_obj internalid", work_Order_obj.id);
        var recId=work_Order_obj.save({
            enableSourcing: true,
            ignoreMandatoryFields: true
        });
        log.debug("recId",recId);
    } catch (error) {
        log.error("Map function error", JSON.stringify(error));
    }
}

内容的提问来源于stack exchange,提问作者user15989047

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:20:20