2017-02-23 50 views
3

早晨大師,獲取多個「公式」列的已保存的搜索值

我在Netsuite中有多個「公式」列保存搜索。

例如,有幾個formulapercent' named columns, although the標籤'每個都是唯一的。

但是,當使用nlobjSearchResult.getValue('formulapercent')自然,我只能得到第一個公式最大列值。

如何在getValue中指定哪個的公式列我想返回值爲?

我真的不想使用列號,以防我需要在Netsuite中保存的搜索後面插入新列。

盼望沿nlobjSearchResult.getValue('formulapercent','<label>')

我已經嘗試了多參數選項線的東西,但它不工作。

簡單修復?

乾杯

史蒂夫

回答

3

我通常會做的是將標籤添加到保存的搜索公式列。然後:

var f1Val, f2Val, etc; 
results.forEach(function(res){ 
    var cols = res.getAllColumns(); 
    cols.forEach(function(col){ 
    switch(col.getLabel()){ 
     case 'formula1' : f1Val = res.getValue(col); break; 
     case 'formula2' : f2Val = res.getValue(col); break; 
     ... 
    } 
    }); 
}); 
+0

感謝您的回答。那麼實際返回值呢?我試過帶標籤的getValue(所有列都有一個標籤),但是我得到'null' –

+0

請參閱編輯。您可以使用列本身作爲密鑰 – bknights

+0

謝謝BK,今天早上我會嘗試一下:) –

1

有一個在nlobjSearchResult對象稱爲getAllColumns()的方法。然後我使用公式列的索引來獲取值。

我不知道任何其他方式來獲取公式列的值。請注意,如果您使用此方法,如果更改保存的搜索中列的順序,則會破壞腳本。

1

這適用於我使用SuiteScript 2.0。把它放到一個函數中,並傳入需要的變量

if(join){ 
    if(summary){ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           join: join, 
           summary:summary 
          }); 
      return searchResult 
     } 

    }else{ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           join: join 
          }); 
      return searchResult 
     } 
    } 

}else{ 
    if(summary){ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           summary: summary, 
          }); 
      if((column==7 || column ==8 || column==10 || column==12) && type=='cases'){ 

       return dropDown_Obj[column].getKeyByValue(searchResult) 
      } 
      return searchResult 
     } 

    }else{ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name 
          }); 
      return searchResult 
     } 
    } 
} 
0

以爲我會添加一個我自從學到的答案。

而不是統一編號的列。例如:

var column = [] 
column[0] = new nlobjSearchColumn('formulanumeric').setFormula('myformula1'); 
column[1] = new nlobjSearchColumn('formulanumeric').setFormula('myformula2'); 
searchresults = nlapiSearchRecord(.......); 

取而代之的是,我發現來檢索公式列的值是唯一確定的列的最簡單的方法:

var colformula1 = new nlobjSearchColumn('formulanumeric').setFormula('myformula1'); 
var colformula2 = new nlobjSearchColumn('formulanumeric').setFormula('myformula2'); 

var searchresults = nlapiSearchRecord('item',null,filters,[colformula1,colformula2]); 

然後,爲了搶公式結果:

var formulares1 = searchresults[i].getValue(colformula1'); 
var formulares2 = searchresults[i].getValue(colformula2'); 

如果列順序發生更改,則消除此問題。

認爲這可能有助於某人。