SuiteScript 2.0 TypeError 无法调用未定义的方法 "getValue"
SuiteScript 2.0 TypeError Cannot call method "getValue" of undefined
我正在尝试使用下面的代码从两个交易主体字段中获取值。
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*@param {Record} context.currentRecord
*/
define(['N/record'],
function (msg) {
function beforeSubmit(context) {
try {
var record = context.currentRecord;
var createdDate = record.getValue({
fieldId: 'createddate'
});
var dataNecessidade = record.getValue({
fieldId: 'custbodyek_data_nece_requ_po'
});
console.log(createdDate ,dataNecessidade);
}
catch(ex){
log.error(ex);
}
}
return {
beforeSubmit : beforeSubmit,
};
});
引发的错误是“类型错误:无法调用未定义的方法“getValue””
我哪里做错了?
谢谢!
context
上没有 currentRecord
属性 传递给用户事件,因此错误消息告诉您 record
未定义。查看 beforeSubmit
入口点的文档以找到合适的值。
你试试这样写,我一直都是用这个方法获取字段值
const bfRecord= context.newRecord;
const createdDate = bfRecord.getValue('createddate');
在 SuiteScript 2 上,每个入口点都有不同的参数,因此您需要在帮助中检查这些参数,或者如果您使用像 Eclipse 这样的 IDE,您将在创建新脚本时获得该信息,因此对于 UserEvent 脚本和 beforeSubmit 入口点,您将得到如下内容:
/**
* Function definition to be triggered before record is loaded.
*
* Task #5060 : calculate PO Spent Amount and Balance in realtime
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type
* @Since 2015.2
*/
然后您可以看到上下文参数没有 currentRecord 属性,相反,它有两个其他参数,您可以使用 newRecord 或 oldRecord 所以你的代码可以是这样的:
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*@param {Record} context.currentRecord
*/
define(['N/record'],
function (msg) {
// are you aware that you are "injecting" the 'N/record' library into the 'msg' variable ???
function beforeSubmit(context) {
try {
var record = context.newRecord;
var createdDate = record.getValue({
fieldId: 'createddate'
});
var dataNecessidade = record.getValue({
fieldId: 'custbodyek_data_nece_requ_po'
});
console.log(createdDate ,dataNecessidade);
}
catch(ex){
log.error(ex);
}
}
return {
beforeSubmit : beforeSubmit,
};
});
我正在尝试使用下面的代码从两个交易主体字段中获取值。
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*@param {Record} context.currentRecord
*/
define(['N/record'],
function (msg) {
function beforeSubmit(context) {
try {
var record = context.currentRecord;
var createdDate = record.getValue({
fieldId: 'createddate'
});
var dataNecessidade = record.getValue({
fieldId: 'custbodyek_data_nece_requ_po'
});
console.log(createdDate ,dataNecessidade);
}
catch(ex){
log.error(ex);
}
}
return {
beforeSubmit : beforeSubmit,
};
});
引发的错误是“类型错误:无法调用未定义的方法“getValue””
我哪里做错了?
谢谢!
context
上没有 currentRecord
属性 传递给用户事件,因此错误消息告诉您 record
未定义。查看 beforeSubmit
入口点的文档以找到合适的值。
你试试这样写,我一直都是用这个方法获取字段值
const bfRecord= context.newRecord;
const createdDate = bfRecord.getValue('createddate');
在 SuiteScript 2 上,每个入口点都有不同的参数,因此您需要在帮助中检查这些参数,或者如果您使用像 Eclipse 这样的 IDE,您将在创建新脚本时获得该信息,因此对于 UserEvent 脚本和 beforeSubmit 入口点,您将得到如下内容:
/**
* Function definition to be triggered before record is loaded.
*
* Task #5060 : calculate PO Spent Amount and Balance in realtime
*
* @param {Object} scriptContext
* @param {Record} scriptContext.newRecord - New record
* @param {Record} scriptContext.oldRecord - Old record
* @param {string} scriptContext.type - Trigger type
* @Since 2015.2
*/
然后您可以看到上下文参数没有 currentRecord 属性,相反,它有两个其他参数,您可以使用 newRecord 或 oldRecord 所以你的代码可以是这样的:
/**
*@NApiVersion 2.x
*@NScriptType UserEventScript
*@param {Record} context.currentRecord
*/
define(['N/record'],
function (msg) {
// are you aware that you are "injecting" the 'N/record' library into the 'msg' variable ???
function beforeSubmit(context) {
try {
var record = context.newRecord;
var createdDate = record.getValue({
fieldId: 'createddate'
});
var dataNecessidade = record.getValue({
fieldId: 'custbodyek_data_nece_requ_po'
});
console.log(createdDate ,dataNecessidade);
}
catch(ex){
log.error(ex);
}
}
return {
beforeSubmit : beforeSubmit,
};
});