Динамический CRM - SQL-запрос для получения сущности, к которой относится поиск - PullRequest
0 голосов
/ 12 ноября 2018

Где в базе данных CRM найти имя объекта, к которому относится поле поиска?

Например, у меня есть объект Account, который содержит два поля поиска;

  • Контакт учетной записи , который указывает на Contact сущность
  • Арендованное оборудование , которое указывает на Equipment сущность

Как я могу получить название сущности, к которой относится каждое из полей?

Я ожидал увидеть это в таблице MetadataSchema.AttributeLookupValue, но, похоже, это не то место.

В идеале я хотел бы написать запрос для этой информации. Что-то вроде:

SELECT
    AttributeName,
    AttributeTypeName,
    ReferencedEntityName
FROM 
    unknown.TableName

WHERE
    AttributeName IN ('new_AccountContact', 'new_LeasedEquipment')

-- Results:
-- AttributeName        | AttributeTypeName | ReferencedEntityName
-- new_AccountContact   | lookup            | Contact
-- new_LeasedEquipment  | lookup            | Equipment

Буду признателен за любую помощь в достижении этого, спасибо.

1 Ответ

0 голосов
/ 13 ноября 2018

Запрос ниже возвращает основной объект, имя поля поиска и тип целевого объекта поля поиска.

    SELECT e.Name 'primary entity' , a.LogicalName 'lookup field in primary entity' , a.ReferencedEntityObjectTypeCode , e2.LogicalName as 'target entity of the lookup field'
    FROM MetadataSchema.Attribute a inner join MetadataSchema.Entity e on a.EntityId = e.EntityId
                                    inner join MetadataSchema.Entity e2 on a.ReferencedEntityObjectTypeCode=e2.ObjectTypeCode
    WHERE  ReferencedEntityObjectTypeCode <>0
    AND e.name='account'
...