2016-01-15 59 views
1

我有一个超过18,000“结果”的大型nlobjSearchResultSet对象。选择部分nlobjSearchResult

每个结果都是客户的定价记录。单个客户可能有多个记录。

由于18000+条记录在治理点上进行批量更改的成本很高,因此我将迁移到父(客户)记录和子记录(项目),以便我可以将项目定价更改为子列表。

作为此迁移的一部分,是否有一个简单的命令来选择大对象内匹配特定条件(即客户ID)的nlapiSearchResult对象。

这将允许我只用一次搜索来迁移数据,然后只是后续创建/保存新记录格式。

以相关的方式,是否有一个简单的函数调用返回给定的netsuite记录中包含的记录数?对于%进度上下文。

在此先感谢。

回答

0

要获得总记录数,唯一的办法就是做一个保存的搜索,做这样的搜索理想的方法是使用nlobjSearch

下面是获得无限的搜索结果和记录

数量的样本代码
var search = nlapiLoadSearch(null, SAVED_SEARCH_ID).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; 
} 

res.lengthi会给你的记录总数和res会给你所有的结果。

+0

理想情况下,我希望检索没有循环的记录数。但没有担心,这将不得不做,只是认为可能有一个更简单的方法 –

+0

AFAIK,这是不可能的,这是我能想到的 – prasun

+0

否则,是否有一个简单的方法,我的问题的第一部分? –

2

实际上,您可以通过使用添加的聚合列运行搜索来获取行数。对于没有任何聚合列的已保存搜索,这样做的通用方法如下所示:

var res = nlapiSearchRecord('salesorder', 'customsearch29', null, 
    [new nlobjSearchColumn('formulanumeric', null, 'sum').setFormula('1')]); 
var rowCount = res[0].getValue('formulanumeric', null, 'sum'); 
console.log(rowCount);