критерии и EntityFactory

StatusIDPriorityType
Closed4822ВысокийВопрос
Profile Reply
mr.Endoel Client

Существует реализация (вложение 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

User Description Posted On
mr.Endoel Client

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

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

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

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

mr.Endoel Client

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

Attached files:
mr.Endoel Client

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

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.