SuiteScript 2.0筛选器运算符AnyOf不起作用

时间:2018-09-10 14:54:51

标签: filter suitescript2.0

我有一个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;
    }
}

让我知道我是否在这里想念东西。

请注意,上述问题仅在保存的搜索中发生,如果我使用'anyof'运算符搜索其他对象(例如带有内部标识符过滤器的'account'对象),效果很好。

更新:今天,在进行了更多测试之后,发现它仅在“ postingperiod”过滤器中发生。

1 个答案:

答案 0 :(得分:0)

在Netsuite调试器中尝试此代码,在Netsuite中创建一个SavedSearch,不要在其中添加任何过滤器,请保存该过滤器并获取保存的搜索的ID,并在下面的脚本中针对ID值使用。 另外,用您的ID替换周期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;