2016-01-15 95 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);