Configurer le comportement et le format de la colonne de date et d’heure à l’aide de code
Si vous avez des utilisateurs et des bureaux partout dans le monde, il est important de représenter correctement les valeurs de date et d’heure sous la forme de plusieurs fuseaux horaires. Le DateTimeAttributeMetadata
(Type d’entité DateTimeAttributeMetadata ou la Classe DateTimeAttributeMetadata ) permet de définir et de gérer les colonnes de type DateTime
dans Microsoft Dataverse. Utilisez la propriété DateTimeBehavior
(pour le Kit de développement logiciel (SDK) pour .NET, voir Propriété DateTimeBehavior) pour définir s’il faut stocker les valeurs de date et d’heure avec ou sans informations de fuseau horaire, et utilisez la Propriété DateTimeAttributeMetadata.Format pour spécifier le format d’affichage de ces colonnes.
Vous pouvez également utiliser la zone de personnalisation dans Dataverse pour définir le comportement et le format des colonnes de date et d’heure. Informations complémentaires : Comportement et format de la colonne de date et d’heure.
Notes
Toutes les colonnes de date et d’heure dans Dataverse prennent en charge toutes les valeurs à partir du 01/01/1753 minuit.
Si votre champ Date uniquement ou Date et heure se trouve dans une solution, vous ne pouvez modifier le comportement d’un champ géré existant que si vous êtes l’éditeur. Afin d’apporter des modifications à ces champs, il est nécessaire de mettre à niveau la solution qui a ajouté la colonne Date uniquement ou Date et heure. Plus d’informations : Mettre à niveau ou mettre à jour une solution
Spécifier le comportement d’une colonne de date et heure
Vous pouvez utiliser le DateTimeBehavior
(Type complexe DateTimeBehavior ou la Classe DateTimeBehavior) pour spécifier une valeur pour le Type d’entité DateTimeAttributeMetadata.DateTimeBehavior
propriété. DateTimeBehavior
contient les membres suivants ; chaque membre renvoie une chaîne avec la même valeur que le nom du membre :
Nom et valeur du membre | Description |
---|---|
UserLocal |
- Stocke la valeur de date et d’heure comme valeur UTC dans le système. - L’opération de récupération retourne la valeur UTC. - Le processus de mise à jour convertit la valeur UTC dans la valeur de fuseau horaire de l’utilisateur actuel, puis stocke la valeur mise à jour telle quelle ou sous la forme d’une valeur UTC équivalente en fonction du type (DateTimeKind) de la valeur spécifiée pour la mise à jour. Si la valeur spécifiée est de type UTC, elle sera stockée telle quelle. Sinon, la valeur équivalente à UTC sera stockée. - La récupération de la valeur mise en forme convertit la valeur UTC dans le fuseau horaire actuel de l’utilisateur en fonction du paramètre de fuseau horaire et des paramètres régionaux de l’utilisateur. - Pour l’API web, la colonne est exposée en tant que DateTimeOffset. - Ce comportement est utilisé pour les colonnes système comme CreatedOn et ModifiedOn , et ne peut pas être modifié. Vous devez utiliser ce comportement pour les colonnes personnalisées où vous souhaitez stocker les valeurs de date et d’heure avec les informations de fuseau horaire. |
DateOnly |
- Stocke la valeur de date actuelle sans valeur d’heure. - La récupération de la valeur mise en forme affiche la valeur de la date. - Pour l’API web, la colonne est exposée en tant que Date. - Ce comportement doit être utilisé pour les colonnes personnalisées qui stockent les dates d’anniversaires, pour lesquelles les informations d’heure ne sont pas nécessaires. |
TimeZoneIndependent |
- Stocke les valeurs de date et d’heure réelles dans le système quel que soit le fuseau horaire de l’utilisateur. - Pour les opérations de récupération et de mise à jour, aucune conversion de fuseau horaire n’est effectuée, et les valeurs de date et d’heure réelles sont retournées et mises à jour respectivement dans le système quel que soit le fuseau horaire de l’utilisateur. - La récupération de la valeur mise en forme affiche la valeur de date et d’heure (sans conversion de fuseau horaire) selon le format spécifié par le paramètre de fuseau horaire et les paramètres régionaux de l’utilisateur actuel. - Pour l’API web, la colonne est exposée en tant que DateTimeOffset. - Ce comportement doit être utilisé pour les colonnes qui stockent les informations telles que les arrivées et les départs dans les hôtels. |
L’exemple de code suivant montre comment définir un comportement UserLocal
pour une nouvelle colonne de date et heure :
/// <summary>
/// Create a new DateTime column for the Account table with UserLocal behavior
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void CreateUserLocalDateTimeColumn(IOrganizationService service) {
int _languageCode = 1033; //English
DateTimeAttributeMetadata dtAttribute = new()
{
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 = Microsoft.Xrm.Sdk.Metadata.DateTimeFormat.DateAndTime,
ImeMode = ImeMode.Disabled
};
CreateAttributeRequest request = new()
{
EntityName = Account.EntityLogicalName,
Attribute = dtAttribute
};
service.Execute(request);
}
Dans l’exemple de code, vous pouvez également définir la valeur de la propriété DateTimeBehavior
en spécifiant directement la valeur de chaîne : DateTimeBehavior = "UserLocal"
Si vous ne spécifiez pas le comportement en créant une colonne de date et heure, la colonne est créée avec le comportement UserLocal
par défaut.
Important
- Après avoir créé une colonne de date et heure avec le comportement défini sur
DateOnly
ouTimeZoneIndependent
, vous ne pourrez plus modifier le comportement de la colonne. Plus d’informations : Modifier le comportement d’une colonne DateTime - Les colonnes de date et d’heure avec le comportement
DateOnly
ouTimeZoneIndependent
seront traités comme pour le comportementUserLocal
lorsqu’il est modifié dans une version antérieure du client Dynamics 365 for Outlook en mode hors connexion. Cela est dû au fait que le client ne comprend pas les nouveaux comportements et ne les traitera pas différemment deUserLocal
. Aucune colonne de date ni d’heure n’est convertie en nouveaux comportements lors de la mise à niveau, donc la meilleure pratique ici sera de mettre à niveau tous les clients Dataverse dans la dernière version avant qu’un personnalisateur adopte un des nouveaux comportements. Une fois en ligne, la modification des données des colonnes avec les nouveaux comportements fonctionne également parfaitement.
Spécifier le format de la colonne de date et heure
Utilisez la propriété Format
. pour spécifier le format d’affichage de date/heure de la colonne indépendamment de la façon dont elle est stockée dans le système. Vous pouvez utiliser l’énumération DateTimeFormat
(type d’énumération DateTimeFormat ou l’énumération DateTimeFormat) pour spécifier le format d’affichage : DateAndTime
ou DateOnly
.
Si la propriété DateTimeAttributeMetadata.DateTimeBehavior
est définie sur DateOnly
, vous ne pourrez pas définir ni modifier la valeur de la propriété DateTimeAttributeMetadata.Format
DateAndTime
.
Opérateurs de requête de date et d’heure non pris en charge pour le comportement DateOnly
Les opérateurs de requête associés à l’heure ne sont pas pris en charge pour le comportement DateOnly
. Hormis les opérateurs de requête spécifiques à l’heure répertoriés ici, tous les autres opérateurs de requête sont pris en charge.
- Plus de X minutes
- Plus de X heures
- X dernières heures
- X prochaines heures
Plus d’informations : Opérateurs de données de date et d’heure
Utilisation des API OData pour soumettre les valeurs de date et d’heure locales de l’utilisateur
Dans Microsoft Power Platform, lorsqu’un utilisateur soumet une date et une heure du fuseau horaire spécifique à l’utilisateur via l’interface utilisateur, un calcul automatique définit les données sur la date et l’heure correctes. Une analyse est effectuée pour remplacer toute date soumise par la valeur UTC correspondante en fonction de la colonne et des paramètres de l’interface utilisateur. Lors de la soumission d’une valeur de date et d’heure à l’aide de l’opération d’API web, le calcul n’a pas lieu, ce qui entraîne des affichages de données inexpliqués. Par exemple, si vous êtes dans le fuseau horaire du Pacifique et que vous soumettez 4/4/2021 12:00, voici ce qui se passe :
- Valeur d’origine : 4/4/2021 12:00 ; l’utilisateur se trouve dans le fuseau horaire du Pacifique.
- Soumise via l’interface utilisateur et récupérée en tant qu’heure locale de l’utilisateur : 4/4/2021 12:00
- Soumise via l’API et récupérée en tant qu’heure locale de l’utilisateur : 4/4/2021 04:00
Soumission via l’interface utilisateur
L’interface utilisateur est définie sur l’heure locale de l’utilisateur et la colonne est définie sur l’heure locale de l’utilisateur.
- Valeur d’origine : 4/4/2021 12:00 ; fuseau horaire du Pacifique.
- Valeur calculée en UTC et stockée dans Dataverse : 4/4/2021 12:00 + 8:00 = 4/4/2021T20:00:00Z. C’est parce que le fuseau PST est à -8:00 du fuseau UTC, donc +8 est ajouté à la valeur stockée.
- Valeur lorsqu’elle est affichée dans l’interface utilisateur par un utilisateur dans le fuseau horaire du Pacifique : 4/4/2021 12:00. L’interface utilisateur applique le calcul de décalage de -8:00 UTC à 04/04/2021T20:00:00Z pour obtenir la valeur correcte.
Soumission via l’API
L’interface utilisateur est définie sur l’heure locale de l’utilisateur et la colonne est définie sur l’heure locale de l’utilisateur.
- Valeur d’origine: 4/4/2021T12:00:00 ou 4/4/2021T12:00:00Z - aucun décalage ou indicateur UTC fourni. L’utilisateur se trouve dans le fuseau horaire du Pacifique.
- Valeur calculée en UTC et stockée dans Dataverse : Aucun calcul d’interface utilisateur n’est effectué lors de la soumission à partir des API OData, la valeur est donc stockée sous la forme 4/4/2021T12:00:00Z.
- Valeur lorsqu’elle est affichée dans l’interface utilisateur par un utilisateur dans le fuseau horaire du Pacifique : 4/4/2021 4:00. L’interface utilisateur applique le calcul de décalage UTC de -8:00 à la valeur dans Dataverse.
Pour éviter ce problème en cas d’utilisation d’appels d’API pour entrer des données dans les colonnes locales de l’utilisateur, vous devez calculer le décalage en soumettant les données et en appliquant le décalage.
Utilisez l’exemple ci-dessus : 4/4/2021 12:00 devra être soumis via l’API comme 04/04/2021T12:00:00-08:00. L’heure et la date d’origine incluent le calcul de décalage du fuseau horaire de l’utilisateur actuel. Sinon, l’utilisateur peut effectuer le calcul avant la soumission, puis soumettre 04/04/2021T20:00:00Z.
Si vous choisissez d’inclure le calcul du décalage, vous ne pouvez pas avoir de valeur Z
, un indicateur UTC, car Dataverse ne l’acceptera pas.
Modifier le comportement d’une colonne de date et heure
Vous pouvez mettre une colonne de date et heure à jour pour modifier son comportement si vous détenez le rôle de personnalisateur de système dans votre instance des applications Dataverse et que la propriété gérée DateTimeAttributeMetadata.CanChangeDateTimeBehavior
pour la colonne de date et heure est définie sur True
.
Attention
Avant de modifier le comportement d’une colonne de date et heure, vous devez examiner toutes les dépendances de la colonne, telles que les règles métier, les workflows et les colonnes calculées ou cumulatives, pour éviter de générer des problèmes. Les personnalisateurs de système peuvent limiter la modification du comportement des colonnes de date et d’heure existants à l’aide de la propriété gérée DateTimeAttributeMetadata.CanChangeDateTimeBehavior
.
Au minimum, après avoir modifié le comportement d’une colonne de date et heure, vous devez ouvrir chaque enregistrement de règle métier, de workflow, de colonne calculée et de colonne cumulative qui dépend de la colonne de date et heure modifiée, vous devez lire les informations, puis enregistrer l’enregistrement pour garantir que le dernier comportement et la dernière valeur de colonne sont utilisés.
Après avoir modifié le comportement de date et d’heure d’une colonne calculée ou cumulative, ouvrez l’éditeur de définition de colonne cumulative ou calculée, puis enregistrez la définition de la colonne pour vérifier que la colonne est encore valide après modification du comportement. Les personnalisateurs de système peuvent ouvrir l’éditeur de définition de la colonne pour la colonne calculée ou cumulative en cliquant sur Modifier en regard de Type de champ dans la zone de personnalisation dans les applications Dataverse. En savoir plus : Définir des colonnes calculées pour automatiser les calculs et Définir des colonnes de cumul qui agrègent les valeurs
Le comportement des colonnes
CreatedOn
etModifiedOn
pour les tables prédéfinies et personnalisées est défini surUserLocal
par défaut, et la propriété géréeDateTimeAttributeMetadata.CanChangeDateTimeBehavior
est définie surFalse
, ce qui implique que vous ne pouvez pas modifier le comportement de ces colonnes. Bien que les utilisateurs puissent modifier la valeur de la propriété géréeDateTimeAttributeMetadata.CanChangeDateTimeBehavior
de ces colonnes pour les tables personnalisées, ils ne peuvent toujours pas modifier le comportement des colonnes.Pour les nouvelles colonnes de date et d’heure, la propriété gérée
DateTimeAttributeMetadata.CanChangeDateTimeBehavior
est définie surTrue
. Cela implique que vous pouvez remplacer le comportement d’une colonne de date et heure personnaliséUserLocal
parDateOnly
ouTimeZoneIndependent
; aucune autre transition de comportement n’est autorisée.Pour les colonnes de date et d’heure personnalisées qui font partie d’une organisation Dataverse, la propriété gérée
DateTimeAttributeMetadata.CanChangeDateTimeBehavior
est définie surTrue
sauf si la colonne ou la table parente ne sont pas personnalisables.Notes
Lorsque vous mettez à jour la propriété
DateTimeAttributeMetadata.DateTimeBehavior
d’une colonneUserLocal
DateOnly
, vérifiez que vous remplacez également la propriétéDateTimeAttributeMetadata.Format
DateAndTime
parDateOnly
. Sinon, une exception se produit.Les colonnes de date et d’heure prédéfinies suivantes dans Dataverse sont définis par défaut sur
DateOnly
et la propriété géréeDateTimeAttributeMetadata.CanChangeDateTimeBehavior
est définie surFalse
pour ces colonnes, ce qui implique que vous ne pouvez pas modifier le comportement de ces colonnes :Colonne de date et heure Table parente anniversary
Contact birthdate
Contact duedate
Facture estimatedclosedate
Prospect actualclosedate
Opportunité estimatedclosedate
Opportunité finaldecisiondate
Opportunité validfromdate
Produit validtodate
Produit closedon
Devis expireson
Devis Le comportement de ces colonnes est défini sur
UserLocal
et la propriété géréeDateTimeAttributeMetadata.CanChangeDateTimeBehavior
surTrue
, et vous pouvez modifier le comportement de ces colonnes surDateOnly
uniquement. Aucune autre transition de comportement n’est autorisée.
Après la mise à jour du comportement d’une colonne, vous devez publier les personnalisations pour que la modification soit effective. La mise à jour du comportement d’une colonne de date et heure garantit que toutes les valeurs entrées/mises à jour après la mise à jour du comportement de colonne, sont stockées dans le système en fonction du nouveau comportement. Cela n’impacte pas les valeurs qui sont déjà stockées dans la base de données, elles restent enregistrées en tant que valeurs UTC. Toutefois, si vous récupérez les valeurs existantes dans le SDK ou les afficher dans l’interface utilisateur, les valeurs apparaîtront en fonction du nouveau comportement de la colonne. Par exemple, si vous avez remplacé le comportement d’une colonne personnalisée dans une entité compte UserLocal
en DateOnly
et que vous récupérez un enregistrement de compte existant en utilisant le SDK, la date et l’heure s’affichent sous la forme d’une <Date> suivie de 00:00:00 correspondant à minuit. De même, pour le changement de comportement UserLocal
en TimeZoneIndependent
, la valeur réelle dans la base de données apparaît sans aucune conversion de fuseau horaire.
L’exemple de code suivant montre comment mettre à jour le comportement d’une colonne de date et heure :
/// <summary>
/// Update the behavior of a DateTime column
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void UpdateBehaviorOfDateTimeColumn(IOrganizationService service) {
// Retrieve the attribute to update its behavior and format
RetrieveAttributeRequest retrieveColumnRequest = new()
{
EntityLogicalName = Account.EntityLogicalName,
LogicalName = "new_sampledatetimeattribute",
RetrieveAsIfPublished = false
};
// Execute the request
RetrieveAttributeResponse attributeResponse =
(RetrieveAttributeResponse)service.Execute(retrieveColumnRequest);
// Modify the values of the retrieved attribute
DateTimeAttributeMetadata retrievedAttributeMetadata =
(DateTimeAttributeMetadata)attributeResponse.AttributeMetadata;
retrievedAttributeMetadata.DateTimeBehavior = DateTimeBehavior.DateOnly;
retrievedAttributeMetadata.Format = Microsoft.Xrm.Sdk.Metadata.DateTimeFormat.DateOnly;
// Update the attribute with the modified value
UpdateAttributeRequest updateRequest = new()
{
Attribute = retrievedAttributeMetadata,
EntityName = Account.EntityLogicalName,
MergeLabels = false
};
service.Execute(updateRequest);
// Publish customizations to the account
PublishXmlRequest pxReq = new()
{
ParameterXml = "<importexportxml><entities><entity>account</entity></entities></importexportxml>"
};
service.Execute(pxReq);
}
Convertir le comportement des valeurs de date et heure dans la base de données
Lorsque vous mettez à jour une colonne de date et heure pour remplacer son comportement UserLocal
en DateOnly
ou TimeZoneIndependent
, il ne convertit pas automatiquement les valeurs de colonnes existantes dans la base de données. Le changement de comportement affecte uniquement ces valeurs qui seront entrées ou mises à jour dans la colonne après la modification du comportement. Les valeurs de date et heure dans le système restent au format UTC et affichées par Dataverse en fonction du nouveau comportement lorsque récupérées via le SDK ou dans l’interface utilisateur comme décrit dans la section précédente. Pour les colonnes dont le comportement est passé de UserLocal
à DateOnly
, vous pouvez convertir les valeurs UTC existantes dans la base de données en valeur DateOnly
appropriée pour éviter toute anomalie de données en utilisant le message ConvertDateAndTimeBehavior
.
Le message vous permet de spécifier une règle de conversion (si vous utilisez le SDK pour .NET, voir Propriété ConvertDateAndTimeBehaviorRequest.ConversionRule) pour sélectionner le fuseau horaire à utiliser pour la conversion des valeurs UTC en DateOnly. Vous pouvez spécifier l’une des règles de conversion suivantes :
SpecificTimeZone
: convertit une valeur UTC en valeur DateOnly en fonction du code du fuseau horaire de Dataverse spécifié. Dans ce cas, vous devez spécifier une valeur pour la Propriété ConvertDateAndTimeBehaviorRequest.TimeZoneCode.CreatedByTimeZone
: convertit une valeur UTC en valeur DateOnly que l’utilisateur auteur de l’enregistrement verra dans l’interface utilisateur.OwnerTimeZone
: convertit une valeur UTC en valeur DateOnly que l’utilisateur propriétaire de l’enregistrement verra dans l’interface utilisateur.LastUpdatedByTimeZone
: convertit une valeur UTC en valeur DateOnly que l’utilisateur ayant récemment actualisé l’enregistrement verra dans l’interface utilisateur.
Vous pouvez utiliser un des quatre membres de la Classe DateTimeBehaviorConversionRule pour spécifier une valeur valide pour la Propriété ConversionRule.
Notes
Vous devez disposer du rôle administrateur système dans votre instance Dataverse pour exécuter la Classe ConvertDateAndTimeBehaviorRequest.
Lorsque vous exécutez ConvertDateAndTimeBehavior
(si vous utilisez le SDK pour .NET, voir le message ConvertDateAndTimeBehaviorRequest), une tâche système (opération asynchrone) est créée pour exécuter la demande de conversion. La colonne ConvertDateAndTimeBehaviorResponse.JobId
dans la réponse du message affiche l’ID de la tâche système créée suite à la demande de conversion. Une fois la tâche système effectuée, consultez les informations relatives à la tâche (AsyncOperation.Message
) pour afficher les détails ou les erreurs de conversion éventuelles.
Notes
Nous vous recommandons de regrouper la conversion de plusieurs colonnes en une tâche de conversion unique, et d’exécuter une tâche de conversion unique pour éviter tout conflit lors de l’opération et pour optimiser les performances système.
Quelques aspects importants à prendre en compte lors de l’utilisation du message ConvertDateAndTimeBehavior
:
- Vous devez éviter les modifications majeures dans les solutions des applications Dataverse lors de l’exécution du message, comme importer une solution ou supprimer une colonne ou une table parente. Cela peut produire un comportement inattendu ; toutefois aucune perte de données ne se produit.
- Les mises à jour apportées au système suite à l’exécution du message n’exécutent pas les workflows ni les plug-ins.
- Les mises à jour apportées au système suite à l’exécution du message ne modifient pas la valeur « Date de la dernière modification » pour les colonnes, mais seront auditées pour aider les administrateurs à déterminer la période de la conversion et les valeurs d’origine/modifiées pour une colonne.
L’exemple de code suivant montre comment utiliser le message :
/// <summary>
/// Demonstrates use of the ConvertDateAndTimeBehavior message
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void ConvertDateAndTimeBehavior(IOrganizationService service)
{
ConvertDateAndTimeBehaviorRequest request = new()
{
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 Dataverse
AutoConvert = false // Conversion must be done using ConversionRule
};
// Execute the request
var response = (ConvertDateAndTimeBehaviorResponse)service.Execute(request);
Console.WriteLine($"Asynchronous Job ID: {response.JobId}");
}
Le client Web gère la conversion de fuseau horaire différemment de Unified Interface
Le client Web a été déconseillé en 2019. Si vous migrez des scripts clients vers son successeur, Unified Interface, notez la différence dans la façon dont les deux clients gèrent la conversion des fuseaux horaires pour les colonnes Heure locale de l’utilisateur.
Dans le client Web, la conversion du fuseau horaire n’était pas effectuée côté client. Si un utilisateur entrait 2018-10-15 07:30
dans un formulaire de client Web, l’API client Xrm.Page.getAttribute(<column name>).getValue()
renvoyait 2018-10-15 07:30
. Cette valeur est envoyée au serveur et les ajustements de fuseau horaire s’y produisent lors de l’enregistrement de la valeur.
Dans le client Unified Interface, la conversion du fuseau horaire se fait côté client. Si un utilisateur dans le fuseau horaire UTC+8 entre 2018-10-15 07:30
dans un formulaire Unified Client, l’API client formContext.getAttribute(<column name>).getValue()
renvoie la valeur ajustée 2018-10-14T23:30:00Z
. Le serveur accepte la valeur telle quelle et n’effectue aucun ajustement supplémentaire du fuseau horaire.
Pour tenir compte de cette différence, vous pouvez :
- Obtenir le décalage du fuseau horaire de l’utilisateur avec la Méthode Component Framework UserSettings.getTimeZoneOffsetMinutes ou la Méthode Xrm.Utility.getGlobalContext().userSettings.getTimeZoneOffsetMinutes et modifier vos scripts pour en tenir compte.
- Modifier le comportement de la colonne de
UserLocal
àTimeZoneIndependent
afin que les heures saisies ne soient pas ajustées. Cela n’est possible que si les fuseaux horaires ne sont pas applicables pour la colonne.
Voir aussi
Comportement et format de la colonne Date et heure
Résoudre les problèmes de date et d’heure dans les applications pilotées par modèle
Vue d’ensemble des colonnes
Classe ConvertDateAndTimeBehaviorRequest
Classe DateTimeAttributeMetadata
Blog : La manière de soumettre les données de date et d’heure est-elle importante ?
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).