6

我正在尝试根据需要每晚通过电子邮件发送的日期范围创建自定义审核摘要报告。我已经完成了大部分工作,但在获取引用实体的主要名称/字段/属性方面需要一些帮助。我注意到在引用实体的审核视图中,数据存储为“systemuser;”。我想做的是获取主要字段(主要名称,主要属性,无论它叫什么)以显示在报告上。有谁知道如何使用 CRM SQL 数据库中的 MetadataSchema 视图查找实体的主名称属性?我通过查看 MetadataSchema.Attribute.IsPKAttribute 字段找到了 Primary Key 字段,但我没有看到 Primary Name 字段的任何内容。

此外,如果没有以下审计条目,我将从实体中获取当前值。对于查找字段(如所有者或客户),我如何从元数据中判断哪个字段存储了 ObjectTypeCode?例如,如果我正在查找销售订单上的客户,我知道我可以查看 CustomerIdType 字段以找到 ObjectTypeCode,但我需要从元数据中找到名为 CustomerIdType 的字段。

如果有人对 CRM 的 SQL 端的元数据有任何好的参考,我将不胜感激。

4

1 回答 1

7
  1. 获取所有实体的主要字段的 SQL 查询

    SELECT e.Name as 'entity', a.Name as 'primary field'
    FROM [dbo].EntityView e
    left join [dbo].AttributeView a on e.EntityId = a.EntityId
    where (a.DisplayMask & 256) > 0  --256 is for primary field
    order by e.name
    
  2. 获取查找的对象类型码有两种情况

    • 附加Type到字段名称(即 CustomerId Type
    • 如果以上不可用,请从 AttributeMetadata 获取

      SELECT ReferencedEntityObjectTypeCode
      FROM [Discworld_MSCRM].[dbo].[AttributeView]
      where name = '<field name>' and entityid = '<entity id>'
      

    我不确定类型字段存在的确切规则是什么

于 2013-07-20T16:35:18.557 回答