2016-09-08 58 views
1

我正在做一個Netsuite搜索,但過濾器實際上沒有做任何過濾? 「budgetimport」對象中有314個項目,無論我如何嘗試過濾搜索,每次都會返回所有314個項目。Netsuite搜索過濾條件不起作用

我在想什麼/做錯了什麼?

在此先感謝。

P.S.雖然我在這裏:從搜索中獲得「金額」列中的價值的「最佳」方法是什麼? (應該只有一個項目從搜索返回,但如果有更多?)

//add search columns 
var columns = []; 
columns.push(new nlobjSearchColumn('year')); 
columns.push(new nlobjSearchColumn('department')); 
columns.push(new nlobjSearchColumn('account')); 
columns.push(new nlobjSearchColumn('amount')); 

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('year', null, 'anyof', 'FY 2007', null)); 
filters.push(new nlobjSearchFilter('department', null, 'anyof', 'Bass', null)); 
filters.push(new nlobjSearchFilter('account', null, 'anyof', 'Administration Expenses', null)); 

//execute the search 
var search = nlapiSearchRecord('budgetimport', null, filters, columns); 

回答

2

經過大量的遊戲和挫折之後,問題在於NetSuite中的「非標準」對象,所以「正常」做事方法不適用。

要過濾budgetimport對象,您需要使用「formulatext」並設置過濾條件,例如,

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('formulatext', null, 'is', fiscalyear).setFormula('{Year}')); //NOTE : Capital 'Y' in Year 
filters.push(new nlobjSearchFilter('formulatext', null, 'is', costcentre).setFormula('{department}')); 
0

它看起來像問題是與該記錄類型。我在記錄瀏覽器中找不到任何關於它的信息,所以我不確定允許的過濾器是什麼。問題是這些字段沒有過濾。如果你添加了一個內部id的過濾器並輸入其中一個記錄的內部,它將會過濾(見下文)。我會建議用NetSuite就此提交一個案例,因爲這個記錄似乎是一個缺陷。

filters.push(new nlobjSearchFilter('internalid',null,'is','12345')); 
+0

感謝您的信息,W3bguy。 我花了一點時間來研究這個問題,並且可能有一個可以工作的解決方法...? *穿過手指* 我發送了一條消息給Netsuite,詢問爲什麼'internalid'在過濾條件下工作,但似乎沒有其他事情了?我在等待收到有用的回覆。 – Bellamy

0

我不認爲這個記錄類型在NetSuite中獲得完整的腳本/ savedsearch支持。

我在NetSuite調試器中將以下幾行添加到腳本中以保存已保存的搜索。當我嘗試編輯它時,這部分工作出錯。最有可能不是完全支持的記錄類型。

//var search = nlapiSearchRecord('budgetimport', null, filters, columns); 
var search = nlapiCreateSearch('budgetimport', filters, columns); 
var searchId = search.saveSearch('BudgetImport_SEARCH', 'customsearch_budgetimport_search'); 

如果NetSuite給你一個答案,讓我們更新。

0

之所以篩選器不工作可能的原因FF:

  • 您使用文字作爲當你過濾值,而不是內部ID的
  • 你不傳球達陣使用anyof操作
  • 也沒有必要傳遞null作爲最後PARAM
1

嘗試配對anyof運營商內部的ID,而不是。

例子:

filters.push(new nlobjSearchFilter('year', null, 'anyof', *internal id of 'FY 2007'*, null)); 
0

在這裏看不到此提及,但我遇到了這個問題,當我在我的腳本的一個工作日前:

//add search filters 
var filters = []; 
filters.push(new nlobjSearchFilter('year', null, 'anyof', 'FY 2007', null)); 
filters.push(new nlobjSearchFilter('department', null, 'anyof', 'Bass', null)); 
filters.push(new nlobjSearchFilter('account', null, 'anyof', 'Administration Expenses', null)); 

如果所有的這些字段是從列表中選擇的字段(自定義或不是),那麼你需要引用字段值的內部ID(我說「需要」,因爲這是我必須做的,以便正確地過濾定價) 。

因此,不是使用「2007財年」,而是在其父級列表的上下文中找到其內部ID。

要查找您嘗試過濾的值的內部標識,您可以創建一個保存的搜索,其中列出了值以及它的內部標識,這可以從選擇字段的任何父記錄完成。(這是我必須使用的方法,以便找到價格水平的內部標識,因爲我無法在系統中的其他任何地方找到它)。

如果這是一個自定義列表,請導航到您的自定義列表頁面,找到列表,並確定您要過濾的值的內部標識。