Оператор фильтра SuiteScript 2.0 AnyOf не работает - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть SuiteScript 2.0, который загружает и поисковый запрос сохраняет сохраненный поиск с фильтром периода публикации.В моем фильтре я использую оператор anyof, который не работает для поля postingperiod

ниже приведен пример моего кода:

function getTransactionData(datain)
{
    try
    {

        var objSearch = search.load(
        {
            id: datain.savedsearchid
        });

        objSearch.filters.push(search.createFilter({ name: "postingperiod",  operator: "ANYOF", values: ["42", "43"]}));
    //above filter filters only record with internalid 42 
        result = readAllData(objSearch);
        return result;
    }
    catch (ex)
    {
        log.error("getTransactionData", ex);
        throw ex;
    }
}

дайте мне знать, если я что-то здесь упустил.

Обратите внимание, выше, проблема возникает только для сохраненного поиска, если я ищу другой объект, например, объект «account» с помощью внутреннего фильтра, используя оператор «anyof», работает нормально.

Обновление: Сегодня после дополнительных испытаний выяснилось, что это происходит только для фильтра 'postingperiod'.

1 Ответ

0 голосов
/ 10 октября 2018

Попробуйте этот код в Netsuite Debugger, создайте SavedSearch в Netsuite, не добавляйте в него никакой фильтр, сохраните его и получите идентификатор сохраненного поиска и используйте в приведенном ниже сценарии значение id. Также замените идентификатор периода своим.

require(['N/runtime','N/search'],
    function (runtime,search) {
    var invoiceSearchObj = search.load({
       type: "invoice",
       id: '<your search id>',

       columns:
       [
          search.createColumn({
             name: "trandate",
             sort: search.Sort.ASC,
             label: "Date"
          })
       ]
    });


    invoiceSearchObj.filters.push(search.createFilter({ name: "postingperiod",  operator: "ANYOF", values: ["<your period value>"]}));
    invoiceSearchObj.filters.push(search.createFilter({ name: "mainline",  operator: "is", values : "T"}));


var searchResultCount = invoiceSearchObj.runPaged().count;
log.debug("invoiceSearchObj result count",searchResultCount);
invoiceSearchObj.run().each(function(result){
   // .run().each has a limit of 4,000 results
   return true;
});

});
var a=0;
...