2012-07-11 23 views
4

我想實現通過使用他們的API Suitescript在NetSuite的庫存物品的分類搜索。以下代碼按預期工作,所以我知道我已成功進行遠程通信。但是我很難理解如何按類別進行搜索。如何在Netsuite的套件中通過內部ID搜索記錄?

function NSTest() { 
    var items = []; 

    var filters = [ 
     //new nlobjSearchFilter('price',null,'lessthan','20'), 
     new nlobjSearchFilter('thumbnailurl',null,'isnotempty') 
     //new nlobjSearchFilter('internalid',null,'is','60635') 
     ]; 

    var columns = [ 
     new nlobjSearchColumn('itemid'), 
     new nlobjSearchColumn('salesdescription'), 
     new nlobjSearchColumn('storedisplaythumbnail'), 
     new nlobjSearchColumn('baseprice') 
     ]; 

    var results = nlapiSearchRecord('inventoryitemdetail',null,filters,columns); 
    for(var i=0,l=results.length; i < l; i++) { 
     var result = results[i]; 
     var price = result.getValue('baseprice'); 
     var thumbImage = result.getText('storedisplaythumbnail'); 
     var desc = result.getValue('salesdescription'); 
     var name = result.getValue('itemid'); 
     var img = 'http://shopping.netsuite.com'+thumbImage; 
     var item = {desc:desc, price:price, name:name, img:img}; 
     items.push(item); 
    } 
    response.write(JSON.stringify(items)); 
} 

這工作正常,但如果我取消註釋行:

new nlobjSearchFilter('internalid',null,'is','60635') 

事實並非如此。 任何人都可以引導我在Suitescript中按類別搜索項目嗎?

回答

3

以引號關閉內部ID號。 internalid的搜索過濾器正在查找一個數字。

+0

事實並非如此。它實際上兩種方式。我會告訴你,如果我刪除了引號,它似乎更有效率。我用項目內部id的非類別ID進行了測試。 Netsuite終於回覆說,他們不支持與WSDK類別內部查找。這很糟糕。 那麼如何按自定義字段進行搜索?我打算做的是在每個庫存項目記錄中引入一個自定義字段「catid」,並用它的直接父類別的內部id來填充它。但搜索不起作用。有任何想法嗎? – 2012-07-12 17:56:41

+0

這很奇怪。我一直在用內部ID進行搜索,但是之後我們又沒有網絡存儲,所以也許它不同。您可以以同樣的方式作爲默認的字段添加過濾器自定義字段,只要使用該領域的ID: 新nlobjSearchFilter(「custentity_new_field」,NULL,「是」,「60635」) – Corey 2012-07-12 18:33:55

+0

確定。解釋一下。我做了一個名爲'catid'的自定義字段。它的內部是'52452'。 我嘗試: 變種濾波器[0] =新nlobjSearchFilter( 'CATID',NULL, '是', '52452'); nlapiSearchRecord('inventoryitem',null,filters,columns); 它沒有工作。 – 2012-07-12 18:57:20

0

我查了一下記錄瀏覽器,我怕我無法找到一個有效的記錄內部ID「inventoryitemdetail」,你必須有錯吧。它必須是'inventoryitem'。我檢查了代碼,一切似乎工作正常。

function start(request, response) { 
    var searchId = '27890'; 
    var filters = new Array(); 
    filters[0] = new nlobjSearchFilter('internalid', null, 'is',searchId); 
    var columns = new Array(); 
    columns[0] = new nlobjSearchColumn('itemid'); 
    columns[1] = new nlobjSearchColumn('salesdescription'); 
    columns[0] = new nlobjSearchColumn('storedisplaythumbnail'); 
    columns[1] = new nlobjSearchColumn('baseprice'); 

    // var search = nlapiCreateSearch('customer', filters, columns); 
    // var resultSet = search.runSearch(); 
    // var results = resultSet.getResults(0, 100); 
    var results = nlapiSearchRecord('inventoryitem',null,filters,columns); 
    var output = ""; 
    for(var i in results) 
     { 
      output += results[i].getValue('itemid')+"\n"; 
      output += results[i].getValue('salesdescription')+"\n"; 
      output += results[i].getValue('storedisplaythumbnail')+"\n"; 
      output += results[i].getValue('baseprice')+"\n"; 

     } 
    response.write(output); 
} 

如果它必須是inventoryitem,那麼考慮上面的代碼。

相關問題