Funktionsmåde og format for dato- og klokkeslætsattribut
Udgivet: november 2016
Gælder for: Dynamics CRM 2015
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 CRM. 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 DateTimeAttributeMetadata.DateTimeBehavior er kun tilgængelig, hvis du bruger CRM Online og har opdateret din forekomst til Opdatering 1 til Microsoft Dynamics CRM Online 2015. Desuden understøtter alle dato- og klokkeslætsattributter i Opdatering 1 til Microsoft Dynamics CRM Online 2015 nu værdier så tidligt som 1/1/1753 12:00 AM.
Du kan ikke definere funktionsmåden for dato og klokkeslætsværdier for andre versioner af CRM. 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 |
|
DateOnly |
|
TimeZoneIndependent |
|
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 CRM 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 CRM, undtagen Opdatering 1 til Microsoft Dynamics CRM Online 2015). Ingen dato- og klokkeslætsattributter konverteres til de nye funktionsmåder ved opgradering, så den bedste fremgangsmåde er at opgradere alle Dynamics CRM 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 CRM til Outlook-klienter forstå ikke datoer før 01-01-1900 (den tidligste værdi, der understøttes for dato- og klokkeslætstyper i andre versioner af CRM, undtagen Opdatering 1 til Microsoft Dynamics CRM Online 2015). 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 CRM 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 CRM-forekomst, fungerer det muligvis ikke som forventet i Opdatering 1 til Microsoft Dynamics CRM Online 2015 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 CRM-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 CRM.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 en del af en CRM-organisation, som opgraderes til Opdatering 1 til Microsoft Dynamics CRM Online 2015, indstilles den administrerede egenskab CanChangeDateTimeBehavior 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 Microsoft Dynamics CRM Online 2015 er som standard indstillet til DateOnly, og den administrerede egenskab CanChangeDateTimeBehavior 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 1 til Microsoft Dynamics CRM Online 2015, indstilles funktionsmåden for disse attributter til UserLocal og den administrerede egenskab CanChangeDateTimeBehavior 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 CRM 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 CRM-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 Microsoft Dynamics CRM Online 2015 og har opdateret din forekomst til CRM Online. Den er ikke tilgængelig for Microsoft Dynamics CRM (i det lokale miljø).
Du skal have rollen Systemadministrator i din CRM-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
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret