# CRUD depuis une variable d’enregistrement

## Aperçu

Avonni Dynamic Components fournit des interactions dédiées pour créer, lire, mettre à jour et supprimer (CRUD) directement des enregistrements Salesforce en utilisant des variables d’enregistrement que vous gérez. Alors que des composants comme les tableaux de données ou les listes gèrent eux-mêmes l’affichage et les mises à jour de leurs données, ces interactions d’opérations sur les enregistrements offrent un contrôle plus granulaire sur l’affichage et les mises à jour des données.&#x20;

Elles sont particulièrement utiles lorsque vous créez des formulaires personnalisés avec des champs de saisie individuels (souvent remplis via l’ [**Onglet Champs**](https://docs.avonnicomponents.com/dynamic-components/dynamic-components-fr/constructeur-de-composants/configurer-les-composants/champs) d’une variable d’enregistrement), que vous travaillez avec des enregistrements séparés en dehors d’un contexte de liste (par ex., après avoir récupéré des données avec une action « Au chargement »), ou dans des scénarios complexes nécessitant un contrôle précis de la manipulation des enregistrements, le tout sans nécessiter Apex ou des flux (Flows) étendus pour ces opérations de données directes.

{% hint style="warning" %}

#### **Limitation importante à garder à l’esprit**

Lors de l’utilisation des interactions CRUD avec des variables d’enregistrement, veuillez noter que **les champs masqués ne peuvent pas être mappés pour le moment**.

Cela inclut des champs tels que **les ID de type d’enregistrement** ou d’autres champs qui n’apparaissent pas dans la liste des champs disponibles pour le mappage. Si la définition de ces champs est critique pour votre cas d’utilisation, envisagez d’utiliser des approches alternatives telles que les Flows.

Nous travaillons activement à l’amélioration de cette fonctionnalité afin que cette limitation puisse être corrigée à l’avenir.
{% endhint %}

***

## Comment fonctionnent les opérations sur les enregistrements

### **Travailler avec une variable d’enregistrement spécifique**

Cette approche est courante lorsque vous :

* Une « copie de travail » distincte des données de l’enregistrement est nécessaire pour créer des formulaires personnalisés afin de **créer de nouveaux enregistrements**.
* Modifier un enregistrement qui **n’est pas l’enregistrement principal de la page** (par ex., modifier un enregistrement lié chargé dans une variable).
* Avoir besoin d’une **« copie de travail »** séparée des données de l’enregistrement avant l’enregistrement.

Le processus est :

* **a. Définir une variable d’enregistrement :** Dans le panneau Ressources, créez une **Variable** ressource. Définissez son **Type de données** sur `Enregistrement` et spécifiez l’objet Salesforce **Nom API de l'objet** (par ex., `Compte`, `Contact`, `My_Custom_Object__c`). Donnez-lui un nom d’API clair (par ex., `accountToEdit`, `newContactForm`).

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FsPunRZ38PWu8tiA87JeV%2F2025-09-02_13-18-55.png?alt=media&#x26;token=b2eaa340-7786-4011-a5ff-9a207de3d4c7" alt="" width="563"><figcaption></figcaption></figure>

* **b. Remplir la variable d’enregistrement :** Vous devez remplir cette variable d’enregistrement avec des données. Cela peut se produire par :
  * **Saisie utilisateur (pour créations/mises à jour) :** Placez des composants de saisie individuels (Champ de texte, Champ numérique, Liste de sélection, etc.) sur votre canevas. Vous pouvez facilement le faire en faisant glisser des champs depuis l’ **Onglet Champs** (qui affichera des champs en fonction de votre `accountToEdit` variable d’enregistrement). Ces composants de saisie deviennent automatiquement liés aux champs de votre variable d’enregistrement (par ex., `{!accountToEdit.Name}`, `{!accountToEdit.Industry}`). Au fur et à mesure que l’utilisateur tape ou effectue des sélections, votre `accountToEdit` variable est mise à jour.
  * **« Au chargement » > « Récupérer des enregistrements » (pour mises à jour/suppressions d’enregistrements spécifiques/connexes) :** Utilisez une interaction «[**Au chargement**](https://docs.avonnicomponents.com/dynamic-components/dynamic-components-fr/constructeur-de-composants/interaction-au-chargement)» sur votre composant pour récupérer un enregistrement spécifique (par ex., les détails d’un enregistrement lié) et stocker le résultat directement dans votre variable d’enregistrement.
  * **Autres interactions :** Cette variable peut également être remplie par un flux (action « Exécuter un flux » avec mappage des sorties) ou une action « Définir la valeur d’une variable ».
* **c. Déclencher l’opération sur l’enregistrement :** Ajoutez un composant interactif (généralement un Avonni **Bouton**) et configurez une **interaction Au clic** (ou autre événement pertinent) interaction.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FiIpk3QGJ4vzUVHXGXKzy%2F2025-09-02_13-20-43.png?alt=media&#x26;token=76ec69be-36be-4b0b-a140-ae52fe9fa4db" alt="" width="563"><figcaption></figcaption></figure>

* **d. Choisir l’interaction d’opération sur l’enregistrement :** Dans les paramètres d’interaction pour votre bouton (de l’étape c) :
  * Pour **Type d'action**, sélectionnez d’abord la catégorie (si applicable) telle que **« Opérations sur les variables d’enregistrement »**.
  * Ensuite, parmi les actions de cette catégorie, choisissez l’opération spécifique dont vous avez besoin :
    * `Créer un enregistrement`
    * `Mettre à jour un enregistrement`
    * `Upsert (créer ou mettre à jour) un enregistrement`
    * `Supprimer un enregistrement`
* **e. Sélectionnez votre variable d’enregistrement :** Dans la configuration de l’action, choisissez la **Variable d'enregistrement** que vous avez définie et remplie (par ex., `{!accountToEdit}`).

### **Travailler avec le contexte d’enregistrement de la page courante (`$Component.record`)**

Cette approche est utilisée lorsque votre composant dynamique est placé sur une **page d’enregistrement Salesforce**, et que vous souhaitez afficher, modifier et enregistrer des modifications sur **cet enregistrement spécifique**.

* **a. Sélectionner l’objet cible de la page :** Dans les **Paramètres** de votre composant dynamique (icône d’engrenage ⚙️), définissez le  [**Objet de page cible**](https://docs.avonnicomponents.com/dynamic-components/dynamic-components-fr/commencer/comprendre-lessentiel/objet-de-la-page-cible) (par ex., `Compte`). Cette étape cruciale informe votre composant qu’il fonctionne dans le contexte de l’objet Salesforce spécifié.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FsNjjwZw5ba5ejMFSlzTm%2F2025-09-02_13-22-08.png?alt=media&#x26;token=fd965fcc-fbfd-4f6a-84e2-4533c578e1c4" alt="" width="563"><figcaption></figcaption></figure>

* **b. Placer sur une page d’enregistrement correspondante :** Ajoutez votre composant dynamique à une page d’enregistrement correspondante en utilisant le Lightning App Builder (par ex., placez le composant avec l’Objet cible `Compte` sur une page d’enregistrement Account).
* **c. Afficher/Modifier les champs en utilisant `$Component.record`:** Les champs glissés depuis l’ **Onglet Champs** (qui affiche maintenant les champs pour votre Objet cible) sur votre canevas seront généralement automatiquement liés à `$Component.record.FieldName` (par ex., `$Component.record.Name`). Les utilisateurs peuvent voir ou modifier ces champs.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2F0EvUb4zWid4bxJmC8v9B%2F2025-09-02_13-23-26%20(1).gif?alt=media&#x26;token=370c4513-3f38-4fab-a581-30d0237c2e2e" alt=""><figcaption></figcaption></figure>

* **d. Déclencher l’opération d’enregistrement :** Ajoutez un Avonni **Bouton** (par ex., libellé « Enregistrer les modifications ») et configurez une **interaction Au clic** interaction.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2F65rQDyNRy2jdAKyrqk1i%2F2025-09-02_13-24-33.png?alt=media&#x26;token=6018345a-601c-475b-9a34-7198f2af1de4" alt="" width="563"><figcaption></figcaption></figure>

* **e. Choisissez l’ `Mettre à jour un enregistrement` Interaction :**&#x20;

Dans les paramètres d’interaction, sélectionnez le type d’action **Mettre à jour un enregistrement** . Cette interaction enregistre les modifications apportées aux champs liés au contexte d’enregistrement de la page courante ($Component.record).

Puisque vous avez configuré l’objet cible de la page à l’étape a, assurez-vous de sélectionner **`Enregistrement de la page cible`** comme variable d’enregistrement. Cela lie l’interaction au contexte d’enregistrement spécifique établi à l’étape a, permettant au composant dynamique de mettre à jour le bon enregistrement sans avoir besoin de re-sélectionner les champs

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FJyNARp5ffivbOg6qA8ge%2F2025-09-02_13-33-27.png?alt=media&#x26;token=b995822e-d278-4a4c-a11b-a66c24f15689" alt="" width="563"><figcaption></figcaption></figure>

***

## Exemple : Créer un formulaire personnalisé pour créer un nouveau Lead

Cet exemple démontre l’utilisation d’une **Variable d'enregistrement** et de l’interaction **« Créer à partir d’une variable d’enregistrement »** pour construire un formulaire personnalisé pour la création de nouveaux enregistrements Lead.

### **Scénario**

Vous voulez un formulaire simple et ciblé sur une page d’application ou la page d’accueil pour capturer rapidement de nouveaux Leads. Il doit avoir une mise en page spécifique et n’inclure que les champs essentiels, plutôt que le bouton standard « Nouveau Lead », qui peut contenir de nombreux champs.

### **Configuration**

{% stepper %}
{% step %}

### **Créer une variable d’enregistrement pour le nouveau Lead**

* Dans les **bouton Ressources** panneau, créez une nouvelle **Variable**.
* **Nom API :** `newLeadData`
* **Type de données :** `Enregistrement`
* **Nom API de l'objet :** Sélectionnez `Lead`.

{% hint style="warning" %}

## Remarque sur la configuration des variables d’enregistrement&#x20;

Lors de la création d’une nouvelle variable d’enregistrement pour le formulaire de lead, vous ne pouvez pas utiliser les paramètres d’Objet cible de la page. Étant donné que ce formulaire sera placé sur la page d’accueil, l’Objet cible de la page ne fournit pas d’informations contextuelles pertinentes pour le fonctionnement du composant dynamique. Définissez plutôt une nouvelle variable d’enregistrement pour spécifier clairement le contexte dans lequel le composant fonctionne.
{% endhint %}

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FsPunRZ38PWu8tiA87JeV%2F2025-09-02_13-18-55.png?alt=media&#x26;token=b2eaa340-7786-4011-a5ff-9a207de3d4c7" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### **Construire le formulaire en utilisant l’onglet Champs**

* Avec l' `newLeadData` Variable d’enregistrement sélectionnée (ou simplement disponible dans vos ressources), allez à l’ **bibliothèque de composants** (panneau de gauche) et sélectionnez le **Onglet Champs**. Vous verrez les champs de la `Lead` .
* Faites glisser les champs suivants sur votre canevas pour créer des composants d’entrée. Ils se lieront automatiquement à votre `newLeadData` variable :
  * `FirstName`&#x20;
  * `LastName` (Champ de texte)
  * `Entreprise` (Champ de texte)
  * `Email` (Champ email)
  * `LeadSource` (créera probablement une Combobox si c’est une liste de sélection)
* Disposez ces composants d’entrée sur le canevas comme vous le souhaitez (par ex., dans une Carte ou des Colonnes pour une meilleure mise en page).

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FZYgBt4qfGqdvXs1IPaMr%2F2025-09-02_13-36-08%20(1).gif?alt=media&#x26;token=3de813e7-7f15-4402-9e33-13ed9854eefc" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### **Ajouter un bouton « Créer Lead »**

* Faites glisser un composant Avonni **Bouton** composant sur le canevas sous vos champs de saisie.
* **Étiquette :** « Créer Lead »
* **Variante :** `marque` (ou votre style préféré)

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2F4tFyOCK5dfytKRMRAsmQ%2F2025-09-02_13-41-33%20(1).gif?alt=media&#x26;token=9f203573-17ff-4962-be86-71f2fb70f44a" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### **Configurer l’interaction « Créer à partir de la variable d’enregistrement »**

* Sélectionnez le bouton « Créer Lead » **Bouton**.
* Dans le panneau Propriétés, allez à la **Interactions** section.
* Ajoutez une interaction à l’événement **interaction Au clic** .
* **Type d'action :** Choisissez `Créer à partir d'une variable d'enregistrement`.
* **Variable d'enregistrement :** Sélectionnez votre `{!newLeadData}` variable depuis la liste des ressources.

<figure><img src="https://3527646760-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FODPvvv7Cx9Z9RECLn3oV%2Fuploads%2FItW1kJaVrn1dLeZZ81Qz%2F2025-09-02_13-43-20%20(1).gif?alt=media&#x26;token=a4942e9c-1c2a-405f-b62f-2a802b295a8a" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### **Ajouter un retour d’information (optionnel mais recommandé)**

* Toujours dans l’interaction « Au clic » du bouton, *que l'utilisateur ait réussi à capturer une ou plusieurs images et confirmé l'action (par ex. : clique sur "Terminé" ou "Enregistrer" dans l'interface caméra, surtout si* l’action « Créer à partir de la variable d’enregistrement », cliquez à nouveau sur « Ajouter une action ».
* **Type d'action :** `Afficher Toast`.
* **Configurer le toast :**
  * Titre : `Succès`
  * Message : `Nouveau Lead créé avec succès !`
  * Variante : `success`
    {% endstep %}
    {% endstepper %}

### **Résultat**

Lorsqu’un utilisateur remplit le formulaire personnalisé :

1. Les composants d’entrée (Champs de texte, Combobox) mettent à jour directement les champs de la `newLeadData` variable d’enregistrement en temps réel (grâce au lien créé lors du glissement depuis l’onglet Champs).
2. Lorsque l’utilisateur clique sur le bouton « Créer Lead », l’interaction « Créer à partir de la variable d’enregistrement » prend toutes les données actuellement dans la `newLeadData` variable et les utilise pour créer un nouvel enregistrement Lead dans Salesforce.
3. Le message toast de succès apparaît ensuite.

Cet exemple montre clairement :

* La définition d’une variable d’enregistrement pour un nouvel enregistrement.
* Le remplissage de cette variable d’enregistrement à l’aide de champs de saisie liés via l’onglet Champs.
* L’utilisation de l’interaction **« Créer à partir d’une variable d’enregistrement »** pour enregistrer ces données dans Salesforce

{% hint style="warning" %}

## variable sera mise à jour, et vous pourrez utiliser ces valeurs pour filtrer un Data Table.

* **Les variables d’enregistrement sont essentielles :** Ces interactions CRUD *exigent* l’utilisation de variables d’enregistrement.
* **« Au chargement » pour la récupération :** Utilisez [l’interaction « Au chargement »](https://docs.avonnicomponents.com/dynamic-components/dynamic-components-fr/constructeur-de-composants/interaction-au-chargement) avec « Récupérer des enregistrements » pour obtenir les données d’enregistrements existants.
* **Liaison de données pour la saisie :** Utilisez la liaison de données pour connecter les composants d’entrée aux champs de votre variable d’enregistrement.
* **Limitation des champs masqués** : Actuellement, les interactions CRUD **ne prennent pas en charge le mappage des champs masqués**, tels que les ID de type d’enregistrement ou d’autres champs non visibles dans la liste de champs. Si vous avez besoin de définir des champs masqués, envisagez d’utiliser des méthodes alternatives, telles que les Flows ou de futures mises à jour d’Avonni, car des améliorations dans ce domaine sont prévues.
* **Gestion des erreurs :** Envisagez d’ajouter une gestion des erreurs (par ex., en utilisant l’événement « En cas d’erreur » de l’interaction « Exécuter un flux » si vous utilisez un Flow pour une logique plus complexe).
* **Autorisations :** Les utilisateurs doivent disposer des autorisations Salesforce appropriées (Créer, Modifier, Supprimer) sur les objets concernés.
* **Utiliser l’action de suppression avec prudence :** Utilisez l’action de suppression avec précautio&#x6E;**.**
  {% endhint %}

## **En résumé**

Avonni Dynamic Components offre un moyen puissant d’interagir avec les données Salesforce en utilisant des variables d’enregistrement et des interactions CRUD. Ces fonctionnalités vous permettent de créer des capacités sophistiquées de gestion des données sans écrire de code, ce qui est idéal pour créer des formulaires personnalisés et mettre à jour des enregistrements liés.
