【问题标题】:* Suitescript 2.0 * How can update the status of a custom record from Map Reduce script?* Suitescript 2.0 * 如何从 Map Reduce 脚本更新自定义记录的状态?
【发布时间】:2016-11-28 22:01:26
【问题描述】:

所以我想做的就是如果 m/r 脚本失败,从 m/r 脚本更新自定义记录上的相应下拉值。

如何在 SuiteScript 2.0 中做到这一点

【问题讨论】:

    标签: netsuite suitescript


    【解决方案1】:

    您可以使用摘要步骤来获取 Map Reduce 脚本中发生的错误。以下代码应该可以帮助您实现这一目标:

    function summarize(summary) {
        handleErrors(summary);
        handleSummaryOutput(summary.output);
    
        //*********** HELPER FUNCTIONS ***********
    
        function handleErrors(summary) {
            var errorsArray = getErrorsArray(summary);
            if(!errorsArray || !errorsArray.length){
                log.debug('No errors encountered');
                return;
            }
    
            for (var i in errorsArray) {
                log.error('Error ' + i, errorsArray[i]);
            }
    
            if(errorsArray && errorsArray.length){
                //
                //INSERT YOUR CODE HERE
                //
            }
    
            return errorsArray;
    
            //*********** HELPER FUNCTIONS ***********
            function getErrorsArray(summary){
                var errorsArray = [];
    
                if (summary.inputSummary.error){
                    log.audit('Input Error', summary.inputSummary.error);
                    errorsArray.push('Input Error | MSG: ' + summary.inputSummary.error);
                }
    
                summary.mapSummary.errors.iterator().each(function (key, e){
                    var errorString = getErrorString(e);
                    log.audit('Map Error', 'KEY: ' + key + ' | ERROR: ' + errorString);
                    errorsArray.push('Map Error | KEY: ' + key + ' | ERROR: ' + errorString);
                    return true; //Must return true to keep looping
                });
    
                summary.reduceSummary.errors.iterator().each(function (key, e){
                    var errorString = getErrorString(e);
                    log.audit('Reduce Error', 'KEY: ' + key + ' | MSG: ' + errorString);
                    errorsArray.push('Reduce Error | KEY: ' + key + ' | MSG: ' + errorString);
                    return true; //Must return true to keep looping
                });
    
                return errorsArray;
    
                //*********** HELPER FUNCTIONS ***********
                function getErrorString(e){
                    var errorString = '';
                    var errorObj = JSON.parse(e);
                    if (errorObj.type == 'error.SuiteScriptError' || errorObj.type == 'error.UserEventError'){
                        errorString = errorObj.name + ': ' + errorObj.message;
                    } else {
                        errorString = e;
                    }
                    return errorString;
                }
            }
        }
    
        function handleSummaryOutput(output){
            var contents = '';
            output.iterator().each(function (key, value){
                contents += (key + ' ' + value + '\n');
                return true;
            });
            if(contents){
                log.debug('output', contents);
            }
        }
    }
    

    【讨论】:

    • 谢谢!但是,我需要将下拉列表的值更改为错误,在当前记录上谁称此地图减少。我该怎么做?
    • @FreeMarker12,您需要提供代码示例。如果您已经知道您的记录,只需执行 nlapiSubmitField() 就很简单了。我猜事情没那么简单。 m/r 脚本失败是什么意思? Adolfo Garaza 关于总结是正确的
    • 看到这个://设置记录状态完成 var mergeRecord = record.load({ type: 'customrecordvc_merge_vendor_request', id: '12', isDynamic: true }); mergeRecord.setText({ fieldId: 'custrecordvc_merge_vendor_request_status', text: '完成' }); var mergeRecordId = mergeRecord.save({ enableSourcing: false, ignoreMandatoryFields: false }); --------------> 我正在尝试更改摘要方法中的下拉值
    • 您需要对选项列表使用 setValue,您必须找出“完整”值的 id 是什么。而不是加载记录和保存你最好使用 submitField 像这样: var complete_status_id=1;record.submitFields({type:'customrecordvc_merge_vendor_request',id:12,values:{custrecordvc_merge_vendor_request_status:complete_status_id,},options:{enableSourcing: false,ignoreMandatoryFields:false}});
    • 谢谢!但是,我的问题是关于 id:12.. 我需要获取当前记录 id 而不是硬编码它并且无法做到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多