критерии и EntityFactory

StatusIDPriorityType
Closed4822ВысокийВопрос
ProfileReply
mr.EndoelClient

Существует реализация (вложение Xafari-1.jpg) с использованием EntityFactory. (SPMCurriculum — расширение Curriculum)

К примеру я хочу получить все LimitationInCurriculum, у которых Curriculum.Status = \'MadeOut\'
По идее я должен написать запрос с критерием SPMCurriculum.BackCurriculum.Status = \'MadeOut\'
Однако неважно, что я буду использовать (IObjectSpace.GetObjects<>() или IObjectSpace.GetEntities<>()), я получу сообщение о том, что у SPMCurriculum нету поля BackCurriculum (т.к. IObjectSpace.GetEntities<>() сначала получает реальный тип искомого объекта (в данном случае  LimitationInCurriculum) и после этого выполняет IObjectSpace.GetObjects<>() для этого типа, а стандартный IObjectSpace.GetObjects<>() не будет видеть обратную ссылку у SPMCurriculum).

Возможно ли получить искомые объекты одним запросом?Прошу

Replies

UserDescriptionPosted On
mr.EndoelClient

Извиняюсь, не прикрепил вожение

Attached files:
Сергей Зайцев

Добрый день, Алексей

Прошу Вас прислать небольшой пример, на котором можно было бы  воспроизвести ошибку

mr.EndoelClient

Сергей, добрый день.
Тестовое решение во вложении

Attached files:
mr.EndoelClient

Здравствуйте! Я исправил прежний вариант примера на более показательный. Ошибки возникают в следующих ситуациях:

1) Есть Appearance который запрещает редактирование полей Value1,Value2 объекта LimitationInSPMCurriculum, если SPMCurriculum.BackCurriculum.Status != 'MadeOut' и Limitation.Category = 'Requirement' (выдает ошибку при попытке открыть объект LimitationInSPMCurriculum на редактирование)
2) Есть групповое изменение всех LimitationInSPMCurriculum для выбранного Limitation (Action "Изменение значений ограничения") (LimitationInSPMCurriculum получаются запросом, при выполнении которого получаем ошибку)

Смотрите прикрепленный файл

Attached files:
Александра ЗубрейAgent

Добрый день, Алексей!

Спасибо за дополнительную информацию.

Описанная Вами проблема действительно  имеет место для EntityFactory платформы Xafari.

Будем заниматься её решением и сообщим Вам результат.

Спасибо, Саша.

Александра ЗубрейAgent

Привет!!!

Для решения описанной Вами проблемы ( для задания критерия через расширение (SPMCurriculum) для базового Curriculum), вам необходимо прописать следующее

ObjectSpace.GetEntities(CriteriaOperator.Parse("Limitation = ? && SPMCurriculum.<_SPMCurriculum>BackCurriculum.Status != 'MadeOut'", e.CurrentObject))

вместо

ObjectSpace.GetEntities(CriteriaOperator.Parse("Limitation = ? && SPMCurriculum.BackCurriculum.Status != 'MadeOut'", e.CurrentObject))

Аналогично и для Appearance:

Criteria = "SPMCurriculum.<_SPMCurriculum>BackCurriculum.Status != 'MadeOut'"

вместо

Criteria = "SPMCurriculum.BackCurriculum.Status != 'MadeOut'

Подробнее с использованием данной технологии можно познакомиться по следующим ссылкам:

https://documentation.devexpress.com/#Xaf/CustomDocument3522

https://documentation.devexpress.com/#XPO/CustomDocument2650

Смотрите прикрепленный файл.

Attached files:

× This ticket is closed.