Utilisation de sObjects
Objectifs de formation
Utilisation de sObjects
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
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.
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.
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.
Ressources
- Référence d’objet pour Salesforce et Force.com
- Apex Developer Guide: Utilisation des sObjects
- Guide du développeur Apex : Méthodes relatives aux sObjects