поиск члена службы основных данных по встроенному коду атрибута

Я могу искать участника по EntityMembersGetCriteria, где SearchTerm содержит выражения для пользовательских атрибутов для примера SAP Code = 'abc'.

var criteria = new EntityMembersGetCriteria
        {
            ModelId = new Identifier { Name = Model },
            EntityId = new Identifier { Name = Entity },
            VersionId = new Identifier { Name = Version },
            SearchTerm = searchTerm,
            MemberType = MemberType.Leaf,
            MemberReturnOption = MemberReturnOption.DataAndCounts
        };

Однако это работает с Code='xyz'.

Любая идея, пожалуйста?


person beewest    schedule 11.03.2019    source источник
comment
Проблема в том, что он не распознает «код SAP», но распознает «код» или не находит «abc» и находит «xyz»?   -  person jdweng    schedule 11.03.2019
comment
Имя и код являются встроенными атрибутами MDS. Я не могу искать с этими двумя атрибутами, но могу сделать с другими.   -  person beewest    schedule 12.03.2019


Ответы (1)


SearchTerm устанавливает критерии поиска предложения WHERE для фильтрации записей. Это означает, что нужно ставить точно такие же имена, какие хранятся в БД MDS.

Дело в том, что пользовательские атрибуты (UDA) имеют специальные имена в БД MDS.

Все атрибуты UDA хранятся в следующем формате: uda_{Entity.InternalId}_{Attribute.InternalId}, например uda_2012_45231. В случае Entity.InternalId = 2021 и Attribute.InternalId = 45231.

Итак, вы написали в SearchTerm:

"uda_2012_45231 = 'abc'"

P.S.: Вы можете найти значения внутренних идентификаторов объектов и атрибутов в метод MetadataGet.

ОБНОВЛЕНИЕ: кажется, что атрибуты UDA вообще не работают в SearchTerm. «Имя», «Код», «EnterDTM» (CreatedDateTime) и «LastChgDTM» (UpdatedDateTime) работают, но UDA — нет.

person Lkor    schedule 29.03.2020