将过滤器添加到事务(工作单)中搜索多个事务ID

时间:2018-05-01 22:53:10

标签: netsuite suitescript2.0

我正在RESTlet中构建搜索。我坚持创建一个基于transactionumber的优雅过滤器。我想用 ANYOF 运算符过滤它,传入值的数组,但这似乎不可能。

我找到的唯一解决方案是将数组预处理成一串数字并使用条件SQL函数来测试它:

search.createFilter({
    name : 'formulanumeric',
    formula :  'case when TO_NUMBER({transactionnumber}) in (' 
        + tranids.join(',')   // e.g.   in (741,744)  
        + ') then 1 else 0 end',
    operator : search.Operator.NOTEQUALTO,
    values : 0
});

当然有一种更好的方法。上面有一个(轻微的)性能命中,将数组转换为字符串,我担心公式数字字段的限制 - 即长度公式字符串。

1 个答案:

答案 0 :(得分:-1)

交易号是一个文本字段,因此您无法在尝试使用 anyof 运算符。您必须将 is 与filterExpressions一起使用,并将它们与运算符结合。

您可以尝试以下类似操作

transactionNumbersList = ['abc', 'xyz'];

var searchFilters = [];

transactionNumbersList.forEach(function (transactionNumber) {
  searchFilters.push(['transactionnumber', 'is', transactionNumber], 'or')
});

// pop trailing `or`
searchFilters.pop();