5

我正在尝试使用他们的 Suitescript API 在 Netsuite 中按库存项目类别实现搜索。以下代码按预期工作,所以我知道我已经成功进行了远程通信。但我对如何按类别进行搜索感到困惑。

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 中按类别搜索项目?

4

2 回答 2

4

去掉内部 ID 号的引号。internalid 的搜索过滤器正在寻找一个数字。

于 2012-07-12T17:42:23.780 回答
0

我检查了记录浏览器,恐怕我找不到有效的记录内部 id 'inventoryitemdetail',你一定弄错了。它必须是“库存项目”。我检查了代码,一切似乎都正常。

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,那么考虑上面的代码。

于 2015-05-21T10:40:40.190 回答