'NetSuite中的nlobjSearchColumn包含无效列,或者语法不正确

时间:2016-12-07 17:07:43

标签: javascript netsuite

我是NetSuite的新手,所以我确定这是愚蠢的我做错了,但我正在尝试在脚本中查找帐户的最新支票号码。所以我在CustomerPayment表上为checkNum列设置搜索。我这样做是这样的:

var acct = nlapiGetFieldValue('account');
var paymentFilters = new Array();
paymentFilters[0] = new nlobjSearchFilter('account', null, 'anyof', acct);

var paymentColumns = new Array();
paymentColumns[0] = new nlobjSearchColumn('checknum');

var paymentSearchResults = nlapiSearchRecord('customerpayment', null, paymentFilters, paymentColumns);

但我得到一个“一个nlobjSearchColumn包含一个无效的列,或者没有正确的语法:checknum”错误。我验证了有一个CustomerPayment表,并且其中还有一个checkNum列。至少记录浏览器似乎暗示了这一点。 (也是我第一次使用它)我还验证了acct包含我期望它的值。

我做了几次其他搜索,使用基本相同的代码,它们似乎按预期工作,所以我不确定我做错了什么。例如,此代码似乎有效:

    var filters = new Array();
    filters[0] = new nlobjSearchFilter('account', null, 'anyof', acct);

    var columns = new Array();
    columns[0] = new nlobjSearchColumn('tranid');

    var searchResults = nlapiSearchRecord('check', null, filters, columns); 

无论如何,任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:5)

checknum无法搜索。尝试使用这样的otherrefnum:

var acct = nlapiGetFieldValue('account');
var paymentFilters = new Array();
paymentFilters[0] = new nlobjSearchFilter('account', null, 'anyof', acct);

var paymentColumns = new Array();
paymentColumns[0] = new nlobjSearchColumn('otherrefnum');

var paymentSearchResults = nlapiSearchRecord('customerpayment', null, paymentFilters, paymentColumns);

答案 1 :(得分:1)

虽然checknumcustomerpayment记录中的有效字段,但它不是有效的搜索结果列。

本文档概述了客户付款的所有可编写脚本的字段,而checknum未列在“搜索列”部分中。

NetSuite Record Browser

执行搜索时,我看不到支票编号可用。

答案 2 :(得分:-1)

这是一个罕见的错误,因为列名确实是正确的。你可以像这样解决它:

var filters = new Array();
filters[0] = new nlobjSearchFilter('account', null, 'anyof', acct);

var paymentColumns = new Array();
paymentColumns[0] = new nlobjSearchColumn('internalId');

var paymentSearchResults = nlapiSearchRecord('customerpayment', null, filters, paymentColumns);

for (var i = 0; paymentSearchResults != null && i < paymentSearchResults.length; i++) {

    var customerpayment = nlapiLoadRecord('customerpayment', paymentSearchResults[i].getValue('internalId'));
    var checknum = customerpayment.getFieldValue('checknum');

    nlapiLogExecution('DEBUG', 'checknum', checknum);
}