2013-07-19 37 views
6

Ich versuche, einen benutzerdefinierten Auditzusammenfassungsbericht basierend auf einem Datumsbereich zu erstellen, der nachts per E-Mail gesendet werden muss. Ich habe das meiste davon funktioniert, aber brauche Hilfe beim Abrufen des primären Namens/Felds/Attributs für eine referenzierte Entität. Ich bemerkte in der Audit-Ansicht für eine referenzierte Entität, die Daten werden wie 'systemuser;' gespeichert. Ich möchte das Primärfeld (Primärname, Primärattribut, wie es auch genannt wird) im Bericht anzeigen. Kann jemand das primäre Name-Attribut für eine Entität mithilfe der MetadataSchema-Ansichten in der CRM SQL-Datenbank finden? Ich habe das Primärschlüsselfeld gefunden, indem ich das MetadataSchema.Attribute.IsPKAttribute Feld ansehe, aber ich sehe nichts für das Feld Primärer Name.Dynamics CRM 2011 SQL MetadataSchema Primäres Namensattribut

Auch greife ich die aktuellen Werte von den Entitäten, wenn keine folgenden Audit-Einträge sind. Wie kann ich für die Nachschlagefelder (wie Eigentümer oder Kunde) aus den Metadaten erkennen, in welchem ​​Feld der ObjectTypeCode gespeichert ist? Wenn ich beispielsweise den Kunden zu einem Kundenauftrag aufgesucht habe, weiß ich, dass ich das CustomerIdType-Feld nach dem ObjectTypeCode durchsuchen kann, aber ich muss herausfinden, dass das Feld in den Metadaten CustomerIdType heißt.

Wenn jemand gute Referenzen auf die Metadaten von der SQL-Seite von CRM hat, würde ich es sehr begrüßen.

Antwort

7
  1. SQL-Abfrage für alle Entitäten primäre Felder erhalten

    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. Es gibt zwei Fälle Objekttyp Code Lookup

    • anhängen Type zu Feldnamen (dh CustomerId zu erhalten Typ)
    • , wenn oben nicht verfügbar ist, erhalten sie von AttributeMetadata

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

    Ich bin nicht sicher, welche genauen Regeln sind für die Felder Typ

+0

was existiert „&“ bedeutet, wenn Ihr Abfrage? Warum nicht einfach a.DisplayMask = 256? –

+0

@MeggieLuski & ist binär und Operator. Soweit ich mich erinnern kann, speichert dieses Feld andere Flaggen. Die Anweisung & 256 prüft, ob ein bestimmtes Flag gesetzt ist. – MarioZG

Verwandte Themen