Проверка записи на соответствие фильтру

Всем доброго дня.

Вопрос - есть FilterGroup для поиска записей по объекту.

Можно ли на странице какой-либо записи этого объекта (т.е. в схеме страницы) проверить, соответствует ли данная запись фильтру? Понятно, что можно сделать обычный запрос, в фильтр добавить имеющийся FilterGroup + Id записи, и если вернётся 1 запись в фильтре - то всё ок.

Интересует именно проверка внутри схемы страницы, т.к. колонки могут быть изменены, а изменения - не сохранены при этом.

Нравится

2 комментария
Лучший ответ

Возможно подойдет валидация записей? Там необязательно привязывать всю логику к отображению уведомления пользователю на странице. Отрабатывает до сохранения записи, принадлежит к Terrasoft.configuration, так что по идее может использоваться почти везде. В методах страницы для "MyLookup" добавляется вот так:

            setValidationConfig: function() {

                this.callParent(arguments);

                this.addColumnValidator("MyLookup", this.checkMyLookup);

            },

Сомневаюсь, что стандартно можно. Движок клиентской ESQ отправляет HTTP-запрос к DataService на сервере, а тот преобразует в SQL-запрос к базе. И если записи там ещё нет, в результате выборки её не будет.

Разве что чисто программно проверять под конкретный фильтр вручную или написать свой парсер поля SearchData, где хранится фильтр для динамической группы, разбирать условия и как-то их обрабатывать, то есть, по сути, написать интерпретатор языка фильтров.

Ну, или втихую сохранить запись, проверить, попадает под фильтр и вернуть всё как было.

Возможно подойдет валидация записей? Там необязательно привязывать всю логику к отображению уведомления пользователю на странице. Отрабатывает до сохранения записи, принадлежит к Terrasoft.configuration, так что по идее может использоваться почти везде. В методах страницы для "MyLookup" добавляется вот так:

            setValidationConfig: function() {

                this.callParent(arguments);

                this.addColumnValidator("MyLookup", this.checkMyLookup);

            },

Показать все комментарии