Del via


Funktionsmåde og format for dato- og klokkeslætsattribut

 

Udgivet: januar 2017

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

Hvis du har brugere og kontorer over hele verden, er det vigtigt, at repræsentere dato- og klokkeslætsværdier korrekt i flere tidszoner. Klassen DateTimeAttributeMetadata bruges til at definere og administrere attributter af typen DateTime i Dynamics 365. Brug egenskaben DateTimeAttributeMetadata.DateTimeBehavior til at definere, om du vil gemme dato- og klokkeslætsværdier, med eller uden oplysninger om tidszone, og brug DateTimeAttributeMetadata.Format til at angive visningsformatet for disse attributter.

Du kan også bruge tilpasningsområdet i Dynamics 365 til at definere funktionsmåde og formatet for dato- og klokkeslætsattributterne.Flere oplysninger:TechNet: Funktionsmåde og format for dato- og klokkeslætsfelt

Bemærk

Egenskaben DateTimeAttributeMetadataDateTimeBehavior er kun tilgængelig, hvis du bruger Opdatering 1 til Microsoft Dynamics CRM Online 2015 eller Microsoft Dynamics 365 (det lokale miljø). Desuden understøtter alle dato- og klokkeslætsattributter i Opdatering 1 til CRM Online 2015 og Dynamics 365 (det lokale miljø) nu værdier så tidligt som 1/1/1753 12:00 AM.

For Dynamics 365-versioner, der er tidligere end Opdatering 1 til CRM Online 2015 og Dynamics 365 (det lokale miljø), kan du ikke definere funktionsmåden for dato- og klokkeslætsværdier . Dato- og klokkeslætsværdier gemmes som standard som UserLocal-funktionsmåde som beskrevet senere i dette emne.

Dette emne indeholder

Angiv funktionsmåden for en dato- og klokkeslætsattribut

Angiv format for dato- og klokkeslætsattributten

Forespørgselsoperatorer for dato og klokkeslæt understøttes ikke for funktionsmåden Kun dato

Skift funktionsmåde for en dato- og klokkeslætsattribut

Konverter funktionsmåden for eksisterende dato- og klokkeslætsværdier i databasen

Angiv funktionsmåden for en dato- og klokkeslætsattribut

Du kan bruge klassen DateTimeBehavior til at angive en værdi for egenskaben DateTimeAttributeMetadata.DateTimeBehavior. Klassen DateTimeBehavior indeholder følgende medlemmer; hvert medlem returnerer en streng med samme værdi som navnet på medlemmet:

Medlemsnavn og værdi

Beskrivelse

UserLocal

  • Gemmer dato- og klokkeslætsværdien som UTC-værdi i systemet.

  • Hentningen returnerer UTC-værdien.

  • Opdateringen konverterer UTC-værdien til den aktuelle brugers tidszoneværdi og gemmer derefter den opdaterede værdi, som den er eller som den tilsvarende UTC-værdi afhængigt af typen (DateTimeKind) af den angivne værdi for opdateringen. Hvis den angivne værdi af UTC-typen, gemmes den som den er. I modsat fald gemmes den tilsvarende UTC-værdi.

  • Ved hentning af den formaterede værdi konverterer værdien fra UTC til brugerens aktuelle tidszone baseret på brugerens indstilling for tidszone og landestandard.

  • For OData-slutpunktet vises attributten som DateTimeOffset.

  • Denne funktionsmåde anvendes til systemattributter som CreatedOn og ModifiedOn og kan ikke ændres. Du skal bruge denne funktionsmåde til brugerdefinerede attributter, hvor du vil gemme dato- og klokkeslætsværdier med oplysninger om tidszone.

DateOnly

  • Gemmer den faktiske datoværdi med klokkeslætsværdien som 12:00 (00:00:00) i systemet.

  • Ved hentning og opdatering udføres ingen konvertering af tidszone, og klokkeslætsværdien er altid 12 (00:00:00).

  • Når du henter den formaterede værdi, vises datoværdien uden tidszonekonvertering.

  • For OData-slutpunktet vises attributten som DateTimeOffset.

  • Denne funktionsmåde skal bruges til brugerdefinerede attributter, der gemmer fødselsdage og mærkedage, hvor oplysningerne om klokkeslæt er ikke påkrævet.

TimeZoneIndependent

  • Gemmer de faktiske dato- og klokkeslætsværdier i systemet uafhængigt af brugerens tidszone.

  • Ved hentning og opdatering udføres ingen konvertering af tidszone, og de faktisk dato- og klokkeslætsværdier henholdsvis returneres og opdateres i systemet uafhængigt af brugerens tidszone.

  • Når den formaterede værdi hentes, vises dato- og klokkeslætsværdien (uden tidszonekonvertering) baseret på formatet som angivet i den aktuelle brugers indstilling for tidszone og landestandard.

  • For OData-slutpunktet vises attributten som DateTimeOffset.

  • Denne funktionsmåde skal bruges til attributter, der gemmer oplysninger som ind- og udtjekningstidspunkter for hoteller.

Følgende eksempelkode viser, hvordan du indstiller en UserLocal-funktionsmåde for en ny dato- og klokkeslætsattribut:


// Create a date time attribute for the Account entity
// with the UserLocal behavior
dtAttribute = new DateTimeAttributeMetadata
{                             
    SchemaName = "new_SampleDateTimeAttribute",
    DisplayName = new Label("Sample Date Time Attribute", _languageCode),
    RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),                
    Description = new Label("Created by SDK Sample", _languageCode),                
    DateTimeBehavior = DateTimeBehavior.UserLocal,
    Format = DateTimeFormat.DateAndTime,
    ImeMode = ImeMode.Disabled
};

CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest
{
    EntityName = Account.EntityLogicalName,
    Attribute = dtAttribute
};
_serviceProxy.Execute(createAttributeRequest);
Console.WriteLine("Created attribute '{0}' with UserLocal behavior\nfor the Account entity.\n", 
                            dtAttribute.SchemaName);

I eksempelkoden kan du også angive værdien for egenskaben DateTimeBehavior ved at angive strengværdien direkte: DateTimeBehavior = "UserLocal"

Hvis du ikke angiver funktionsmåden under oprettelse af en dato- og klokkeslætsattribut, oprettes attributten med funktionsmåden UserLocal som standard. Se Eksempel: Konvertér funktionsmåde for dato og klokkeslæt for at se hele eksempelkoden.

Vigtigt

  • Når du har oprettet en dato- og klokkeslætsattribut med funktionsmåden indstillet til DateOnly eller TimeZoneIndependent, kan du ikke ændre funktionsmåden for attributten.Flere oplysninger:Skift funktionsmåde for en dato- og klokkeslætsattribut

  • Dato- og klokkeslætsattributter med funktionsmåden DateOnly eller TimeZoneIndependent behandles som funktionsmåden UserLocal, når de redigeres i en tidligere version af Dynamics 365 til Outlook-klienten i offlinetilstand. Dette skyldes, at klienten ikke forstår de nye funktionsmåder og ikke behandler dem anderledes end UserLocal (eksisterende funktionsmåde i andre versioner af Dynamics 365, der er tidligere end Opdatering 1 til CRM Online 2015 eller Dynamics 365 (det lokale miljø)). Ingen dato- og klokkeslætsattributter konverteres til de nye funktionsmåder ved opgradering, så den bedste fremgangsmåde er at opgradere alle Dynamics 365 til Outlook-klienter til den nyeste version, før en systemtilpasser tager en af de nye funktionsmåder i anvendelse. Når du er online, kan du fint redigere dataene i felter med de nye funktionsmåder.

    Ældre Dynamics 365 til Outlook-klienter forstår desuden ikke datoer før 01-01-1900 (den tidligste værdi, der understøttes for dato- og klokkeslætstyper i andre versioner af Dynamics 365, der er tidligere end Opdatering 1 til CRM Online 2015 og Dynamics 365 (det lokale miljø)). Brugerne vil ikke kunne åbne poster med datoer før 01-01-1900, når de er offline. Dog fungerer alt fint, når de er online. Du skal opgradere til den nyeste version af Dynamics 365 til Outlook-klienterne for at arbejde med attributter med datoer så tidligt som 01-01-1753 12:00 i offlinetilstand.

  • Hvis du anvender brugerdefineret kode til at implementere funktionsmåde for dato og klokkeslæt i din Dynamics 365-forekomst, fungerer det muligvis ikke som forventet i Opdatering 1 til CRM Online 2015 og Dynamics 365 (det lokale miljø) som følge af den nye funktionsmåde.

Angiv format for dato- og klokkeslætsattributten

Brug egenskaben DateTimeAttributeMetadata.Format til at angive attributtens visningsformat for dato og klokkeslæt, uanset hvordan det er gemt i systemet. Du kan bruge DateTimeFormat-optællingen til at angive visningsformatet: DateAndTime eller DateOnly.

Hvis egenskaben DateTimeBehavior er indstillet til DateOnly, kan du angive eller ændre værdien af egenskaben Format til DateAndTime.

Forespørgselsoperatorer for dato og klokkeslæt understøttes ikke for funktionsmåden Kun dato

Tidsrelaterede forespørgselsoperatorer understøttes ikke for funktionsmåden DateOnly. Udover de tidsspecifikke forespørgselsoperatorer, der er angivet her, understøttes alle de andre forespørgselsoperatorer.

  • Ældre end x minutter

  • Ældre end x timer

  • Seneste X timer

  • Næste X timer

Flere oplysninger:Regnskabsdato og "ældre end" dato/klokkeslæt forespørgselsoperatorer i FetchXML

Skift funktionsmåde for en dato- og klokkeslætsattribut

Du kan opdatere en dato-og klokkeslætsattribut for at ændre dens funktionsmåde, hvis du har rollen Systemtilpasser i din Dynamics 365-forekomst, og den administrerede egenskab CanChangeDateTimeBehavior for dato- og klokkeslætsattributten er indstillet til True.

Forsigtigt

Før du ændrer funktionsmåden for en dato- og klokkeslætsattribut, bør du gennemgå alle afhængigheder af attributten, f.eks forretningsregler, arbejdsprocesser og beregnede attributter eller akkumuleringsattributter, for at sikre, at der er ingen problemer som følge af ændringen af funktionen. Systemtilpassere kan begrænse, hvor meget funktionsmåden for eksisterende dato og klokkeslætsattributter kan ændres, ved hjælp af den administrerede egenskab CanChangeDateTimeBehavior.

Som minimum, efter ændring af funktionsmåden for en dato- og klokkeslætsattribut, skal du åbne hver forretningsregel, arbejdsproces, beregnet attribut og akkumuleringsattribut, der er afhængige af den ændrede dato- og klokkeslætsattribut, gennemse oplysningerne og gemme posten for at sikre, at den seneste funktionsmåde og værdi for attributten anvendes.

Når du har ændret funktionsmåden for dataene og klokkeslættet for en beregnet attribut eller akkumuleringsattribut, skal du åbne definitionseditoren for feltet med den beregnede værdi eller akkumuleringsfeltet og gemme feltdefinition for at sikre, at attributten stadig gælder efter ændringen af funktionsmåden. Systemtilpassere kan åbne feltdefinitionseditoren til den beregnede attribut eller akkumuleringsattributten ved at klikke på Rediger ud for Felttype i tilpasningsområdet i Dynamics 365.Flere oplysninger:Definere beregnede felter og Definere akkumuleringsfelter

  • Funktionsmåden for attributterne CreatedOn og ModifiedOn for indbyggede og brugerdefinerede objekter er som standard indstillet til UserLocal, og den administrerede egenskab CanChangeDateTimeBehavior er indstillet til False, hvilket indebærer, at du ikke kan ændre funktionsmåden for disse attributter. Selvom brugerne kan ændre værdien af den administrerede egenskab CanChangeDateTimeBehavior for disse attributter i brugerdefinerede objekter, kan de stadig ikke ændre attributternes funktionsmåde.

  • For nye brugerdefinerede dato- og klokkeslætsattributter er den administrerede egenskab CanChangeDateTimeBehavior indstillet til True. Dette indebærer, at du kan ændre funktionsmåden for en brugerdefineret dato- og klokkeslætsattribut fra UserLocal til enten DateOnly eller TimeZoneIndependent. Ingen andre funktionsmådeovergange kan anvendes.

    For brugerdefinerede dato- og klokkeslætsattributter, der er del af en Dynamics 365-organisation, som opgraderes til Opdatering til CRM Online 2016 eller Dynamics 365 (det lokale miljø), CanChangeDateTimeBehavior indstilles den administrerede egenskab til True, medmindre attributten eller det overordnede objekt ikke kan tilpasses.

    Bemærk

    Når du opdaterer egenskaben DateTimeBehavior for en attribut fra UserLocal til DateOnly, skal du sikre dig, at du også ændrer egenskaben Format fra DateAndTime til DateOnly. Ellers opstår der en undtagelse.

  • Følgende indbyggede dato- og klokkeslætsattributter i Opdatering 1 til CRM Online 2015 og Dynamics 365 (det lokale miljø) er som standard indstillet til DateOnly og den CanChangeDateTimeBehavior administrerede egenskab er indstillet til False for disse attributter, hvilket indebærer, at du ikke kan ændre funktionsmåden for disse attributter:

    Dato- og klokkeslætsattribut

    Overordnet objekt

    anniversary

    Contact

    birthdate

    Contact

    duedate

    Invoice

    estimatedclosedate

    Lead

    actualclosedate

    Opportunity

    estimatedclosedate

    Opportunity

    finaldecisiondate

    Opportunity

    validfromdate

    Product

    validtodate

    Product

    closedon

    Quote

    expireson

    Quote

    Men hvis disse indbyggede dato- og klokkeslætsattributter tilhører en organisation, der opgraderes til Opdatering til Microsoft Dynamics CRM Online 2016 eller Dynamics 365 (det lokale behov), indstilles funktionsmåden for disse attributter til UserLocal og den CanChangeDateTimeBehavior administrerede egenskab til True i den opgraderede organisation, og du kan kun ændre funktionsmåden for disse attributter til DateOnly. Der tillades ingen andre funktionsmådeovergange.

Når du har opdateret funktionsmåden for en attribut, skal du udgive tilpasningerne, for at ændringen kan træde i kraft. Opdatering af funktionsmåden for en dato- og klokkeslætsattribut sikrer, at alle de værdier, der angivet/opdateret efter funktionsmåde for attributten blev ændret, gemmes i systemet i overensstemmelse med den nye funktionsmåde. Dette påvirker ikke de værdier, der allerede er gemt i databasen, og de gemmes fortsat som UTC-værdier. Når du henter de eksisterende værdier ved hjælp af SDK eller får dem vist i brugergrænsefladen, vises de eksisterende værdier i overensstemmelse med den nye funktionsmåde for attributten. For eksempel, hvis du har ændret funktionsmåden for en brugerdefineret attribut for et firmaobjekt fra UserLocal til DateOnly og henter en eksisterende firmapost ved hjælp af SDK, vises datoen og klokkeslættet som <Dato> efterfulgt af klokkeslæt som 12 AM (00:00:00). Også for ændringen af funktionsmåden fra UserLocal til TimeZoneIndependent vises den faktiske værdi i databasen, som den er uden tidszonekonverteringer.

Følgende eksempelkode viser, hvordan du opdaterer funktionsmåden for en dato- og klokkeslætsattribut:


// Retrieve the attribute to update its behavior and format
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
    EntityLogicalName = Account.EntityLogicalName,
    LogicalName = "new_sampledatetimeattribute",
    RetrieveAsIfPublished = false
};
// Execute the request
RetrieveAttributeResponse attributeResponse =
                (RetrieveAttributeResponse)_serviceProxy.Execute(attributeRequest);

Console.WriteLine("Retrieved the attribute '{0}'.",
                attributeResponse.AttributeMetadata.SchemaName);

// Modify the values of the retrieved attribute
DateTimeAttributeMetadata retrievedAttributeMetadata =
                (DateTimeAttributeMetadata)attributeResponse.AttributeMetadata;
retrievedAttributeMetadata.DateTimeBehavior = DateTimeBehavior.DateOnly;
retrievedAttributeMetadata.Format = DateTimeFormat.DateOnly;

// Update the attribute with the modified value
UpdateAttributeRequest updateRequest = new UpdateAttributeRequest
{
    Attribute = retrievedAttributeMetadata,
    EntityName = Account.EntityLogicalName,
    MergeLabels = false
};
_serviceProxy.Execute(updateRequest);
Console.WriteLine("Updated the behavior and format of '{0}' to DateOnly.",
    retrievedAttributeMetadata.SchemaName);

// Publish customizations to the account entity
PublishXmlRequest pxReq = new PublishXmlRequest
{
    ParameterXml = String.Format("<importexportxml><entities><entity>account</entity></entities></importexportxml>")
};
_serviceProxy.Execute(pxReq);
Console.WriteLine("Published customizations to the Account entity.\n");

Se Eksempel: Konvertér funktionsmåde for dato og klokkeslæt for at se hele eksempelkoden.

Konverter funktionsmåden for eksisterende dato- og klokkeslætsværdier i databasen

Når du opdaterer en dato- og klokkeslætsattribut for at ændre funktionsmåden fra UserLocal til DateOnly eller TimeZoneIndependent, konverterer den ikke automatisk de eksisterende attributværdier i databasen. Ændring i funktionsmåden påvirker kun de værdier, som bliver angivet eller opdateret i attributten, efter at funktionsmåden er blevet ændret. Eksisterende dato- og klokkeslætsværdier i systemet er fortsat i UTC-tid og vises af Dynamics 365 i overensstemmelse med den nye funktionsmåde, når de hentes via SDK eller i brugergrænsefladen, som beskrevet i forrige afsnit. For attributter, hvis funktionsmåde er ændret fra UserLocal til DateOnly, kan du konvertere de eksisterende UTC-værdier i databasen til den relevante DateOnly-værdi for at undgå eventuelle dataafvigelser ved hjælp af meddelelsen ConvertDateAndTimeBehaviorRequest.

Med meddelelsen kan du angive en konverteringsregel(ConversionRule) for at vælge tidszonen, der skal bruges til konvertering af værdier fra UTC til DateOnly. Du kan angive en af følgende konverteringsregler:

  • SpecificTimeZone: Konverterer UTC-værdi til en DateOnly-værdi ifølge den angivne Dynamics 365-tidszonekode. I dette tilfælde skal du også angive en værdi for parameteren TimeZoneCode.

  • CreatedByTimeZone: Konverterer UTC-værdi til en DateOnly-værdi, som den bruger, der oprettede posten, ser i brugergrænsefladen.

  • OwnerTimeZone: Konverterer UTC-værdi til en DateOnly-værdi, som den bruger, der oprettede posten, ser i brugergrænsefladen.

  • LastUpdatedByTimeZone: Konverterer UTC-værdi til en DateOnly-værdi, som den bruger, der sidst opdaterede posten, ser i brugergrænsefladen.

Du kan bruge et af de fire medlemmer af DateTimeBehaviorConversionRule-klassen til at angive en gyldig værdi for parameteren ConversionRule.

Bemærk

  • Meddelelsen ConvertDateAndTimeBehaviorRequest er kun tilgængelig, hvis du bruger Opdatering 1 til CRM Online 2015 eller Dynamics 365 (det lokale miljø). Den er ikke tilgængelig i tidligere versioner af Dynamics 365.

  • Du skal have rollen Systemadministrator i din Dynamics 365-forekomst for at udføre meddelelsen ConvertDateAndTimeBehaviorRequest.

Når du udfører meddelelsen ConvertDateAndTimeBehaviorRequest, oprettes et systemjob (asynkron handling) for at udføre konverteringsanmodningen. Attributten ConvertDateAndTimeBehaviorResponse.JobId i meddelelsessvaret viser id'et for det systemjob, der oprettes som resultat af konverteringsanmodningen. Når systemjobbet er fuldført, skal du kontrollere joboplysningerne (AsyncOperation.Message) for at få vist konverteringsoplysninger eller eventuelle fejl.

Bemærk

Vi anbefaler, at du grupperer konvertering af flere attributter i et enkelt konverteringsjob og kører et enkelt konverteringsjob ad gangen for at sikre, at der ikke er nogen konflikter i konverteringen og for at optimere systemydeevnen.

Nogle vigtige punkter, der skal tages i betragtning ved brug af ConvertDateAndTimeBehaviorRequest-meddelelsen:

  • Du bør undgå større ændringer af løsningerne i Dynamics 365 under udførelse af meddelelsen, herunder import af en løsning eller sletning af en attribut eller et overordnet objekt. Hvis du foretager større ændringer, kan det resultere i uventet funktionsmåde. Men ingen data vil gå tabt.

  • Opdateringer, der foretages i systemet i forbindelse med udførelsen af meddelelsen, kan ikke køre arbejdsprocesser og plug-ins.

  • Opdateringer, der udføres i systemet som et resultat af udførelsen af meddelelsen, kan ikke ændre værdien "senest ændret den" for attributterne, men overvåges for at hjælpe administratorerne med at bestemme tidspunktet for konverteringen og de oprindelige/ændrede værdier for en attribut.

I følgende eksempelkode vises, hvordan meddelelsen bruges:


ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest()
{
    Attributes = new EntityAttributeCollection() 
            { 
                new KeyValuePair<string, StringCollection>("account", new StringCollection() 
                { "new_sampledatetimeattribute" }) 
            },
    ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value,
    TimeZoneCode = 190, // Time zone code for India Standard Time (IST) in CRM
    AutoConvert = false // Conversion must be done using ConversionRule
};

// Execute the request
ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request);

Du kan at se hele eksempelkoden under Eksempel: Konvertér funktionsmåde for dato og klokkeslæt.

Se også

Eksempel: Konvertér funktionsmåde for dato og klokkeslæt
TechNet: Funktionsmåde og format for dato- og klokkeslætsfelt
Tilpasse objektets attributmetadata

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret