6

夜間に電子メールで送信する必要がある日付範囲に基づいて、カスタムの監査概要レポートを作成しようとしています。私はそれのほとんどを機能させましたが、参照されたエンティティの主要な名前/フィールド/属性を取得するのに助けが必要です. 参照されたエンティティの監査ビューで、データが「systemuser;」のように保存されていることに気付きました。私がやりたいのは、レポートに表示するプライマリ フィールド (プライマリ名、プライマリ属性など) を取得することです。CRM SQL データベースの MetadataSchema ビューを使用して、エンティティの Primary Name 属性を見つける方法を知っている人はいますか? 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. ルックアップのオブジェクト型コードを取得するには2つのケースがあります

    • フィールド名に追加Type(つまり、 CustomerId Type )
    • 上記が利用できない場合は、AttributeMetadata から取得します

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

    Typeフィールドが存在するための正確なルールが何であるかわかりません

于 2013-07-20T16:35:18.557 に答える