【问题标题】:"SuiteScript 2.0 entry point scripts must implement one script type function" Error“SuiteScript 2.0 入口点脚本必须实现一种脚本类型函数”错误
【发布时间】:2020-09-25 14:42:47
【问题描述】:

我正在尝试将此代码上传到 NetSuite

/**
 * @NApiVersion 2.0
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/ui/dialog'],

function(dialog){

   /**
     * Validation function to be executed when sublist line is committed.
     *
     * @param {Object} context
     * @param {Record} context.currentRecord - Current form record
     * @param {string} context.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     */





   function validadeRate(context){

    try{

        var currentRecord = context.currentRecord
        var sublistName = context.sublistId

        if(sublistname ==='expense'){

            var categ = CurrentRecord.getCurrentSublistValue({
                sublistId: sublistName,
                fieldId: 'category'

            })
            if ((categ = 259) && (rate != 0.819)){
                var currIndex = currentRecord.getCurrentSublistIndex({
                    sublistId: sublistName
                })
             currIndex +=1

             var options = {
                title : 'Rate Incorreto!',
                message:'Por favor, verifique o valor informado no campo Rate na linha ' + currIndex + '.',                            
                }
                dialog.alert(options).then(function (result) { }).catch(function(result){})
                    
                return false
             }
            }
            return true
    }
    catch(ex){
        log.error('validateLine: ', ex.message)
    }

   }


    return {

        validadeRate : validadeRate

    }
});

但是当我尝试将文件上传到 Netsuite 时出现此错误:

通知

SuiteScript 2.0 入口点脚本必须实现一种脚本类型函数。*

这是验证某一费用类别费率的函数的一部分。

我该如何解决这个问题?

提前致谢!

【问题讨论】:

    标签: netsuite suitescript2.0


    【解决方案1】:

    这是 NetSuite 的“入口点脚本验证”,说明该脚本无效,因为它不包含预定义的入口点(事件)函数之一。这些功能是:

    字段已更改

    线初始化

    页面初始化

    采购后

    保存记录

    子列表已更改

    验证删除

    验证字段

    验证插入

    验证线

    您可以通过添加其中一个入口点来解决此验证并上传脚本,即使它什么也不做。例如,在您的 function (dialog) 函数中,您可以添加一个 pageInit() 函数:

    function pageInit(scriptContext) {}
    

    并将您的返回块更改为:

    return {
    
        validadeRate : validadeRate,
        pageInit: pageInit
    
    }
    

    现在它有一个有效的入口点并且验证应该通过了。

    但是,可能还有更简单的方法。看来(通过 JSDoc 块),您的 validadeRate 函数应该在每次添加子列表行时触发。这正是validateLine 入口点的用途。因此,您可以将返回块中的键更改为“validateLine”

    return {
        validateLine: validadeRate
    }
    

    NetSuite 会知道每次添加一行时都调用validadeRate

    【讨论】:

      【解决方案2】:

      您已将其指定为客户端脚本模块,但尚未将处理程序分配给任何客户端脚本入口点。阅读帮助文档SuiteScript 2.0 Client Script Entry Points and API,并在您的模块中实现任一入口点。

      【讨论】:

      • NS 开发人员说“阅读帮助文档 x”而不提供链接是怎么回事
      【解决方案3】:

      如下更改返回函数。并测试一次。


      返回 { 验证线 : 验证率 }

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多