Verhalten und Format des Datums- und Uhrzeitattributs
Veröffentlicht: November 2016
Gilt für: Dynamics CRM 2015
Wenn Sie Benutzer und Büros auf der ganzen Welt haben, ist es wichtig, Datums- und Uhrzeitwerte in mehreren Zeitzonen ordnungsgemäß darzustellen. Die Klasse DateTimeAttributeMetadata wird verwendet, um die Attribute des Typs DateTime in CRM zu definieren und zu verwalten. Verwenden Sie die Eigenschaft DateTimeAttributeMetadata.DateTimeBehavior, um festzulegen, ob Datums- und Uhrzeitwert mit oder ohne Zeitzoneninformationen gespeichert werden, und verwenden Sie die Eigenschaft DateTimeAttributeMetadata.Format, um das Anzeigeformat dieser Attribute anzugeben.
Sie können den Anpassungsbereich in Dynamics 365 auch verwenden, um das Verhalten und das Format der Datums- und Uhrzeitattribute zu definieren.Weitere Informationen:TechNet: Verhalten und Format des Datums- und Uhrzeitfelds
Hinweis
Die Eigenschaft DateTimeAttributeMetadata.DateTimeBehavior ist nur verfügbar, wenn Sie CRM Online und Ihre Instanz auf Microsoft Dynamics CRM Online 2015-Update 1 aktualisiert haben. Datums- und Zeitattribute in Microsoft Dynamics CRM Online 2015-Update 1 unterstützen jetzt außerdem Werte ab 1/1/1753 12:00 AM.
In anderen Versionen von CRM können Sie das Verhalten der Datums- und Uhrzeitwerte nicht definieren. Standardmäßig werden die Datums- und Uhrzeitwerte als UserLocal-Verhalten gespeichert, wie weiter unten in diesem Thema beschrieben.
In diesem Thema
Angeben des Verhaltens eines Datums- und Uhrzeitattributs
Angeben des Formats eines Datums- und Uhrzeitattributs
Datums- und Uhrzeitabfrageoperatoren für DateOnly-Verhalten werden nicht unterstützt
Ändern des Verhaltens eines Datums- und Uhrzeitattributs
Konvertieren des Verhaltens von Datums- und Uhrzeitwerten in der Datenbank
Angeben des Verhaltens eines Datums- und Uhrzeitattributs
Sie können die Klasse DateTimeBehavior verwenden, um einen Wert für die Eigenschaft DateTimeAttributeMetadata.DateTimeBehavior anzugeben. Die DateTimeBehavior-Klasse enthält folgende Mitglieder; jedes Mitglied gibt eine Zeichenfolge mit demselben Wert wie dem Mitgliedsnamen zurück:
Mitgliedsname und Wert |
Beschreibung |
---|---|
UserLocal |
|
DateOnly |
|
TimeZoneIndependent |
|
Der folgende Beispielcode zeigt, wie ein UserLocal-Verhalten für ein neues Datums- und Uhrzeitattribut festgelegt wird:
// 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);
Im Beispielcode können Sie den Wert für die Eigenschaft DateTimeBehavior festlegen, indem Sie den direkten Zeichenfolgenwert angeben: DateTimeBehavior = "UserLocal"
Wenn Sie beim Erstellen eines Datums- und Zeitattributs kein Verhalten angeben, wird das Attribut standardmäßig mit dem Verhalten UserLocal erstellt. Den vollständigen Beispielcode finden Sie unter Beispiel: Konvertierung des Datums- und Uhrzeitverhaltens.
Wichtig
-
Sobald Sie ein Datums- und Uhrzeitattribut mit dem festgelegten Verhalten DateOnly oder TimeZoneIndependent erstellt haben, können Sie das Verhalten des Attributs nicht mehr ändern.Weitere Informationen:Ändern des Verhaltens eines Datums- und Uhrzeitattributs
-
Die Datums- und Uhrzeitattribute mit dem Verhalten DateOnly oder TimeZoneIndependent werden behandelt, als ob sie das Verhalten UserLocal hätten, wenn sie in einer früheren Version des Dynamics CRM für Outlook-Clients im Offlinemodus bearbeitet werden. Dies ist darauf zurückzuführen, dass der Client die neuen Verhaltensweisen nicht versteht und sie deshalb nicht anders als UserLocal behandelt (vorhandenes Verhalten in anderen Versionen von CRM, mit Ausnahme von Microsoft Dynamics CRM Online 2015-Update 1). Beim Upgrade werden keine Datums- und Uhrzeitattribute in die neuen Verhaltensweisen konvertiert. Die empfohlene Vorgehensweise ist, ein Upgrade aller Dynamics CRM für Outlook-Clients auf die neueste Version durchzuführen, bevor ein Kunde eine der neuen Verhaltensweisen übernimmt. Im Onlinemodus funktioniert das Bearbeiten von Daten für Felder mit den neuen Verhaltensweisen problemlos.
Die älteren Dynamics CRM für Outlook-Clients verstehen ebenfalls keine Datumsangaben, die vor dem 1.1.1900 liegen (der früheste unterstützte Wert für Datums- und Uhrzeittypen in anderen CRM-Versionen, Microsoft Dynamics CRM Online 2015-Update 1 ausgenommen). Benutzer können dann die Datensätze mit Datumsangaben vor dem 1.1.1900 im Offlinemodus nicht öffnen. Im Onlinemodus funktioniert jedoch alles gut. Sie müssen ein Upgrade auf die aktuelle Version der Dynamics CRM für Outlook-Clients durchführen, um auch im Offlinemodus mit Attributen mit Datumsangaben bis zum 1.1.1753 arbeiten zu önnen.
-
Wenn Sie benutzerdefinierten Code verwenden, um das Datums- und Uhrzeitverhalten in Ihre CRM-Instanz zu implementieren, funktioniert dies möglicherweise in Microsoft Dynamics CRM Online 2015-Update 1 erwartungsgemäß aufgrund auf der neuen Verhaltensfunktion.
Angeben des Formats eines Datums- und Uhrzeitattributs
Verwenden Sie die Eigenschaft DateTimeAttributeMetadata.Format, um das Anzeigeformat für Datum und Uhrzeit eines Attributs unabhängig davon anzugeben, wie es im System gespeichert ist. Sie können die Enumeration DateTimeFormat verwenden, um das Anzeigeformat anzugeben: DateAndTime or DateOnly.
Wenn die Eigenschaft DateTimeBehavior auf DateOnly gesetzt ist, können Sie den Wert der Eigenschaft Format nicht auf DateAndTime setzten oder ändern.
Datums- und Uhrzeitabfrageoperatoren für DateOnly-Verhalten werden nicht unterstützt
Zeitbezogene Abfrageoperatoren werden für das DateOnly-Verhalten nicht unterstützt. Im Gegensatz zu den zeitspezifischen Abfrageoperatoren, die hier aufgeführt werden, alle anderen Abfrageoperatoren unterstützt.
Älter als x Minuten
Älter als x Stunden
Letzte X Stunden
Nächste X Stunden
Weitere Informationen:Steuerdatum und "älter als"-Datums-/Zeit-Abfrageoperatoren in FetchXML
Ändern des Verhaltens eines Datums- und Uhrzeitattributs
Sie können ein Datums- und Uhrzeitattribut aktualisieren, um sein Verhalten zu ändern, wenn Sie in Ihrer CRM-Instanz die Systemanpasser-Rolle haben und die verwaltete Eigenschaft CanChangeDateTimeBehavior für das Datums- und Uhrzeitattribut auf True gesetzt ist.
Achtung
Bevor Sie das Verhalten eines Datums- und Zeitattribut ändern, sollten Sie alle Abhängigkeiten des Attributs wie Geschäftsregelwn, Wrkflows und berechnete oder Rollupattribute überprüfen, um sicherzustellen, dass als Ergebnis der Änderung des Verhaltens keine Probleme auftreten. Systemanpasser können Änderungen des Verhaltens der vorhandenen Datums- und Uhrzeitattribute mithilfe der verwalteten Eigenschaft CanChangeDateTimeBehavior einschränken.
Zumindest sollten Sie nach der Änderung des Verhaltens eines Datums- und Uhrzeitattributs alle Datensätze von Geschäftsregeln, Workflows, berechneten Attributen und Rollupattributen öffnen, die von dem geänderten Datums- und Uhrzeitattribut abhängig sind, die Informationen überprüfen und die Datensätze speichern, um sicherzustellen, dass das aktuelle Verhalten und der aktuelle Wert des Attributs verwendet werden.
Nachdem Sie das Datums- und Uhrzeitverhalten eines berechneten oder Rollupattributs geändert haben, öffnen Sie den Editor für die Definition von berechneten oder Rollupfeldern und speichern Sie die Felddefinition, um sicherzustellen, dass das Attribut nach der Verhaltensänderung noch gültig ist. Systemanpasser können den Felddefinitionseditor für berechnete oder Rollupattribute öffnen, indem Sie in CRM neben Feldtyp auf Bearbeiten klicken.Weitere Informationen:Definieren berechneter Felder und Rollupfelder definieren
Das Verhalten der Attribute CreatedOn und ModifiedOn für die vordefinierten und benutzerdefinierten Entitäten wird standardmäßig auf UserLocal gesetzt und die verwaltete Eigenschaft CanChangeDateTimeBehavior wird auf False gesetzt, was impliziert, dass Sie das Verhalten dieser Attribute nicht ändern können. Obwohl Benutzer den Wert der verwalteten Eigenschaft CanChangeDateTimeBehavior dieser Attribute für benutzerdefinierte Entitäten ändern können, können Sie das Verhalten der Attribute noch nicht ändern.
Für neue benutzerdefinierte Datums- und Uhrzeitattribute wird die verwaltete Eigenschaft CanChangeDateTimeBehavior auf True gesetzt. Dies bedeutet, dass Sie das Verhalten eines benutzerdefinierten Datums- und Uhrzeitattribut von UserLocal in DateOnly oder TimeZoneIndependent ändern können. Es sind keine anderen Verhaltensübergänge zulässig.
Bei benutzerdefinierten Datums- und Zeitattributen, die Teil einer CRM-Organisation sind, die auf Microsoft Dynamics CRM Online 2015-Update 1 aktualisiert wird, wird die verwaltete Eigenschaft CanChangeDateTimeBehavior auf True gesetzt, es sei denn, das Attribut oder die übergeordnete Entität kann nicht angepasst werden.
Hinweis
Wenn Sie die Eigenschaft DateTimeBehavior eines Attributs von UserLocal in DateOnly ändern, sollten Sie sicherstellen, dass Sie auch die Eigenschaft Format von DateAndTime in DateOnly ändern. Andernfalls tritt eine Ausnahme auf.
Die folgenden vordefinierten Datums- und Uhrzeitattribute in Microsoft Dynamics CRM Online 2015-Update 1 sind standardmäßig auf DateOnly gesetzt und die verwaltete Eigenschaft CanChangeDateTimeBehavior dieser Attribute wird auf False gesetzt. Das bedeutet, dass Sie das Verhalten für diese Attribute nicht ändern können:
Datums- und Uhrzeitattribut
Übergeordnete Entität
anniversary
Contact
birthdate
Contact
duedate
Invoice
estimatedclosedate
Lead
actualclosedate
Opportunity
estimatedclosedate
Opportunity
finaldecisiondate
Opportunity
validfromdate
Product
validtodate
Product
closedon
Quote
expireson
Quote
Sollten diese vordefinierten Datums- und Uhrzeitattribute einer Organisation angehören, die auf Microsoft Dynamics CRM Online 2015-Update 1 aktualisiert wird, wird das Verhalten dieser Attribute in der aktualisierten Organisation auf UserLocal und die verwaltete Eigenschaft CanChangeDateTimeBehavior auf True gesetzt. Sie können das Verhalten dieser Attribute nur in DateOnly ändern. Keine anderen Verhaltensübergänge sind erlaubt.
Nachdem Sie das Verhalten eines Attributes aktualisiert haben, müssen Sie die Anpassungen veröffentlichen, damit die Änderungen wirksam ist. Durch Aktualisieren des Verhaltens eines Datums- und Uhrzeitattributs wird sichergestellt, dass sämtliche Werte, die eingegeben/aktualisiert wurden, nachdem das Attributverhalten geändert wurde, im System gemäß dem neuen Verhalten gespeichert werden. Dies wirkt sich nicht auf die Werte aus, die bereits in der Datenbank gespeichert sind, und sie werden weiterhin als UTC-Werte gespeichert. Falls Sie jedoch die vorhandenen Werte mithilfe des SDK (Software Development Kit) abrufen oder in der Benutzeroberfläche anzeigen, werden die vorhandenen Werte gemäß dem neuen Verhalten des Attributs angezeigt. Beispiel: Wenn Sie das Verhalten eines benutzerdefinierten Attributs für eine Firmenentität von UserLocal in DateOnly geändert haben und einen vorhandenen Firmendatensatz mithilfe des SDK abrufen, werden Datum und Uhrzeit als <Datum> gefolgt von der Uhrzeit als 00:00 Uhr (00:00:00) angezeigt. Entsprechend wird bei der Verhaltensänderung von UserLocal in TimeZoneIndependent der tatsächliche Wert in der Datenbank im Istzustand ohne Zeitzonenkonvertierungen angezeigt.
Der folgende Beispielcode zeigt, wie ein das Verhalten für ein Datums- und Uhrzeitattribut aktualisiert wird:
// 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");
Den vollständigen Beispielcode finden Sie unter Beispiel: Konvertierung des Datums- und Uhrzeitverhaltens.
Konvertieren des Verhaltens von Datums- und Uhrzeitwerten in der Datenbank
Wenn Sie ein Datums- und Uhrzeitattribut so aktualisieren, dass sein Verhalten von UserLocal in DateOnly oder TimeZoneIndependent geändert wird, werden die vorhandenen Attributwerte in der Datenbank nicht automatisch konvertiert. Die Verhaltensänderung beeinflusst lediglich die Werte, die in dem Attribut eingegeben oder aktualisiert wurden, nachdem das Verhalten geändert wurde. Die vorhandenen Datums- und Uhrzeitwerte im System liegen weiterhin als UTC vor und werden von CRM gemäß dem neuen Verhalten angezeigt, wenn sie durch das SDK oder in der Benutzeroberfläche abgerufen werden (siehe vorheriger Abschnitt). Für Attribute, dessen Verhalten von UserLocal in DateOnly geändert wurde, können Sie die vorhandenen UTC-Wert in der Datenbank mithilfe der ConvertDateAndTimeBehaviorRequest-Nachricht in den entsprechenden DateOnly-Wert konvertieren, um Datenanomalien zu vermeiden.
Die Nachricht ermöglicht Ihnen die Angabe einer Konvertierungsregel (ConversionRule), um die Zeitzone auszuwählen, die für die Konvertierung der Werte aus UTC in DateOnly verwendet wird. Sie können einen der folgenden Konvertierungsregeln angeben:
SpecificTimeZone: Konvertiert einen UTC-Wert gemäß dem angegebenen CRM-Zeitzonencode in einen DateOnly-Wert. In diesem Fall müssen Sie auch einen Wert für den Parameter TimeZoneCode angeben.
CreatedByTimeZone: Konvertiert einen UTC-Wert in einen DateOnly-Wert, der dem Benutzer, der den Datensatz erstellt hat, in der Benutzeroberfläche angezeigt wird.
OwnerTimeZone: Konvertiert einen UTC-Wert in einen DateOnly-Wert, der dem Benutzer, der den Datensatz besitzt, in der Benutzeroberfläche angezeigt wird.
LastUpdatedByTimeZone: Konvertiert einen UTC-Wert in einen DateOnly-Wert, der dem Benutzer, der den Datensatz zuletzt aktualisiert hat, in der Benutzeroberfläche angezeigt wird.
Sie können eines der Mitglieder der folgenden vier unterstützten DateTimeBehaviorConversionRule-Klassen verwenden, um einen gültigen Wert für den Parameter ConversionRule anzugeben.
Hinweis
-
Die Eigenschaft ConvertDateAndTimeBehaviorRequest ist nur verfügbar, wenn Sie CRM Online verwenden und Ihre Instanz auf Microsoft Dynamics CRM Online 2015-Update 1 aktualisiert haben. Dies ist nicht für Microsoft Dynamics CRM (lokale Version) verfügbar.
-
Sie müssen in Ihrer CRM-Instanz über die Systemadministratorrolle verfügen, um die Nachricht ConvertDateAndTimeBehaviorRequest auszuführen.
Wenn Sie die Nachricht ConvertDateAndTimeBehaviorRequest ausführen, wird ein Systemauftrag (asynchroner Vorgang) erstellt, um die Konvertierungsanforderung auszuführen. Das Attribut ConvertDateAndTimeBehaviorResponse.JobId in der Nachrichtenantwort zeigt die ID des Systemauftrags an, der infolge der Konvertierugnsanforderung erstellt wird. Nachdem der Systemauftrag abgeschlossen wurde, müssen Sie die Auftragsdetails (AsyncOperation.Message) überprüfen, um Konvertierungsdetails oder Fehler anzuzeigen.
Hinweis
Es wird empfohlen, dass Sie Konvertierungen von mehreren Attributen in einem einzelnen Konvertierungsauftrag zusammenfassen und jeweils einen einzelnen Konvertierungsauftrag ausführen, um sicherzustellen, dass keine Konflikte beim Konvertieren auftreten, und um eine optimale Systemleistung zu gewährleisten.
Folgende wichtige Punkte sollten bei der Verwendung der ConvertDateAndTimeBehaviorRequest-Nachricht berücksichtigt werden:
Sie sollten alle großen Änderungen an Lösungen in Dynamics 365 während der Ausführung der Nachricht, z.B. Importieren oder Löschen einer Lösung oder Löschen eines Attributes oder einer übergeordneten Entität, vermeiden. Derartige Änderungen führen möglicherweise zu unerwartetem Verhalten; Datenverluste treten jedoch nicht auf.
Die Updates, die im System als Ergebnis der Ausführung der Nachricht vorgenommen wurden, führen keine Workflows und Plug-Ins aus.
Updates, die im System infolge der Nachrichtenausführung vorgenommen wurden, ändern den Wert „Zuletzt geändert am“ des Attributs nicht, werden jedoch überwacht, damit Administratoren den Zeitpunkt der Konvertierung und die ursprünglichen bzw. geänderten Werte für ein Attribut ermitteln können.
Im folgenden Beispielcode wird gezeigt, wie die Meldung verwendet wird:
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);
Den vollständigen Beispielcode finden Sie unter Beispiel: Konvertierung des Datums- und Uhrzeitverhaltens.
Siehe auch
Beispiel: Konvertierung des Datums- und Uhrzeitverhaltens
TechNet: Verhalten und Format des Datums- und Uhrzeitfelds
Anpassen von Entitätsattributmetadaten
© 2017 Microsoft. Alle Rechte vorbehalten. Copyright