在 nlapiSearchRecord 列中使用公式
Using formulas within nlapiSearchRecord columns
在脚本中使用临时 nlapiSearchRecord 时,例如:
var filters = new Array();
var columns = new Array();
filters[0] = new nlobjSearchFilter('isinactive', null, 'is', 'F' );
filters[1] = new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0);
filters[2] = new nlobjSearchFilter('internalid', 'vendor', 'anyof', vendorid );
columns[0] = new nlobjSearchColumn('itemid');
columns[1] = new nlobjSearchColumn('entityid', 'vendor');
columns[2] = new nlobjSearchColumn('vendorcode');
columns[3] = new nlobjSearchColumn('formulanumeric');
columns[3].setFormula('{vendorcost}');
columns[4] = new nlobjSearchColumn('vendorpricecurrency');
columns[5] = new nlobjSearchColumn('isinactive');
columns[6] = new nlobjSearchColumn('vendor');
columns[7] = new nlobjSearchColumn('averagecost');
columns[8] = new nlobjSearchColumn('lastpurchaseprice');
columns[9] = new nlobjSearchColumn('custitem_costrepl');
var searchresults = nlapiSearchRecord('item', null, filters, columns );
如何检索第 3 列中公式的值?
我试过 searchresults.getValue(column[3]))
和 searchresults.getValue(3))
但都失败了。
原因是,我们的某些 vendorcost
值是小数点后 4 位或 5 位,但普通搜索 returns 的小数点精度最高为 3。
var filters = new Array();
filters[0] = new nlobjSearchFilter('isinactive', null, 'is', 'F');
filters[1] = new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0);
filters[2] = new nlobjSearchFilter('internalid', 'vendor', 'anyof', vendorid);
var columns = new Array();
columns[0] = new nlobjSearchColumn('itemid');
columns[1] = new nlobjSearchColumn('entityid', 'vendor');
columns[2] = new nlobjSearchColumn('vendorcode');
columns[3] = new nlobjSearchColumn('formulanumeric').setFormula('{vendorcost}'); // you can use formula inline
columns[4] = new nlobjSearchColumn('vendorpricecurrency');
columns[5] = new nlobjSearchColumn('isinactive');
columns[6] = new nlobjSearchColumn('vendor');
columns[7] = new nlobjSearchColumn('averagecost');
columns[8] = new nlobjSearchColumn('lastpurchaseprice');
columns[9] = new nlobjSearchColumn('custitem_costrepl');
var searchresults = nlapiSearchRecord('item', null, filters, columns);
for (var i = 0; searchresults != null && i < searchresults.length; i++) {
var vendorcost = searchresults[i].getValue(columns[3]); // gives you the formula field value
}
您忽略了 searchResults 是一个数组这一事实
并且有多种方式:
选项#1 //始终有效
searchresults[INDEX].getValue(searchresults[INDEX].getAllColumns()[3]);
Option#2 //总是有效——和你试过的一样,但是,你错过了数组
searchresults[i].getValue(columns[3]);
Option#3 //只有当你有一个数字公式时才使用
searchresults[INDEX].getValue('formulanumeric');
在脚本中使用临时 nlapiSearchRecord 时,例如:
var filters = new Array();
var columns = new Array();
filters[0] = new nlobjSearchFilter('isinactive', null, 'is', 'F' );
filters[1] = new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0);
filters[2] = new nlobjSearchFilter('internalid', 'vendor', 'anyof', vendorid );
columns[0] = new nlobjSearchColumn('itemid');
columns[1] = new nlobjSearchColumn('entityid', 'vendor');
columns[2] = new nlobjSearchColumn('vendorcode');
columns[3] = new nlobjSearchColumn('formulanumeric');
columns[3].setFormula('{vendorcost}');
columns[4] = new nlobjSearchColumn('vendorpricecurrency');
columns[5] = new nlobjSearchColumn('isinactive');
columns[6] = new nlobjSearchColumn('vendor');
columns[7] = new nlobjSearchColumn('averagecost');
columns[8] = new nlobjSearchColumn('lastpurchaseprice');
columns[9] = new nlobjSearchColumn('custitem_costrepl');
var searchresults = nlapiSearchRecord('item', null, filters, columns );
如何检索第 3 列中公式的值?
我试过 searchresults.getValue(column[3]))
和 searchresults.getValue(3))
但都失败了。
原因是,我们的某些 vendorcost
值是小数点后 4 位或 5 位,但普通搜索 returns 的小数点精度最高为 3。
var filters = new Array();
filters[0] = new nlobjSearchFilter('isinactive', null, 'is', 'F');
filters[1] = new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0);
filters[2] = new nlobjSearchFilter('internalid', 'vendor', 'anyof', vendorid);
var columns = new Array();
columns[0] = new nlobjSearchColumn('itemid');
columns[1] = new nlobjSearchColumn('entityid', 'vendor');
columns[2] = new nlobjSearchColumn('vendorcode');
columns[3] = new nlobjSearchColumn('formulanumeric').setFormula('{vendorcost}'); // you can use formula inline
columns[4] = new nlobjSearchColumn('vendorpricecurrency');
columns[5] = new nlobjSearchColumn('isinactive');
columns[6] = new nlobjSearchColumn('vendor');
columns[7] = new nlobjSearchColumn('averagecost');
columns[8] = new nlobjSearchColumn('lastpurchaseprice');
columns[9] = new nlobjSearchColumn('custitem_costrepl');
var searchresults = nlapiSearchRecord('item', null, filters, columns);
for (var i = 0; searchresults != null && i < searchresults.length; i++) {
var vendorcost = searchresults[i].getValue(columns[3]); // gives you the formula field value
}
您忽略了 searchResults 是一个数组这一事实
并且有多种方式:
选项#1 //始终有效
searchresults[INDEX].getValue(searchresults[INDEX].getAllColumns()[3]);
Option#2 //总是有效——和你试过的一样,但是,你错过了数组
searchresults[i].getValue(columns[3]);
Option#3 //只有当你有一个数字公式时才使用
searchresults[INDEX].getValue('formulanumeric');