Как мне искать записи по внутреннему идентификатору в Netsuite's Suitescript?

Я пытаюсь реализовать поиск по категориям инвентаря в Netsuite, используя их API Suitescript. Следующий код работает должным образом, поэтому я знаю, что удаленное соединение успешно установлено. Но я не понимаю, как искать по категориям.

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?


person Adrian Bartholomew    schedule 11.07.2012    source источник


Ответы (2)


Уберите кавычки из внутреннего идентификационного номера. Фильтр поиска для internalid ищет число.

person Corey    schedule 12.07.2012
comment
Не правда. На самом деле это работает в обоих направлениях. Я вам скажу, что будет более эффективным, если я уберу кавычки. Я тестировал его с идентификатором элемента internalid, а не идентификатором категории. В конце концов Netsuite ответила, что не поддерживает поиск внутренних идентификаторов категорий с помощью WSDK. И это отстой. Итак, как мне искать по настраиваемому полю? Я предлагаю ввести настраиваемое поле catid в каждую запись инвентарного элемента и заполнить его внутренним идентификатором непосредственной родительской категории. Но поиск не работает. Любые идеи? - person Adrian Bartholomew; 12.07.2012
comment
Это странно. Я все время ищу по внутреннему идентификатору, но опять же, у нас нет интернет-магазина, так что, возможно, все по-другому. Вы можете добавить фильтр для настраиваемых полей так же, как и для полей по умолчанию, просто используйте идентификатор поля: new nlobjSearchFilter ('custentity_new_field', null, 'is', '60635') - person Corey; 12.07.2012
comment
Ok. Объяснить, что. Я создал настраиваемое поле под названием «catid». Его внутренний идентификатор - «52452». Я пробовал: var filters [0] = new nlobjSearchFilter ('catid', null, 'is', '52452'); nlapiSearchRecord ('inventoryitem', null, фильтры, столбцы); Это не сработало. - person Adrian Bartholomew; 12.07.2012
comment
Хорошо, catid - это ваша метка для настраиваемого поля, вам нужно поместить внутреннюю строку идентификатора для этого поля в фильтр. Я предполагаю, что это поле сущности, да? В таком случае перейдите в раздел «Настройка» - ›Настройка -› Поля сущностей и возьмите идентификатор созданного вами поля. Он будет в форме custentity_catid, если вы установите для него идентификатор, в противном случае он будет похож на custentity165 или любое другое число, которое вы укажете в настраиваемых полях. - person Corey; 12.07.2012
comment
Отметьте ответ, если это так, пожалуйста. - person Corey; 13.07.2012

Я проверил браузер записей и боюсь, что не смог найти действительный внутренний идентификатор записи 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);
}

Если это должен быть инвентарный элемент, рассмотрите приведенный выше код.

person Uma Kanth    schedule 21.05.2015