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