"SuiteScript 2.0 entry point scripts must implement one script type function" 错误
"SuiteScript 2.0 entry point scripts must implement one script type function" Error
我正在尝试将此代码上传到 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 时出现此错误:
Notice
SuiteScript 2.0 entry point scripts must implement one script type function.*
这是验证一种费用类别费率的函数的一部分。
我该如何解决这个问题?
提前致谢!
您已将此指定为客户端脚本模块,但尚未为任何客户端脚本入口点分配处理程序。阅读帮助文档 SuiteScript 2.0 Client Script Entry Points and API
,并在您的模块中实现任一入口点。
这是 NetSuite 的 'Entry Point Script Validation' 表示脚本无效,因为它不包含预定义的入口点(事件)函数之一。这些函数是:
fieldChanged
lineInit
pageInit
postSourcing
saveRecord
sublistChanged
validateDelete
validateField
validateInsert
validateLine
您可以通过添加这些入口点之一来绕过此验证并上传脚本,即使它什么都不做。例如,在您的 function (dialog)
函数中,您可以添加一个 pageInit() 函数:
function pageInit(scriptContext) {}
并将您的 return 块更改为:
return {
validadeRate : validadeRate,
pageInit: pageInit
}
现在它有一个有效的入口点,验证应该通过了。
不过,可能还有更简单的方法。看起来(通过 JSDoc 块),您的 validadeRate
函数应该在每次添加子列表行时被触发。这正是 validateLine
入口点的用途。因此,您可以将 return 块中的键更改为“validateLine”
return {
validateLine: validadeRate
}
NetSuite 会在每次添加一行时调用 validadeRate
。
改变return函数如下。并测试一次。
return
{
验证线:验证率
}
我正在尝试将此代码上传到 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 时出现此错误:
Notice
SuiteScript 2.0 entry point scripts must implement one script type function.*
这是验证一种费用类别费率的函数的一部分。
我该如何解决这个问题?
提前致谢!
您已将此指定为客户端脚本模块,但尚未为任何客户端脚本入口点分配处理程序。阅读帮助文档 SuiteScript 2.0 Client Script Entry Points and API
,并在您的模块中实现任一入口点。
这是 NetSuite 的 'Entry Point Script Validation' 表示脚本无效,因为它不包含预定义的入口点(事件)函数之一。这些函数是:
fieldChanged
lineInit
pageInit
postSourcing
saveRecord
sublistChanged
validateDelete
validateField
validateInsert
validateLine
您可以通过添加这些入口点之一来绕过此验证并上传脚本,即使它什么都不做。例如,在您的 function (dialog)
函数中,您可以添加一个 pageInit() 函数:
function pageInit(scriptContext) {}
并将您的 return 块更改为:
return {
validadeRate : validadeRate,
pageInit: pageInit
}
现在它有一个有效的入口点,验证应该通过了。
不过,可能还有更简单的方法。看起来(通过 JSDoc 块),您的 validadeRate
函数应该在每次添加子列表行时被触发。这正是 validateLine
入口点的用途。因此,您可以将 return 块中的键更改为“validateLine”
return {
validateLine: validadeRate
}
NetSuite 会在每次添加一行时调用 validadeRate
。
改变return函数如下。并测试一次。
return { 验证线:验证率 }