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
相关产品推荐
相关产品推荐

