Del via


Beregnede attributter og akkumuleringsattributter

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Beregnede attributter og akkumuleringsattributter er vigtige, fordi brugeren ikke selv skal udføre beregninger og kan fokusere på sit arbejde i stedet. Systemadministratorer kan nu let at definere et felt, der indeholder værdien af mange almindelige beregninger uden at skulle arbejde med en udvikler. Udviklere kan også udnytte platformfunktionerne til at foretage disse beregninger i stedet for i deres egen kode.

Video: Akkumulerede og beregnede felter i Microsoft Dynamics CRM 2015

Dette emne indeholder

Fælles elementer og egenskaber

Beregnede attributter

Akkumuleringsattributter

SourceTypeMasks-optælling

Fælles elementer og egenskaber

Beregnede attributter og akkumuleringsattributter har visse elementer og egenskaber til fælles, for eksempel:

  • De er skrivebeskyttet.

  • De er ikke specifikke for brugeren. Beregningen udføres ved hjælp af en brugerkonto til systemet, så værdierne kan være baseret på poster, som brugeren ellers ikke har rettigheder til at få vist, f.eks. attributter, som har sikkerhed på feltniveau aktiveret.

Alle attributter, der arver fra AttributeMetadata, har en SourceType-egenskab, som indeholder de værdier, der vises i følgende tabel.

Værdi

Beskrivelse

null

Ikke en gyldig attributtype til at være en beregnet attribut eller en akkumuleringsattribut.

0

Simpel attribut. Attributten er ikke defineret som en beregnet attribut eller en akkumuleringsattribut.

1

Beregnet attribut

2

Akkumuleringsattribut

Beregnede attributter og akkumuleringsattributter, der er baseret på eksisterende attributtyper, der arver fra AttributeMetadata. Følgende attributtyper har nye egenskaber:

Hver af disse attributter har følgende egenskaber til at understøtte beregninger og akkumuleringer.

Egenskab

Definition

FormulaDefinition

Indeholder XAML-definitionen på den formel, der bruges til at udføre beregningen eller akkumuleringen. Den eneste understøttede metode til at ændre denne værdi er ved hjælp af formulareditor-programmet.

Du kan få flere oplysninger om konfiguration af formlerne for disse attributter i følgende emner i tilpasningsvejledningen: Definere akkumuleringsfelter og Definere beregnede felter.

SourceTypeMask

Bitmaskeværdien af denne skrivebeskyttede egenskab beskriver de kildetyper, der anvendes i formlen for den beregnede attribut, eller om formlen i en beregnet attribut eller akkumuleringsattribut ikke er gyldig.

  • 0: Udefineret. Standardværdien for simple attributter og akkumuleringsattributter.

  • 1: Simpel. Den beregnede attribut refererer til en attribut i samme post.

  • 2: Relateret. Den beregnede attribut refererer til en attribut i en relateret post.

  • 4: Logical. Den beregnede attribut refererer til en attribut i den samme post, der faktisk er gemt i en anden databasetabel.Flere oplysninger:Logiske attributter

  • 8: Calculated. Den beregnede attribut refererer til en anden beregnet attribut.

  • 16: Rollup. Den beregnede attribut refererer en akkumuleringsattribut.

  • 32: Invalid. Det beregnede felt eller akkumuleringsfeltet ugyldigt.

    Dette vil typisk være, hvor et felt henviser til en attribut, der ikke længere findes.

Bemærk

En eller flere af disse betingelser kan være sand for ethvert beregnet felt eller akkumuleringsfelt. Da dette er en bitmaskeværdi, kan det være nyttigt at bruge SourceTypeMasks-optælling, når der udføres bitvise handlinger.

Beregnede attributter

Beregnede attributter beregnes i realtid, når de hentes. Beregnede attributter kan sammensættes med forskellige datatyper. En beregnet heltalsattribut kan f.eks. referere værdier fra decimal- eller valutaattributter.Flere oplysninger:TechNet: Definere beregnede felter.

Beregnede attributværdier er tilgængelige i pipelinen for hentning af plug-in. Post-billede af opdatering eller oprettelse af objektpost indeholder den beregnede attributværdi i fase 40.Flere oplysninger:Pipeline for hændelseskørsel

Begrænsninger

Du kan ikke bruge værdier i beregnede attributter, der refererer til et relateret objekt, en anden beregnet attribut eller en logisk værdi i det samme objekt, til at sortere data, der returneres af en forespørgsel. Selvom din forespørgsel kan angive, at resultaterne skal sorteres ved hjælp af en beregnet attribut, vil sorteringsretningen blive ignoreret og vil ikke udløse en fejl. Hvis den beregnede attribut kun refererer simple værdier i samme post, fungerer sortering normalt. Du kan bestemme de kilder, der bruges i et beregnet felt, ved hjælp af egenskaben SourceTypeMask på attribut-metadataene.Flere oplysninger:Logiske attributter

Kun attributter fra et umiddelbart overordnet objekt kan bruges i en beregnet attribut.

Gemte forespørgsler, diagrammer og visualiseringer kan maksimalt have 10 entydige beregnede felter.

Beregnede attributter kan referere til andre beregnede attributter i deres formel, men de kan ikke referere til sig selv.

Beregnede attributter har ikke nogen værdier, når en bruger med Microsoft Dynamics 365 til Outlook er offline.

MaxValue- og MinValue-metadataegenskaber kan ikke angives for beregnede attributter

Akkumuleringsattributter

Fordi akkumuleringsattributter bevares i databasen, kan de bruges til filtrering eller sortering ligesom almindelige attributter. Enhver form for proces eller plug-in bruger den senest beregnede værdi for attributten. Akkumuleringsattributværdier beregnes asynkront ved planlagte systemjob. Administratorer kan angive, hvornår et job køres, eller midlertidigt afbryde jobbet. Hver attribut opdateres som standard hver time.Flere oplysninger:TechNet: Definere akkumuleringsfelter.

Når en akkumuleringsattributt oprettes eller opdateres, planlægges jobbet Masseberegn akkumuleringsfelter til at køre om 12 timer. 12-timers forsinkelsen er tiltænkt til at udføre denne ressourcekrævende handling på et tidspunkt, hvor brugerne påvirkes mindst. Når jobbet er fuldført, planlægges det til at køre næste gang 10 år fremme i tiden. Hvis der er et problem med beregningen, bliver dette rapporteret med systemjobbet. Find systemjobbet i Indstillinger > Systemjob for at finde eventuelle fejl i akkumuleringsfelterne.

Tip

Som en udvikler, der tester en løsning i et udviklingsmiljø, kan du muligvis ikke vil vente i 12 timer. Du kan få det til at ske hurtigere. På listen Systemjob skal du bruge visningen Gentagne systemjob til at filtrere listen og finde jobbet Masseberegn akkumuleringsfelter. Når jobbet er valgt, kan du bruge Flere handlinger > Udsæt og indstille tiden til et tidligere tidspunkt.

Hvis du vil udløse oprettelsen af et nyt Masseberegn akkumuleringsfelter-job ved hjælp af programmering, skal du hente AttributeMetadata for akkumuleringsattributten ved hjælp af RetrieveAttributeRequest og bruge UpdateAttributeRequest til at opdatere attributten uden at foretage nogen faktiske ændringer.

Jobbet Masseberegn akkumuleringsfelter udføres straks, når en løsning, der indeholder en akkumuleringsattribut, importeres. Dette forudsætter, at du installerer en løsning på et tidspuntk, hvor brugerne ikke påvirkes negativt.

Hver akkumuleringsattribut for et objekt omfatter også to understøttede attributter for akkumuleringsattributten:

  • <attributten SchemaName>_Date: DateTime – tidspunkt for seneste beregning af akkumulering.

  • <attributten SchemaName>_State: Heltal – tilstanden for beregningen af akkumulering.Flere oplysninger:Værdier for akkumuleringstilstand

Værdier for akkumuleringstilstand

Tilstanden for beregningen af et akkumuleringsfelt er tilgængelig i den tilsvarende <attributten SchemaName>_State-attribut og i egenskaben CalculateRollupFieldResponse.FieldState. Værdier, der angiver tilstanden, vises i følgende tabel.

Tilstandsværdi

Beskrivelse

0

NotCalculated: Attributværdi, der endnu skal beregnes.

1

Calculated: Attributværdien er blevet beregnet pr. tidspunkt for sidste opdatering i attributten <attributten SchemaName>_Date.

2

OverflowError: Beregningen af attributværdien medførte en overløbsfejl.

3

OtherError: Beregningen af attributværdien mislykkedes på grund af en intern fejl. Næste kørsel af beregningsjobbet vil sandsynligvis løse problemet.

4

RetryLimitExceeded: Beregning af attributværdien mislykkedes, fordi det maksimale antal forsøg på at beregne værdien blev overskredet, sandsynligvis på grund af et stort antal samtidigheds- og låsningskonflikter.

5

HierarchicalRecursionLimitReached: Beregning af attributværdien mislykkedes, fordi den maksimale hierarkidybdegrænse for beregning blev nået.

6

LoopDetected: Beregning af attributværdien mislykkedes, fordi der blev registreret en rekursiv løkke i postens hierarki.

Hent en beregnet akkumuleringsfeltværdi med det samme

Akkumuleringsattributter understøtter en CalculateRollupField-meddelelse, som udviklere kan bruge til at beregne en akkumuleringsattributværdi efter behov. Anmodningen og svaret vises i følgende tabel sammen med medlemmerne.

Anmodning/svar

Medlemmer

CalculateRollupFieldRequest

Target: EntityReference for posten.

FieldName: Streng, der repræsenterer det logiske navn på attributten.

CalculateRollupFieldResponse

Entity: Entity, som indeholder akkumuleringsattributten og de supplerende attributter <attributten SchemaName>_Date og <attributten SchemaName>_State.

Denne meddelelse er en synkron handling udelukkende for attributten, der er identificeret i anmodningen. Hvis værdien for posten er inkluderet som en del af andre akkumuleringsfelter, tager værdierne i disse felter ikke den mulige værdiændring, der er forårsaget af at kalde denne metode, i betragtning, før de regelmæssigt planlagte asynkrone job, der udfører disse beregninger, indtræffer.

Begrænsninger

Akkumuleringsattributter kan ikke bruges som en arbejdsproces-hændelse eller vent-betingelse. Disse attributter udløser ikke hændelsen for at udløse arbejdsprocesser.

Attributterne ModifiedBy og ModifiedOn for objektet opdateres ikke, når akkumuleringsattributten opdateres.

Der kan højst defineres 100 akkumuleringsattributter i en organisation. Hvert objekt kan ikke have mere end 10 akkumuleringsattributter.

En akkumuleringsattribut-formel kan ikke referere til en anden akkumuleringsattribut.

En akkumuleringsattribut-formel kan ikke referere til komplekse beregnede attributter. Der kan kun bruges beregnede attributter, der henviser til simple attributter i den samme post, sammen med akkumuleringer.

En akkumuleringsattribut-formel kan ikke indeholde poster i mange-til-mange-relationer (N:N). Den kan kun indeholde poster i en-til-mange-relationer (1:N).

Akkumuleringsattribut-formler kan ikke bruge en-til-mange-relationer(1:N) med objektet ActivityPointer eller ActivityParty.

SourceTypeMasks-optælling

Egenskaben SourceTypeMask for de attributter, der understøtter beregnede felter og akkumuleringsfelter, indeholder en bitmaskeværdi. For at udtrække relevante oplysninger fra værdien, hjælper at have en optælling, når der udføres bitvise handlinger. Brug følgende SourceTypeMasks-optælling ved sammenligning af SourceTypeMask-egenskabsværdien.

 public enum SourceTypeMasks
{
    /// <summary>
    /// Undefined: 0 - The default value for simple and rollup attributes.
    /// </summary>
    Undefined = 0,
    /// <summary>
    /// Simple: 1 - The calculated attribute refers to an attribute in the same record.
    /// </summary>
    Simple = 1,
    /// <summary>
    /// Related: 2 - The calculated attribute refers to an attribute in a related record.
    /// </summary>
    Related = 2,
    /// <summary>
    /// Logical: 4 - The calculated attribute refers to a logical attribute.
    /// </summary>
    Logical = 4,
    /// <summary>
    /// Calculated: 8 - The calculated attribute refers to another calculated attribute.
    /// </summary>
    Calculated = 8,
    /// <summary>
    /// Rollup: 16 - The calculated attribute refers a rollup attribute. 
    /// </summary>
    Rollup = 16,
    /// <summary>
    /// Invalid: 32 - The calculated or rollup attribute is invalid.
    /// Typically this would be where a field refers to an attribute that no longer exists. 
    /// </summary>
    Invalid = 32
}

Se også

Video: Akkumulerede og beregnede felter i Microsoft Dynamics CRM 2015
Introduktion til objektattributter i Microsoft Dynamics 365
TechNet: Definere beregnede felter
TechNet: Definere akkumuleringsfelter

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret