Получения списка Id документов для юзера, который их согласует

В оверайде, при получении списка документов, нужно выбрать документы, которые пользователь должен согласовать.
В AgrStep и AgrStateValue не смог найти указания на согласованта.
Есть ли какой класс, который можно добавить в DataStore.GetAll<…>() по которому можно получить как id согласованта так и id документа?

Если мы говорим про процесс согласования с листом согласования - то это сущности AgreementerUser и ApproverUser (пространство имен BarsUp.Modules.Agreement.CommonWorkflows.Entitites), в которых хранятся данные о согласующих и утверждающих соответственно.
У обоих сущностей есть ссылка на AgreementList.AgrStep и на User, по заполненности поля EndDate можно определить, вынесено ли решение.
Если необходимо отфильтровать только те документы, которые текущий пользователь должен согласовывать конкретно сейчас (то есть подошла его очередь), то нужно найти такие AgreementList, для которых в таблице AgreementerUser имеется запись, имеющая ссылку на текущего пользователя и имеющая минимальный OrderIndex из группы с такой же ссылкой на AgreementList и незаполненным EndDate. А затем уже по AgreementList получить EntityId (либо же предварительно отфильтровать по массиву идентификаторов всех записей реестра, что будет оптимальнее с точки зрения времени выполнения запросов).
Также, при фильтрации нужно отсекать AgreementList со значением поля IsActual == false и AgrStep со значениями полей Deleted == true либо NextAgrStep != null.

Если же речь идет о процессе согласования без листа согласования, то нужно проверить доступность согласования по строке для пользователя в соотвествии с данными в сущностях AgrWfStepUserPermission и AgrWfStepRolePermission (пространство имен BarsUp.Modules.Agreement.Entities).
Вообще, процесс согласования может отличаться от реализованных в модуле платформы и хранить данные о участвующих в согласовании пользователях в других сущностях.

1 Лайк