Добрый день!
Заметил необычную особенность при фильтрации задач в коде с помощью EQL (клиентский сценарий):
Код:
const tasks = await System.processes._searchTasks()
.from(0)
.size(20)
.where(f => f.__deletedAt.eq(null))
.where("
[performers] in (CurrentUser()) AND
[__item] in (SELECT [__id] FROM [edms_objects.Contract] WHERE ([author] = '019e3a4b-0036-7900-b79e-ac01ca4b94673')");
В примере выше идет фильтрация задач текущего пользователя (Иванов И.И.), где нужно отобразить только те его задачи по договорам, автором которых является другой пользователь Петров П.П. Как я понял, ссылка на договор [edms_objects.Contract] хранится в системном поле задачи [__item].
В итоге возникла интересная ситуация с правами доступа:
- Иванов И.И. имеет задачу TEST по договору Петрова П.П., к которому у первого нет доступа;
- При вызове _searchTasks() с указанным выше фильтром в выборке окажется задача TEST;
- В дальнейшем для Иванова И.И. в виджете выполняется RefItem("edms_objects", "Contract", id).fetch(), где id - идентификатор договора в задаче TEST;
- В результате RefItem(...).fech() ничего не возвращает, т.к. у Иванова И.И. нет доступа к договору Петрова П.П.
Подскажите, пожалуйста, каким образом можно заставить _searchTasks() выполнить EQL поиск задач с учетом ограничения прав доступа?