Оператор фильтра SuiteScript 2.0 AnyOf не работает

У меня есть 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» с фильтром internalid с помощью оператора anyof, все работает нормально.

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


person umesh shukla    schedule 10.09.2018    source источник
comment
кто-нибудь может предложить мне решение для этого?   -  person umesh shukla    schedule 12.09.2018
comment
Сможете ли вы опубликовать код, который работает для объекта учетной записи?   -  person jordanw    schedule 13.09.2018
comment
Вот код, в котором оператор AnyOf отлично работает для поиска по аккаунту:   -  person umesh shukla    schedule 28.09.2018
comment
функция getDimensionData () {var objSearch = search.create ({тип: search.Type.ACCOUNT, фильтры: [], столбцы: [internalid, name]}); // фильтр ниже отлично работает с оператором 'anyof' и возвращает учетные записи с внутренними идентификаторами 1 и 2 objSearch.filters.push (search.createFilter ({name: internalid, operator: ANYOF, values: [1, 2]})); вернуть readAllData (objSearch); }   -  person umesh shukla    schedule 28.09.2018


Ответы (1)


Попробуйте этот код в Netsuite Debugger, создайте SavedSearch в Netsuite, не добавляйте в него какой-либо фильтр, сохраните его и получите идентификатор сохраненного поиска и используйте в приведенном ниже скрипте для значения идентификатора. Также замените Period 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;
person Shoaib Mehmood    schedule 10.10.2018