Skip to main content

Utilizzare gli sObject

Obiettivi di apprendimento

Al completamento di questa unità, sarai in grado di:

  • Descrivere la relazione tra sObject e record di Salesforce.
  • Creare e utilizzare variabili sObject specifiche.
  • Assegnare un sObject generico a un sObject specifico.

Utilizzare gli sObject

Poiché Apex è strettamente integrato con il database, è possibile accedere ai record di Salesforce e ai rispettivi campi direttamente con Apex. Ogni record di Salesforce è rappresentato in modo nativo come un sObject in Apex. Ad esempio, il record dell'account Acme corrisponde a un sObject Account in Apex. I campi del record Acme che puoi visualizzare e modificare nell'interfaccia utente possono essere letti e modificati anche direttamente nell'sObject.

Nella tabella seguente sono riportati alcuni campi popolati del record di esempio dell'account Acme. L'sObject Account è un'astrazione del record dell'account e salva in memoria le informazioni relative ai campi dell'account.

Tabella 1. sObject Account per un record recuperato

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 degli 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 loro nomi API in Apex. Ad esempio, un oggetto personalizzato chiamato Merce corrisponde all'sObject Merce__c in 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 dei campi

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, l'etichetta del campo Employees (Dipendenti) è Employees (Dipendenti) e questa è l'etichetta visualizzata nella pagina dei record account, ma il nome API del campo è 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__r.

Inoltre, gli spazi presenti 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 i nomi degli oggetti e dei campi

Per trovare i nomi degli oggetti standard e dei rispettivi campi da utilizzare in Apex, consulta la guida di riferimento agli oggetti per Salesforce Platform.

Sia per gli oggetti standard che per quelli personalizzati, cerca i nomi API degli oggetti e dei campi nell'organizzazione. In Setup (Imposta), fai clic sulla scheda Object Manager (Gestore oggetti) a destra della scheda Home (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 API dell'oggetto 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 Name è 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

In genere, quando si lavora con gli sObject, si utilizza il tipo di dati sObject specifico, ad esempio Account per un oggetto standard oppure Libro__c per un oggetto personalizzato chiamato Libro. Tuttavia, se non si conosce il tipo di sObject che il metodo deve elaborare, è possibile utilizzare 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.

Una variabile sObject generica può puntare a qualsiasi record Salesforce

L'esempio seguente mostra come qualsiasi oggetto Salesforce, ad esempio un account o un oggetto personalizzato chiamato Book__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 un tipo di dati sObject specifico possono fare riferimento solo ai record Salesforce dello stesso tipo.

Una variabile sObject specifica può puntare solo a record Salesforce dello stesso tipo

Eseguire il cast di sObject generici in tipi di sObject specifici

Quando si ha a che fare con sObject generici, a volte è necessario eseguire il cast di variabile sObject in 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 è il tipo da cui derivano tutti i tipi di sObject specifici, è possibile eseguire il cast di un sObject generico in un sObject specifico. Questo esempio mostra come eseguire il cast di un sObject generico in 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, è necessario utilizzare il Salesforce Object Query Language (SOQL). Per saperne di più su DML e SOQL, consulta le unità successive.

Risorse

Condividi il tuo feedback su Trailhead dalla Guida di Salesforce.

Conoscere la tua esperienza su Trailhead è importante per noi. Ora puoi accedere al modulo per l'invio di feedback in qualsiasi momento dal sito della Guida di Salesforce.

Scopri di più Continua a condividere il tuo feedback