Ошибка при фильтрации реестра, если условий фильтрации несколько
Шаги:
1. Берём любой реестр, переходим в его настройки, раздел фильтрация
2. Добавляем алгоритм для фильтрации данных
3. Пишем алгоритм: "Состояние in [Аннулирован, На корректировке у инициатора, Не согласован]" (Состояние - это атрибут любого объекта)
4. Тестируем алгоритм, всё работает, код является корректным
5. Сохраняем алгоритм, настройки реестра
6. Обновляем реестр, и получаем ошибку "Caused by: cz.jirutka.rsql.parser.ParseException: Encountered \" \"WHEN \"\" at line 1, column 7.\nWas expecting one of:\n ...\n ...\n \n\tat cz.jirutka.rsql.parser.Parser.generateParseException(Parser.java:384)"
Почему так? Повторюсь, что код корректный с точки зрения Groovy и успешно выполняется в редакторе алгоритма. Непонятно и странно 😐
PS Но работает такой код: "Состояние == Аннулирован || Состояние == На корректировке у инициатора, Состояние == Не согласован"
Комментарии
Причина, скорее всего в том, что алгоритм фильтрации преобразуется Гриндатой в SQL и уже потом выполняется, и такие варианты типа "Состояние in [...]" или "[...].contains(Состояние)" этот преобразователь пока не умеет преобразовывать
Добрый день,
Все верно, на текущий момент алгоритмы фильтрации поддерживают базовые операторы = и != и логические связки and/or и др.
Более подробно можно ознакомиться в соответствующей статье wiki: https://docs.greendata.ru/platform/ru/filter-algorithms.html
Спасибо!