Utilizzare gli sObject
Obiettivi di apprendimento
Utilizzare gli sObject
Campo account | Valore |
---|---|
ID | 001D000000JlfXe |
Name | Acme |
Phone | (415) 555-1212 |
NumberOfEmployees | 100 |
Ciascun record Salesforce è rappresentato come sObject prima di essere inserito in Salesforce. Analogamente, quando i record salvati in modo permanente vengono recuperati da Salesforce, vengono memorizzati in una variabile sObject.
I record oggetti standard e personalizzati in Salesforce corrispondono ai rispettivi tipi di sObject in Apex. Ecco alcuni nomi di tipi di sObject comuni in Apex utilizzati per gli oggetti standard.
- Account
- Contact
- Lead
- Opportunity
Se hai aggiunto oggetti personalizzati nella tua organizzazione, utilizza i nomi API degli oggetti personalizzati in Apex. Ad esempio, un oggetto personalizzato chiamato Merce corrisponde all'oggetto Merce__c sObject di Apex.
Creare variabili sObject
Per creare un sObject, occorre dichiarare una variabile e assegnarle un'istanza di sObject. Il tipo di dati della variabile è il tipo sObject.
L'esempio seguente crea un sObject di tipo Account con il nome Acme e lo assegna alla variabile acct
.
Account acct = new Account(Name='Acme');
sObject e nomi campo
Apex fa riferimento a sObject standard o personalizzati e ai relativi campi utilizzandone i nomi API univoci.
I nomi API degli oggetti e dei campi possono differire dalle rispettive etichette. Ad esempio, il campo Dipendenti ha l'etichetta Dipendenti ed è visualizzato nella pagina dei record account come Dipendenti, ma il suo nome API è NumberOfEmployees. Per accedere a questo campo in Apex, è necessario utilizzare il nome API del campo: NumberOfEmployees.
Di seguito sono riportate alcune regole utilizzate per i nomi API degli oggetti e dei campi personalizzati.
Per gli oggetti e i campi personalizzati, il nome dell'API termina sempre con il suffisso __c. Per i campi relazione personalizzati, il nome dell'API termina sempre con il suffisso __r. Ad esempio:
- Un oggetto personalizzato con l'etichetta Merce ha un nome API Merce__c.
- Un campo personalizzato con l'etichetta Descrizione ha un nome API Descrizione__c.
- Un campo relazione personalizzato con l'etichetta Elementi ha un nome API Elementi__c.
Inoltre, gli spazi nelle etichette sono sostituiti da caratteri di sottolineatura nei nomi API. Ad esempio, il nome di un campo personalizzato Anzianità dipendente ha come nome API Anzianità_dipendente__c.
Trovare oggetto e nomi campo
Per trovare i nomi degli oggetti standard e dei rispettivi campi da utilizzare in Apex, consulta Riferimento oggetti per Salesforce e Lightning Platform.
Sia per gli oggetti standard che per quelli personalizzati, cerca i nomi API degli oggetti e dei campi nell'organizzazione. Da Imposta, fai clic sulla scheda Gestore oggetti a destra della scheda Pagina iniziale, quindi fai clic sul nome dell'oggetto.
Creare sObject e aggiungere campi
Per poter inserire un record di Salesforce, è prima necessario crearlo in memoria come sObject. Come ogni altro oggetto, anche gli sObject vengono creati con l'operatore new
:
Account acct = new Account();
Il nome oggetto API diventa il tipo di dati della variabile sObject in Apex. In questo esempio, Account
è il tipo di dati della variabile acct
.
L'account a cui fa riferimento la variabile acct
è vuoto perché non abbiamo ancora compilato alcun campo. Ci sono due modi per aggiungere campi: attraverso il costruttore o utilizzando la notazione con punti.
Il modo più veloce per aggiungere i campi è quello di specificarli come coppie nome-valore all'interno del costruttore. Ad esempio, questa istruzione crea un nuovo sObject account e compila il suo campo Nome con un valore di stringa.
Account acct = new Account(Name='Acme');
Il campo Nome è l'unico campo obbligatorio per gli account, il che significa che deve essere compilato prima che sia possibile inserire un nuovo record. Tuttavia, è possibile compilare anche altri campi per il nuovo record. Questo esempio prevede anche l'aggiunta di un numero di telefono e del numero di dipendenti.
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
In alternativa, è possibile utilizzare la notazione con punti per aggiungere campi a un sObject. Il seguente esempio è equivalente a quello precedente, anche se richiede qualche riga di codice in più.
Account acct = new Account(); acct.Name = 'Acme'; acct.Phone = '(415)555-1212'; acct.NumberOfEmployees = 100;
Lavorare con il tipo di dati sObject generico
Le variabili dichiarate con il tipo di dati sObject generico possono fare riferimento a qualsiasi record Salesforce, sia esso un record oggetto standard o personalizzato.
In questo esempio viene mostrato come qualsiasi oggetto Salesforce, ad esempio un account o un oggetto personalizzato chiamato Libro__c, possa essere assegnato a una variabile sObject generica.
sObject sobj1 = new Account(Name='Trailhead'); sObject sobj2 = new Book__c(Name='Workbook 1');
Viceversa, le variabili dichiarate con il tipo di dati sObject possono fare riferimento solo ai record Salesforce dello stesso tipo.
Assegnare sObject generici a tipi di sObject specifici
Quando si ha a che fare con sObject generici, a volte è necessario assegnare l'sObject variabile a un tipo di sObject specifico. Uno dei vantaggi di questa operazione è la possibilità di accedere ai campi utilizzando la notazione con punti, che non è disponibile nell'sObject generico. Poiché sObject è un tipo superiore per tutti i tipi di sObject specifici, è possibile assegnare un sObject generico a un sObject specifico. Questo esempio mostra come assegnare un sObject generico a un Account.
// 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;
Ulteriori informazioni...
I campi di un sObject generico sono accessibili solo tramite i metodi put()
e get()
.
In questa unità hai imparato cosa sono gli sObject e come usarli. Tuttavia, la creazione di un sObject non ne comporta il salvataggio permanente come record nel database. Per salvare l'sObject come record e utilizzarlo in altri modi, è necessario usare il Data Manipulation Language (DML). Per recuperare un record, usa Salesforce Object Query Language (SOQL). Nelle unità successive trovi informazioni su DML e SOQL.
Risorse
- Guida di riferimenti per gli oggetti per Salesforce e Lightning Platform
- Apex Developer Guide: Working with sObjects (Lavorare con gli sObject)
- Apex Developer Guide: SObject Methods (Metodi SObject)