Создание кастомного фильтра

Коллеги, добрый день! Есть ли в платформе возможность использовать стандартный экранный фильтр для CollectionContainer, в который данные приходят не из БД, а из сервиса? (сервис затягивает данные из сторонней интеграции)
P.S. решил эту задачу при помощи переопределения метода применения фильтра, сценариев Groovy и объекта Scripting, но может есть более правильный путь?

    filter.setBeforeFilterAppliedHandler(new Filter.BeforeFilterAppliedHandler() {
        /**
         * Custom filter executor based on groovy
         */
        @Override
        public boolean beforeFilterApplied() {
            eventsCollection.getMutableItems().clear();
            for(var event:  eventsList) {
                boolean isShowed = true;
                for (var abstractCondition : ((WebFilter) filter).getDelegate().getConditionsTree().getRoots()) {
                    Binding binding = new Binding();
                    binding.setVariable(abstractCondition.getName(), event.getValue(abstractCondition.getName()));
                    binding.setVariable("val", abstractCondition.getParam().getValue());
                    if(! (Boolean) scripting.evaluateGroovy(buildGroovy(abstractCondition, "val"), binding)) {
                        isShowed = false;
                        break;
                    }
                }
                if(isShowed) {
                    eventsCollection.getMutableItems().add(event);
                }
            }
            return false;
        }

        private String buildGroovy(AbstractCondition abstractCondition, String nameValue) {
            if(abstractCondition.getOperator().equals(Op.CONTAINS) ||
                    abstractCondition.getOperator().equals(Op.STARTS_WITH) ||
                    abstractCondition.getOperator().equals(Op.DOES_NOT_CONTAIN) ||
                    abstractCondition.getOperator().equals(Op.ENDS_WITH)) {
                return  "return "+abstractCondition.getName() + "." +
                        abstractCondition.getOperator().forGroovy() + "(" +
                        nameValue + ");";
            } else {
                return  "return "+abstractCondition.getName() + " " +
                        abstractCondition.getOperator().forGroovy() + " "  +
                        nameValue + ";";
            }
        }
    });

Добрый день, @gyrsergey!

К сожалению, в платформе нет такой возможности. В платформе фильтр предназначен для модификации JPQL запроса.
Каких либо “стандартных” подходов для решения данной задачи тоже нет.

Вы используете LoadDelegate? Если да, то можете код из beforeFilterApplied перенести в LoadDelegate, так как он всегда вызывается при вызове dataLoader.load(). Из LoadContext сможете получить дерево условий.

С уважением,
Глеб