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 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 account e contiene le informazioni del campo account in memoria come un oggetto.
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 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

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 gestito dal metodo, è 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

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.

Una variabile sObject specifica può puntare solo a 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.

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