Netsuite中的Javascript报告未显示每一行

时间:2016-01-21 21:06:50

标签: javascript underscore.js netsuite

在netsuite的sitebuilder denali的ssp页面中,我有javascript搜索,我建立了从发票文档中提取信息和项目文档的2行。搜索工作得很好,但是正在被展平(即,每个内部id只返回一行结果,尽管某些自定义字段有多个值),目前没有过滤器,主线或其他虽然我已尝试将主线设置为false,但没有任何区别。 相关的代码行是:

		var searchResults = nlapiSearchRecord('invoice', null, filters, columns);
        return _.map(searchResults, function(result) {
          return {
            internalid: result.getValue('internalid'),
            date: result.getValue('trandate'),
            DocNum: result.getValue('tranid'),
			TotalAmount: result.getValue('total'),
			status: result.getValue('entitystatus'),
			PONum: result.getValue('otherrefnum'),
			WellNum: result.getValue('custbody9'),
			WellName: result.getValue('custbody8'),
			fivecode: result.getValue('custitem35','item'),
			desc: result.getValue('itemid','item'),
			Reason: result.getValue('custbody67'),			
			Tech: result.getValue('custbody38')			
          };
        });

如何让每一行返回显示?

1 个答案:

答案 0 :(得分:1)

由于超过1000个结果,NetSuite可能正在跳过订单项。

您可以通过添加搜索列

internalid对结果进行排序
columns.push[new nlobjSearchColumn('internalid').setSort()]

这会显示internalid的多个结果,但搜索结果中可能还有一些发票。

否则,您可以使用以下代码搜索并带来所有结果

var search = nlapiCreateSearch('invoice', filters, columns).runSearch();
var res = [],
    currentRes;

var i = 0;

while(i % 1000 === 0){
  currentRes = (search.getResults(i, i+1000) || []);
  res = res.concat(currentRes);
  i = i + currentRes.length;
}

最后,您可以使用代码展平

return _.map(res, function(result) {
          return {
            internalid: result.getValue('internalid'),
            date: result.getValue('trandate'),
            DocNum: result.getValue('tranid'),
            TotalAmount: result.getValue('total'),
            status: result.getValue('entitystatus'),
            PONum: result.getValue('otherrefnum'),
            WellNum: result.getValue('custbody9'),
            WellName: result.getValue('custbody8'),
            fivecode: result.getValue('custitem35','item'),
            desc: result.getValue('itemid','item'),
            Reason: result.getValue('custbody67'),          
            Tech: result.getValue('custbody38')         
          };
        });