【问题标题】:What NScriptType: ServerScript to use in NetSuite field value update scriptWhat NScriptType:在 NetSuite 字段值更新脚本中使用的 ServerScript
【发布时间】:2022-12-18 16:57:18
【问题描述】:

我希望用算术更新多个记录的数字字段,而不仅仅是用新值覆盖当前值。为此,我计划上传一个包含项目标识符和要添加的新值的文件。解析文件并使用自定义搜索来查找相应的记录,然后加载、更新和保存正确的记录。但是,如何运行脚本是我感到困惑的地方。

我已经创建了以前的脚本 beforeLoad 脚本,这些脚本在进入项目的编辑视图时运行,但我还没有使用任何服务器端脚本(我读到从文件柜访问文件时,您必须使用服务器端脚本)。

任何有关服务器脚本类型以及何时使用它们的信息都将不胜感激。谢谢你。

【问题讨论】:

  • 您可以使用 Mass/Update 脚本、Scheduled 脚本或 Map/Reduce 脚本。

标签: javascript oracle netsuite suitescript


【解决方案1】:

对于这种事情,Map/Reduce 脚本是最好的选择

您可以将 fileId 作为参数传递,您的 getInputData 阶段可以加载并返回文件(IIRC 将每一行发送到您的地图阶段)。您的地图阶段必须忽略标题(如果存在)和任何尾随的错误行。

我还没有能够轻松找到我编写的脚本来实现这一点,但我很确定我已经做到了。 通常情况下,虽然我会做这样的事情来将文件处理到地图阶段:

function getInputData(){ 
    try{
        var me = runtime.getCurrentScript();
        
        var targetFileId = <number>me.getParameter({name:'custscript_kotn_att_emp_file'});
        var targetFile = file.load({id:targetFileId});

        log.audit({title: 'getting data', details:targetFile.name +' ' + targetFile.size});
        var empLines = [];
        targetFile.lines.iterator().each(line=>{
            var parts = line.value.split('|');
            if(parts.length >2 && parts.length != expectColumns.length){
                throw new Error('Unexpected line length. Had '+ parts.length +' expected '+ expectColumns.length);
            }
            if(parts.length > 2){
                empLines.push(parts);
            }
            return true;
        });

        log.audit({title: 'got employee lines', details:empLines.length});
        return empLines;
    }catch(e){
        log.error({
            title:"in input stage", 
            details : (e.message || e.toString()) + (e.getStackTrace ? (' 
 
' + e.getStackTrace().join(' 
')) : '')
        });
        return null;
    }


};

function map(ctx){
    const empLine = JSON.parse(ctx.value);
    //you have an array of the parsed line

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多