Delen via


Gedrag en indeling van het datum- en tijdkenmerk

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Als u wereldwijd over gebruikers en kantoren beschikt, is het belangrijk op juiste wijze datum- en tijdwaarden in meerdere tijdzones weer te geven. De klasse DateTimeAttributeMetadata wordt gebruikt voor het definiëren en beheren van kenmerken van het type DateTime in Dynamics 365. Gebruik de eigenschap DateTimeAttributeMetadata.DateTimeBehavior om te definiëren of datum- en tijdwaarden met of zonder tijdzonegegevens moeten worden opgeslagen en gebruik de eigenschap DateTimeAttributeMetadata.Format om de weergave-indeling van deze kenmerken op te geven.

U kunt ook het gebied aanpassingen in Dynamics 365 gebruiken om het gedrag en de indeling van de datum- en tijdkenmerken te definiëren.Meer informatie:TechNet: Gedrag en indeling van het datum- en tijdveld

Notitie

De DateTimeAttributeMetadata.DateTimeBehavior-eigenschap is alleen beschikbaar als u Update 1 voor Microsoft Dynamics CRM Online 2015 or Microsoft Dynamics 365 (on-premises) gebruikt. Tevens ondersteunen alle datum- en tijdkenmerken in CRM Online 2015 Update 1 en Dynamics 365 (on-premises) nu waarden vanaf 1/1/1753 12:00 AM.

Voor eerdere versies van Dynamics 365 dan CRM Online 2015 Update 1 en Dynamics 365 (on-premises) kunt u het gedrag van de datum- en tijdwaarden niet definiëren. Standaard worden de datum- en tijdwaarden opgeslagen als UserLocal-gedrag. Dit wordt verderop in dit onderwerp beschreven.

In dit onderwerp

Het gedrag van een datum- en tijdkenmerk opgeven

Indeling van het datum- en tijdkenmerk opgeven

Queryoperators voor datum en tijd worden niet ondersteund voor DateOnly-gedrag

Het gedrag van een datum- en tijdkenmerk wijzigen

Het gedrag van bestaande datum- en tijdwaarden in de database converteren

Het gedrag van een datum- en tijdkenmerk opgeven

U kunt de klasse DateTimeBehavior gebruiken om een waarde op te geven voor de eigenschap DateTimeAttributeMetadata.DateTimeBehavior. De DateTimeBehavior klasse bevat de volgende leden; elk lid geeft een tekenreeks met dezelfde waarde als de naam van het lid:

Lidnaam en waarde

Beschrijving

UserLocal

  • Slaat de datum- en tijdwaarde op als UTC-waarde in het systeem.

  • De ophaalbewerking retourneert de UTC-waarde.

  • De updatebewerking converteert de UTC-waarde naar de waarde voor de huidige tijdzone van de gebruiker en slaat vervolgens de bijgewerkte waarde in de huidige vorm of als equivalente UTC-waarde op, afhankelijk van het type (DateTimeKind) van de waarde die is opgegeven voor de update. Als de opgegeven waarde van het type UTC is, wordt deze opgeslagen in de huidige vorm. Anders wordt de waarde van het UTC-equivalent opgeslagen.

  • Bij het ophalen van de opgemaakte waarde wordt geconverteerd van UTC naar de huidige tijdzone van de gebruiker op basis van de tijdzone en landinstelling van de gebruiker.

  • Voor het OData-eindpunt wordt het kenmerk beschikbaar gesteld als DateTimeOffset.

  • Dit gedrag wordt gebruikt voor systeemkenmerken zoals CreatedOn en ModifiedOn, en kan niet worden gewijzigd. U kunt dit gedrag gebruiken voor aangepaste kenmerken waarbij u datum- en tijdwaarden wilt opslaan met de tijdzonegegevens.

DateOnly

  • Slaat de huidige datumwaarde met de tijdwaarde op als 12:00 AM (00:00:00) in het systeem.

  • Voor de ophaal- en bijwerkbewerkingen wordt geen tijdzoneconversie uitgevoerd en de tijdwaarde is altijd 12 AM (00:00:00).

  • Bij het ophalen van de opgemaakte waarde wordt de datumwaarde weergegeven zonder enige tijdzoneconversie.

  • Voor het OData-eindpunt wordt het kenmerk beschikbaar gesteld als DateTimeOffset.

  • Dit gedrag dient te worden gebruikt voor aangepaste kenmerken waarbij verjaardagen en jubilea worden opgeslagen, waarbij de tijdgegevens niet zijn vereist.

TimeZoneIndependent

  • Slaat de huidige datum- en tijdwaarde op in het systeem ongeacht de tijdzone van de gebruiker.

  • Voor de ophaal- en bijwerkbewerkingen wordt geen tijdzoneconversie uitgevoerd en de actuele datum- en tijdwaarden worden respectievelijk geretourneerd en bijgewerkt in het systeem ongeacht de tijdzone van de gebruiker.

  • Bij het ophalen van de opgemaakte waarde wordt de datum- en tijdwaarde (zonder enige tijdzoneconversie) weergegeven op basis van de opmaak die is gespecificeerd door de tijdzone en de landinstelling van de huidige gebruiker.

  • Voor het OData-eindpunt wordt het kenmerk beschikbaar gesteld als DateTimeOffset.

  • Dit gedrag dient te worden gebruikt voor kenmerken waarin informatie wordt opgeslagen zoals de in- en uitchecktijden van hotels.

In de volgende voorbeeldcode ziet u hoe u een UserLocal-gedrag instelt voor een nieuw datum-/tijdkenmerk:


// 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);

In de voorbeeldcode kunt u tevens de waarde instellen van de eigenschap DateTimeBehavior door rechtstreeks de tekenreekswaarde op te geven: DateTimeBehavior = "UserLocal"

Als u het gedrag niet specificeert tijdens het maken van een datum- en tijdkenmerk, wordt het kenmerk standaard gemaakt met het UserLocal-gedrag. Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Datum- en tijdgedrag converteren.

Belangrijk

  • Nadat u een datum- en tijdkenmerk hebt gemaakt met gedrag dat is ingesteld op DateOnly of TimeZoneIndependent, kunt u het gedrag van het kenmerk niet meer wijzigen.Meer informatie:Het gedrag van een datum- en tijdkenmerk wijzigen

  • De datum- en tijdkenmerken met het DateOnly- of TimeZoneIndependent-gedrag wordt behandeld alsof het UserLocal-gedrag is bij het bewerken in een eerdere versie van de Dynamics 365 voor Outlook-client in de offline modus. Dit komt doordat de client het nieuwe gedrag niet begrijpt en deze anders behandelt dan UserLocal (bestaand gedrag in eerdere versies van Dynamics 365 dan CRM Online 2015 Update 1 of Dynamics 365 (on-premises)). Er worden geen datum- en tijdkenmerken geconverteerd naar de nieuwe gedragingen bij upgrades, dus de beste aanpak hier is het uitvoeren van een upgrade van alle Dynamics 365 voor Outlook-clients naar de meest recente versie voordat een aanpasser een van de nieuwe gedragingen gebruikt. Bij online gebruik, werkt het bewerken van gegevens voor velden met de nieuwe gedragingen prima.

    De oudere Dynamics 365 voor Outlook-clients begrijpen tevens geen datums van vóór 1/1/1900 (de vroegste waarde die wordt ondersteund voor datum- en tijdtypen in eerdere versies van Dynamics 365 dan CRM Online 2015 Update 1 en Dynamics 365 (on-premises)). Gebruikers kunnen geen records openen met datums van vóór 1/1/1900 als zij offline zijn. Alles werkt echter prima als zij online zijn. U moet tevens een upgrade uitvoeren naar de meest recente versie van de Dynamics 365 voor Outlook-clients om te kunnen werken met kenmerken met datums vanaf 1/1/1753 12:00 AM in de offline modus.

  • Als u aangepaste code gebruikt voor het implementeren van datum-/tijdgedrag in uw exemplaar van Dynamics 365, werkt deze mogelijk niet zoals verwacht in CRM Online 2015 Update 1 en Dynamics 365 (on-premises) vanwege de nieuwe gedragsfunctie.

Indeling van het datum- en tijdkenmerk opgeven

Gebruik de eigenschap DateTimeAttributeMetadata.Format om de weergavenotatie van de datum/tiijd op te geven van het kenmerk ongeacht hoe het is opgeslagen in het systeem. U kunt de opsomming DateTimeFormat gebruiken om de weergavenotatie op te geven: DateAndTime of DateOnly.

Als de eigenschap DateTimeBehavior is ingesteld op DateOnly, kunt u de waarde van de eigenschap Format niet instellen of wijzigen in DateAndTime.

Queryoperators voor datum en tijd worden niet ondersteund voor DateOnly-gedrag

Tijdgerelateerde queryoperators worden niet ondersteund voor het DateOnly-gedrag. Anders dan de tijdspecifieke queryoperators die hier worden vermeld, worden alle andere queryoperators wel ondersteund.

  • Ouder dan X minuten

  • Ouder dan X uur

  • Laatste X uren

  • Volgende X uren

Meer informatie:Fiscale datum en 'ouder dan'-queryoperators voor datum/tijd in FetchXML

Het gedrag van een datum- en tijdkenmerk wijzigen

U kunt een datum- en tijdkenmerken bijwerken zodat het gedrag wordt gewijzigd als u over de functie van systeemaanpasser beschikt in uw Dynamics 365-exemplaar en de beheerde eigenschap CanChangeDateTimeBehavior voor het datum- en tijdkenmerk is ingesteld op True.

Waarschuwing

Voordat u het gedrag van een datum- en tijdkenmerk gaat wijzigen, dient u alle afhankelijkheden van het kenmerk, zoals bedrijfsregels, werkstromen en berekende of samengetelde kenmerken, te bekijken om er zeker van te zijn dat er geen problemen optreden ten gevolge van het wijzigen van het gedrag. Systeemaanpassers kunnen het wijzigen van het gedrag van bestaande datum- en tijdkenmerken beperken met de beheerde eigenschap CanChangeDateTimeBehavior.

Nadat u het gedrag van een datum- en tijdkenmerk hebt gewijzigd, dient u minimaal elke record voor een bedrijfsregel, werkstroom, berekend kenmerk of samengeteld kenmerk die afhankelijk is van het gewijzigde datum- en tijdkenmerk te openen, de informatie te bekijken en de record op te slaan om er zeker van te zijn dat het meest recente kenmerkgedrag en de meest recente kenmerkwaarde wordt gebruikt.

Nadat u het gedrag van een datum- en tijdkenmerk van een berekend of samengeteld kenmerk gaat wijzigen, opent u de definitie-editor voor berekende of samengetelde velden en slaat u de velddefinitie op om er zeker van te zijn dat het kenmerk nog steeds geldig is na de gedragswijziging. Systeemaanpassers kunnen de velddefinitie-editor voor berekende of samengetelde kenmerken openen door op Bewerken naast Veldtype in het aanpassingsgebied in Dynamics 365 te klikken.Meer informatie:Berekende velden definiëren en Samengetelde velden definiëren

  • Het gedrag van de kenmerken CreatedOn en ModifiedOn voor gebruiksklare en aangepaste entiteiten is standaard ingesteld op UserLocal en de beheerde eigenschap CanChangeDateTimeBehavior is ingesteld op False. Dit impliceert dat u het gedrag van deze kenmerken niet kunt wijzigen. Hoewel gebruikers de waarde van de beheerde eigenschap CanChangeDateTimeBehavior van deze kenmerken voor aangepaste entiteiten kunnen wijzigen, kunnen zij het gedrag van de kenmerken toch niet wijzigen.

  • Voor nieuwe aangepaste datum- en tijdkenmerken wordt de beheerde eigenschap CanChangeDateTimeBehavior ingesteld op True. Dit impliceert dat u gedrag van een aangepast datum- en tijdkenmerk van UserLocal kunt wijzigen in DateOnly of TimeZoneIndependent. Andere gedragsveranderingen zijn echter niet toegestaan.

    Voor aangepaste datum- en tijdkenmerken die deel uitmaken van een Dynamics 365-organisatie waarvoor een upgrade is uitgevoerd naar Update voor CRM Online 2016 of Dynamics 365 (on-premises), wordt de beheerde eigenschap CanChangeDateTimeBehavior ingesteld op True, tenzij het kenmerk of de bovenliggende entiteit niet aanpasbaar is.

    Notitie

    Als u de eigenschap DateTimeBehavior van een kenmerk bijwerkt van UserLocal naar DateOnly, moet u ervoor zorgen dat u ook de eigenschap Format wijzigt van DateAndTime naar DateOnly. Anders treedt er een uitzondering op.

  • De volgende gebruiksklare datum- en tijdkenmerken in CRM Online 2015 Update 1 en Dynamics 365 (on-premises) zijn standaard ingesteld op DateOnly en de beheerde eigenschap CanChangeDateTimeBehavior is ingesteld op False voor deze kenmerken. Dit impliceert dat u het gedrag van deze kenmerken niet kunt wijzigen:

    Datum- en tijdkenmerk

    Bovenliggende entiteit

    anniversary

    Contact

    birthdate

    Contact

    duedate

    Invoice

    estimatedclosedate

    Lead

    actualclosedate

    Opportunity

    estimatedclosedate

    Opportunity

    finaldecisiondate

    Opportunity

    validfromdate

    Product

    validtodate

    Product

    closedon

    Quote

    expireson

    Quote

    Als deze gebruiksklare datum- en tijdkenmerken echter deel uitmaken van een organisatie waarvoor een upgrade is uitgevoerd naar Update voor Microsoft Dynamics CRM Online 2016 of Dynamics 365 (on-premises), wordt het gedrag van deze kenmerken ingesteld op UserLocal en de beheerde eigenschap CanChangeDateTimeBehavior ingesteld op True in de bijgewerkte organisatie en kunt u het gedrag van deze kenmerken wijzigen in alleen DateOnly. Geen andere gedragswijzigingen zijn toegestaan.

Nadat u het gedrag van een kenmerk hebt bijgewerkt, moet u de aanpassingen publiceren om de wijziging van kracht te laten worden. Het bijwerken van het gedrag van een datum- en tijdkenmerk waarborgt dat alle ingevoerde/bijgewerkte waarden nadat het kenmerkgedrag is gewijzigd, worden opgeslagen in het systeem met het nieuwe gedrag. Dit is niet van invloed op de waarden die al in de database liggen opgeslagen en deze worden nog steeds opgeslagen als UTC-waarden. Als u echter de bestaande waarden ophaalt met SDK of deze bekijkt in de UI worden de bestaande waarden weergegeven volgens het nieuwe gedrag van het kenmerk. Als u bijvoorbeeld het gedrag van een aangepast kenmerk voor een accountentiteit hebt gewijzigd van UserLocal in DateOnly en een bestaande accountrecord ophaalt met behulp van de SDK, worden de datum en tijd weergegeven als <Datum> gevolgd door de tijd als 12 AM (00:00:00). Op vergelijkbare wijze geldt voor de gedragswijziging van UserLocal naar TimeZoneIndependent, dat de werkelijke waarde in de database wordt weergegeven in de huidige vorm zonder enige tijdzoneconversies.

In de volgende voorbeeldcode ziet u hoe u het gedrag van een datum-/tijdkenmerk bijwerkt:


// 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");

Als u het volledige voorbeeld wilt bekijken, raadpleegt u Voorbeeld: Datum- en tijdgedrag converteren.

Het gedrag van bestaande datum- en tijdwaarden in de database converteren

Als u een datum- en tijdkenmerk bijwerkt om het gedrag te wijzigen van UserLocal in DateOnly of TimeZoneIndependent, vindt geen automatische conversie van de bestaande kenmerkwaarden in de database plaats. De verandering in gedrag is alleen van invloed op de waarden die worden ingevoerd of bijgewerkt in het kenmerk nadat het gedrag is gewijzigd. De bestaande datum- en tijdwaarden in het systeem blijven in UTC en worden weergegeven door Dynamics 365 volgens het nieuwe gedrag als zij via de SDK of in de UI worden opgehaald, zoals in de vorige sectie werd uitgelegd. Voor kenmerken waarvan het gedrag is gewijzigd van UserLocal in DateOnly kunt u de bestaande UTC-waarden in de database converteren naar de bijbehorende DateOnly-waarde om afwijkende gegevens te voorkomen door gebruik te maken van het ConvertDateAndTimeBehaviorRequest-bericht.

Dit bericht stelt u in staat een conversieregel op te geven (ConversionRule) om de tijdzone te selecteren die moet worden gebruikt voor conversie van de waarden van UTC naar DateOnly. U kunt een van de volgende conversieregels opgeven:

  • SpecificTimeZone: Converteert UTC-waarde naar een DateOnly-waarde volgens de opgegeven Dynamics 365-tijdzonecode. In dit geval moet u tevens een waarde opgeven voor de parameter TimeZoneCode.

  • CreatedByTimeZone: Converteert UTC-waarde naar een DateOnly-waarde die de gebruiker die de record heeft gemaakt te zien zou krijgen in de UI.

  • OwnerTimeZone: Converteert UTC-waarde naar een DateOnly-waarde die de gebruiker die eigenaar van de record is te zien zou krijgen in de UI.

  • LastUpdatedByTimeZone: Converteert UTC-waarde naar een DateOnly-waarde die de gebruiker die de record het laatst heeft bijgewerkt te zien zou krijgen in de UI.

U kunt een van de vier leden van de klasse DateTimeBehaviorConversionRule gebruiken om een geldige waarde op te geven voor de parameter ConversionRule.

Notitie

  • Het ConvertDateAndTimeBehaviorRequest-bericht is alleen beschikbaar als u CRM Online 2015 Update 1 of Dynamics 365 (on-premises) gebruikt. Het is niet beschikbaar voor eerdere versies van Dynamics 365.

  • U hebt de functie van systeembeheerder voor uw Dynamics 365-exemplaar nodig om het ConvertDateAndTimeBehaviorRequest-bericht te kunnen uitvoeren.

Als u het ConvertDateAndTimeBehaviorRequest-bericht uitvoert, wordt een systeemtaak (asynchrone bewerking) gemaakt om de conversieaanvraag uit te voeren. Het kenmerk ConvertDateAndTimeBehaviorResponse.JobId in het antwoord op het bericht geeft de id aan van de systeemtaak die is gemaakt als resultaat van de conversieaanvraag. Nadat de systeemtaak is voltooid, controleert u de taakdetails (AsyncOperation.Message) om de conversiegegevens of eventuele fouten te bekijken.

Notitie

Wij adviseren u de conversie van meerdere kenmerken groepeert in een enkele conversietaak en een enkele conversietaak uitvoert op een tijdstip waarop u er zeker van kunt zijn dat er geen conflicten zijn bij de conversie en ten behoeve van optimale systeemprestaties.

Hier zijn een aantal belangrijke punten om rekening mee te houden bij het gebruik van het ConvertDateAndTimeBehaviorRequest-bericht:

  • U kunt belangrijke veranderingen in Dynamics 365 tijdens de uitvoering van het bericht, zoals het importeren van een oplossing of het verwijderen van een kenmerk of bovenliggende entiteit, beter vermijden. Als u dit wel doet kan dit leiden tot onverwacht gedrag. Er vindt echter geen gegevensverlies plaats.

  • Updates die worden uitgevoerd in het systeem ten gevolge van de uitvoering van het bericht voeren geen werkstromen en plug-ins uit.

  • Updates die worden uitgevoerd in het systeem ten gevolge van de uitvoering van het berichten brengen geen wijziging aan in de waarde "laatst gewijzigd op" voor de kenmerken maar worden wel gecontroleerd om de beheerders te helpen het tijdstip van de conversie en de oorspronkelijke/gewijzigde waarde voor een kenmerk te bepalen.

In het volgende voorbeeldcode ziet u hoe u het bericht moet gebruiken:


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);

Als u de volledige voorbeeldcode wilt bekijken, raadpleegt u Voorbeeld: Datum- en tijdgedrag converteren

Zie ook

Voorbeeld: Datum- en tijdgedrag converteren
TechNet: Gedrag en indeling van het veld
Metagegevens van entiteitskenmerken aanpassen

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht