如何使用MapReduce脚本加载和保存工作订单记录。

huangapple go评论48阅读模式
英文:

How to load and save a work order record using the map reduce script

问题

我试图仅使用Map-Reduce脚本加载和保存工作订单记录。但是我没有看到已加载的工作订单或已保存的工作订单的日志。脚本只执行到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) {
         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);
}

我试图加载和保存工作订单记录,但它没有执行。我试图加载和保存工作订单记录,但它没有加载。

英文:

I am trying to only load and save a work order record using the map-reduce script. But I don't see logs for loaded work orders or saved work orders. the script is executing only until work_order_Id. Please Help!   

Below is my code...

	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);
}

I am trying to load and save work order record. But its not executing.I am trying to load and save a work order record. but it's not loading.

答案1

得分: 0

以下是您要翻译的代码部分:

function getInputData() {
    // 运行一个工单的保存搜索
    return 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"}),
        ]
    });    
}

function map(context) {
    
    // 获取工单ID
    var workOrderId = JSON.parse(context.value).id;    
    log.debug("workOrderId", workOrderId);
    
    // 加载工单
    var wordOrderRecord = record.load({
        type: record.Type.WORK_ORDER,
        id: work_order_Id,
        isDynamic: true,
    });
    log.debug("wordOrderRecord", wordOrderRecord);
    
    // 保存工单
    var recId = wordOrderRecord.save({
        enableSourcing: true,
        ignoreMandatoryFields: true
    });
    log.debug("recId",recId);
}

function summarize(context) {
    // 记录可能发生的任何错误
    context.mapSummary.errors.iterator().each(function (_, errJson) {
        var error = JSON.parse(errJson);
        log.error({title: error.name, details: error.message});
        return true;
    });
}

return {
    getInputData: getInputData,
    map: map,
    summarize: summarize,
};

希望这对您有所帮助。

英文:

I usually like to simply return saved searches in getInputData because it's consistent to work with and you don't have to fuss with the going over 4k search results and having to return arrays of objects that you put together yourself. Usually transforming data to be in the format you want is best done in the map stage.

/**
 * @NScriptType MapReduceScript
 * @NApiVersion 2.x
 */
define(["N/search", "N/record"], function (search, record) {
function getInputData() {
    // run a saved search of work orders
    return 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"}),
        ]
    });    
}

function map(context) {
    
    // get the work order id
    var workOrderId = JSON.parse(context.value).id;    
    log.debug("workOrderId", workOrderId);
    
    // load the work order
    var wordOrderRecord = record.load({
        type: record.Type.WORK_ORDER,
        id: work_order_Id,
        isDynamic: true,
    });
    log.debug("wordOrderRecord", wordOrderRecord);
    
    // save the work order
    var recId = wordOrderRecord.save({
        enableSourcing: true,
        ignoreMandatoryFields: true
    });
    log.debug("recId",recId);
}

function summarize(context) {
    // log any errors that might occur
    context.mapSummary.errors.iterator().each(function (_, errJson) {
        var error = JSON.parse(errJson);
        log.error({title: error.name, details: error.message});
        return true;
    });
}

return {
    getInputData: getInputData,
    map: map,
    summarize: summarize,
};
})

huangapple
  • 本文由 发表于 2023年2月16日 19:31:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/75471645.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定