Skip to main content

Utilisation de sObjects

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Décrivez les relations entre des objets sObjects et des enregistrements Salesforce.
  • Créer et utiliser des variables sObject spécifiques
  • Définir un sObject générique en sObject spécifique

Utilisation de sObjects

Apex est étroitement intégrée à la base de données. Par conséquent, vous pouvez accéder aux enregistrements Salesforce et à leurs champs directement depuis Apex. Chaque enregistrement dans Salesforce est représenté nativement en tant que sObject dans Apex. Par exemple, l'enregistrement de compte Acme correspond à un sObject Compte dans Apex. Les champs de l'enregistrement Acme que vous pouvez afficher et modifier dans l'interface utilisateur peuvent également être lus et modifiés directement sur le sObject.

Le tableau suivant répertorie quelques champs renseignés de l'exemple d'enregistrement de compte Acme. Le sObject Compte est une abstraction de l'enregistrement de compte et garde en mémoire les informations sur le champ du compte en tant qu'objet.
Tableau 1. sObject Compte d'un enregistrement récupéré
Champ de compte Valeur
Id 001D000000JlfXe
Nom Acme
Téléphone (415) 555-1212
NumberOfEmployees 100

Chaque enregistrement Salesforce est représenté en tant que sObject avant d'être inséré dans Salesforce. De la même façon, lorsque des enregistrements permanents sont récupérés dans Salesforce, ils sont stockés dans une variable sObject.

Les enregistrements d'objet standard et personnalisés dans Salesforce sont mappés avec leur type de sObject dans Apex. Parmi les noms de type de sObject communs dans Apex et utilisés pour des objets standard figurent :

  • Compte
  • Contact
  • Une piste
  • Opportunité

Si vous avez ajouté des objets personnalisés dans votre organisation, utilisez les noms d'API des objets personnalisés dans Apex. Par exemple, un objet personnalisé appelé Marchandise correspond au sObject Marchandise__c dans Apex.

Création de variables sObject

Pour créer un sObject, vous devez déclarer une variable et lui attribuer une instance de sObject. Le type de données de la variable est le type du sObject.

L’exemple suivant crée un sObject de type Compte avec le nom Acme et l’attribue à la variable acct.

Account acct = new Account(Name='Acme');

Noms de sObject et de champ

Apex fait référence à des sObjects standards ou personnalisés et à leurs champs à l’aide de leurs noms d’API uniques.

Les noms d'API d'un objet et de champs peuvent être différents de leurs étiquettes. Par exemple, le champ Employés porte l'étiquette Employés et s'affiche dans la page d'enregistrement du compte en tant que Employés, mais son nom d'API est NumberOfEmployees. Pour accéder à ce champ dans Apex, vous devez utiliser le nom d'API du champ : NumberOfEmployees.

Les éléments ci-dessous présentent quelques règles utilisées pour les noms d'API des objets et des champs personnalisés.

Pour des objets et des champs personnalisés, le nom d'API se termine toujours par le suffixe __c. Pour des champs de relation personnalisés, le nom d'API se termine par le suffixe __r. Par exemple :

  • Un objet personnalisé avec une étiquette Marchandise porte le nom d'API Marchandise__c.
  • Un champ personnalisé avec une étiquette Description porte le nom d'API Description__c.
  • Un champ de relation personnalisé avec une étiquette Éléments porte le nom d'API Éléments__r.

De plus, les espaces dans les étiquettes sont remplacés par des traits de soulignement dans les noms d'API. Par exemple, un nom de champ personnalisé Ancienneté employé porte le nom d'API Ancienneté_employé__c.

Recherche de noms d’objets et de champs

Pour rechercher les noms d’objets standard et de leurs champs à utiliser dans Apex, reportez-vous à Object Reference for Salesforce and Lightning Platform.

Pour des objets standard et personnalisés, recherchez les noms d’API de l’objet et du champ dans votre organisation. Dans Configuration, cliquez sur l’onglet Gestionnaire d’objet à droite de l’onglet Accueil , puis cliquez sur le nom de votre objet.

Création de sObjects et ajout de champs

Pour pouvoir insérer un enregistrement Salesforce, vous devez d'abord le créer dans la mémoire en tant que sObject. Comme pour tout autre objet, les sObjects sont créés avec l'opérateur new :

Account acct = new Account();

Le nom d'objet API devient le type de données de la variable sObject dans Apex. Dans cet exemple, Account est le type de données de la variable acct.

Le compte référencé par la variable acct est vide, car nous n'avons pas encore renseigné ses champs. Il existe deux méthodes pour ajouter des champs : via le constructeur ou à l'aide d'une notation pointée.

La méthode la plus rapide consiste à les spécifier par paires nom-valeur dans le constructeur. Par exemple, l'instruction ci-dessous crée un sObject de compte et renseigne son champ Nom avec une valeur de chaîne.

Account acct = new Account(Name='Acme');

Le nom est le seul champ obligatoire pour des comptes. Par conséquent, il doit être renseigné pour pouvoir insérer un nouvel enregistrement. Vous pouvez toutefois renseigner d'autres champs du nouvel enregistrement. Cet exemple ajoute également un numéro de téléphone et le nombre d'employés.

Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);

Alternativement, vous pouvez utiliser la notation pointée pour ajouter des champs à un sObject. L'exemple ci-dessous est équivalent au précédent, même s'il nécessite davantage de lignes de code.

Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '(415)555-1212';
acct.NumberOfEmployees = 100;

Utilisation du type de données sObject générique

Généralement, vous utilisez un type de données sObjects spécifique, par exemple Compte pour un objet standard ou Book__c pour un objet personnalisé appelé Book. Cependant, si vous ne connaissez pas le type de sObject géré par votre méthode, vous pouvez utiliser le type de données sObject générique.

Les variables déclarées avec le type de données sObject générique peuvent référencer n'importe quel enregistrement Salesforce, que ce soit un enregistrement d'objet personnalisé ou standard.

Une variable sObject générique peut pointer vers n'importe quel enregistrement Salesforce

Cet exemple montre comment n’importe quel objet Salesforce, tel qu’un compte ou un objet personnalisé appelé Book__c, peut être attribué à une variable sObject générique.

sObject sobj1 = new Account(Name='Trailhead');
sObject sobj2 = new Book__c(Name='Workbook 1');

Par contre, les variables déclarées avec le type de données sObject spécifique peuvent référencer uniquement des enregistrements Salesforce de même type.

Une variable sObject spécifique peut pointer uniquement vers l'enregistrement Salesforce de même type

Définition de sObjects génériques sur des types sObjects spécifiques

Lorsque vous traitez des sObjects génériques, il est parfois nécessaire de définir votre variable sObject sur un type de sObject spécifique. Cette attribution permet d'accéder aux champs à l'aide de la notation pointée, qui n'est pas disponible dans le sObject générique. Le sObject est un type de parent pour tous les sObject spécifiques. Par conséquent, vous pouvez définir un sObject générique sur un sObject spécifique. L'exemple ci-dessous montre comment définir un sObject générique sur un Compte.

// Cast a generic sObject to an Account
Account acct = (Account)myGenericSObject;
// Now, you can use the dot notation to access fields on Account
String name = acct.Name;
String phone = acct.Phone;

En savoir plus...

Les champs d’un sObject générique sont accessibles uniquement via les méthodes put() et get().

Dans cette unité, nous avons présenté les sObjects et leur utilisation. Cependant, un sObject créé n'est pas conservé en tant qu'enregistrement dans la base de données. Pour sauvegarder le sObject en tant qu'enregistrement, et l'employer à d'autres fins, utilisez le langage DML (Data Manipulation Language). Pour récupérer un enregistrement, utilisez le langage SOQL (Salesforce Object Query Language). Pour plus d'informations sur les langages DML et SOQL, reportez-vous aux sections correspondantes.

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires