Salta ai contenuti

Gli oggetti personalizzati

Disponibile anche in 28 lingue

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

In a truck body shop, a custom white box body hangs on chains above a standard truck chassis, already fitted with its doors, lights and mud flaps.
Immagine generata con l'IA

Modulo 3 di 10 del capitolo Architettura dei dati Salesforce, capitolo 3 del corso Data Architect. Ogni modulo si regge da solo. Precedente: Guarda alla nave madre: i modelli dati standard · Successivo: Dove risiedono questi dati?

La domanda a cui risponde questo modulo: Quando Salesforce non ce l’ha, cosa ottieni davvero quando costruisci un oggetto tuo?

Nel modulo precedente abbiamo visto cosa ha già costruito Salesforce. A volte non ha quello che ti serve. Steve Trucking gestisce camion, e non esiste un oggetto standard Camion. Quindi ne costruisci uno: un oggetto personalizzato.

Ecco cosa voglio che tu veda in questo modulo. Un oggetto personalizzato viene creato nei metadati, come tutto il resto del modulo 1, e nel momento in cui esiste porta con sé un insieme di funzionalità standard. Non è una tabella vuota. E la schermata che compili per crearlo ti sta facendo domande di architettura, che tu te ne accorga o no.

Vai in Imposta → Gestione oggetti → Crea → Oggetto personalizzato e ti trovi davanti un unico lungo modulo. La maggior parte delle persone compila le prime due caselle e clicca Salva. Rallentiamo e leggiamolo.

Etichetta ed Etichetta plurale (Label, Plural Label). “Truck” e “Trucks”. Sono ciò che vedono gli utenti, nelle schede, nei layout di pagina e nei report. Puoi cambiarle in seguito senza troppa fatica.

Nome oggetto (Object Name). Questo è diverso: è il nome API, il nome che usano il codice, le integrazioni, i report e ora gli agenti. Scrivi “Truck” e Salesforce lo trasforma in Truck__c. Cambiarlo in seguito significa trovare tutto ciò che vi fa riferimento, ed è di nuovo il Test di Reversibilità del capitolo 1. Questo fallo giusto la prima volta.

Descrizione (Description). Compilala. Ogni volta. Nel modulo 1 ho detto che i metadati non sono più decorazione: la legge il prossimo amministratore, e la legge ogni strumento di IA che prova a capire la tua org. Un oggetto personalizzato con la descrizione vuota è una scatola senza etichetta.

Nome record (Record Name). Ogni oggetto personalizzato ha un campo Nome, ed è qui che decidi cos’è. Un nome di tipo Testo, come “Truck 117”, o una numerazione automatica (Auto Number), come T-000184, che Salesforce compila per te. Leggi l’avviso su quella schermata: se prevedi di inserire un volume elevato di record tramite l’API, Salesforce ti dice di usare Testo. È la piattaforma che ti dice qualcosa sulla scala prima che tu abbia creato un solo record.

La sezione Nome record della schermata Nuovo oggetto personalizzato: la casella Nome record, un tipo di dati Testo, e l'avviso di usare il tipo di dati Testo se prevedi di inserire un volume elevato di record tramite l'API

Imposta di Salesforce, Nuovo oggetto personalizzato: la sezione Nome record, con il suo avviso (screenshot, 2026-10-12). Dimensione intera

Funzioni opzionali (Optional Features). Consenti report, Consenti attività, Tieni traccia della cronologia dei campi, Consenti nei gruppi Chatter (Allow Reports, Allow Activities, Track Field History, Allow in Chatter Groups). Disattivate per impostazione predefinita. Ognuna è una capacità che attivi per questo oggetto; decidi di proposito.

Classificazione oggetto (Object Classification). Consenti condivisione, Consenti accesso API Bulk, Consenti accesso API Streaming (Allow Sharing, Allow Bulk API Access, Allow Streaming API Access), tutte attive per impostazione predefinita. La schermata lo dice chiaramente: con queste attive, l’oggetto è un oggetto Enterprise Application; con queste disattivate, è un oggetto Light Application. Quei nomi corrispondono alle licenze di abbonamento alle app di Salesforce: una Lightning Platform Light App non ha condivisione a livello di record e non può usare la Bulk API né la Streaming API, mentre una Enterprise App può. Il mio consiglio: lasciale attive, a meno che tu non sappia esattamente perché no. Disattiva l’accesso alla Bulk API su un oggetto che poi caricherai in volume, e scoprirai perché contava.

Stato distribuzione e ricerca (Deployment Status, Search). “In fase di sviluppo” (In Development) nasconde l’oggetto agli utenti mentre lo costruisci; “Distribuito” (Deployed) lo rende attivo. E Consenti ricerca (Allow Search) è disattivata per impostazione predefinita, quindi gli utenti non troveranno questi record nella ricerca globale finché non la attivi. Su questa ci cascano tutti, ogni volta.

Le sezioni Classificazione oggetto, Stato distribuzione e Stato ricerca: Consenti condivisione, Consenti accesso API Bulk e Consenti accesso API Streaming selezionate; Distribuito selezionato; Consenti ricerca non selezionata

Le impostazioni predefinite: le tre impostazioni API attive, Distribuito, e Consenti ricerca disattivata (screenshot, 2026-10-12). Dimensione intera

Clicca Salva, e Gestione oggetti ti mostra l’oggetto: nome API Truck__c, un segno di spunta in Personalizzato (Custom), le etichette, lo stato di distribuzione. Guarda però la colonna di sinistra: Campi e relazioni, Layout di pagina, Pagine record Lightning, Tipi di record, Regole di convalida, Trigger, Trigger di flusso, Accesso all’oggetto, Accesso ai campi. Quell’elenco è il modulo 1 reso visibile. Un oggetto non è solo spazio di archiviazione; è il punto da cui pende tutto quel comportamento.

Gestione oggetti che mostra l'oggetto Truck: Nome API Truck__c, Personalizzato selezionato, etichette singolare e plurale, e l'elenco a sinistra da Campi e relazioni a Regole di convalida

Gestione oggetti, Truck: il nome API Truck__c, Personalizzato, e tutto ciò che pende da un oggetto (screenshot, 2026-10-12). Dimensione intera

Apri Campi e relazioni su un oggetto personalizzato nuovo di zecca, e ha già dei campi. Ogni oggetto personalizzato riceve un insieme standard:

  • Nome (Name), il nome del record che hai appena scelto, usato nei layout di pagina, negli elenchi correlati, nelle relazioni di ricerca e nei risultati di ricerca.
  • Titolare (Owner), l’utente o la coda titolare del record.
  • Creato da e Ultima modifica di (Created By, Last Modified By), gli utenti che l’hanno creato e modificato per ultimi.
  • Valuta (Currency), se è attiva la multivaluta, e Divisione (Division), se la tua org usa le divisioni.

E sotto, l’ID del record del modulo 1, e le date di creazione e di modifica. Esporta qualche record con Data Loader e li vedrai tutti.

Uno di questi può sparire. Fai del tuo oggetto personalizzato il lato dettaglio di una relazione master-dettaglio, e il campo Titolare scompare: la titolarità viene invece dal record master. È una cosa più grossa di quanto sembri, e ci torneremo nei moduli 7 e 8.

Nel modulo precedente ho detto che gli oggetti standard non hanno prefissi né suffissi. Tutto il resto sì, e una volta che sai leggerli, un elenco di campi ti dice esattamente cosa stai guardando.

Come appareCos’è
Account, CaseUn oggetto o campo standard: nessun prefisso, nessun suffisso
Truck__cUn oggetto personalizzato, o un campo personalizzato, come Unit_Number__c
abc__Inspection__cUn oggetto personalizzato di un pacchetto gestito: abc è lo spazio dei nomi del fornitore
Delivery_History__bUn big object (modulo 4)
Shipment__xUn oggetto esterno: i dati risiedono in un altro sistema (modulo 4)
Allergies__pcUn campo personalizzato del contatto su un account personale (modulo 2)
Truck__rLa relazione dietro una relazione di ricerca personalizzata, quando la segui in una query

Alcune cose da notare.

Finora è un elenco. Ecco come lo insegno io: a livelli. Ci sono tre tipi di oggetto, standard, personalizzato e di pacchetto gestito, e ognuno di essi può avere gli stessi tipi di campo: i campi standard con cui è arrivato, e i campi personalizzati che qualcuno ha aggiunto.

Oggetti standard. Account non ha prefisso né suffisso, e nemmeno i suoi campi standard: Name, Industry, OwnerId. Puoi aggiungere campi personalizzati alla maggior parte degli oggetti standard, e ognuno che aggiungi finisce in __c: Region__c (Custom Fields (opens in a new tab)). È quel suffisso che ti protegge. Salesforce aggiunge nuovi campi standard ad Account nelle sue release, e siccome i tuoi finiscono sempre in __c e i suoi mai, un futuro campo standard non potrà mai scontrarsi con un campo che hai già.

Oggetti personalizzati. Il tuo oggetto finisce in __c, Truck__c (Custom Objects (opens in a new tab)), e così i campi personalizzati che ci metti sopra: Unit_Number__c. Ma i campi con cui è nato, quelli della sezione precedente, sono campi standard: Name, OwnerId, CreatedDate, senza suffisso. Quindi anche sul tuo oggetto, il suffisso ti dice chi ha creato ogni campo.

Oggetti di pacchetti gestiti. Quando installi un pacchetto gestito da AppExchange, i suoi oggetti e campi arrivano con il prefisso dello spazio dei nomi del fornitore: abc__Inspection__c, e campi come abc__Result__c. Quel prefisso è unico per il fornitore, e non cambia (Namespace Prefix (opens in a new tab)). Con le parole di Salesforce, il prefisso viene aggiunto a ogni componente per renderlo unico: name__c diventa prefix__name__c (AppExchange Object Prefixes and the API (opens in a new tab)). Così due fornitori possono distribuire entrambi un oggetto chiamato Invoice__c senza mai scontrarsi tra loro, né con te. Gli oggetti del pacchetto hanno comunque i loro campi standard, Name e OwnerId, senza prefisso. Un pacchetto può anche aggiungere i propri campi con prefisso agli oggetti standard, come abc__Score__c su Account. E puoi aggiungere campi personalizzati tuoi agli oggetti di un pacchetto: Depot__c su abc__Inspection__c prende il tuo suffisso __c, ma mai il prefisso del fornitore, perché l’hai creato tu, non loro (Known Issue: unmanaged custom field on a managed package object (opens in a new tab)).

Leggere i nomi Tre tipi di oggetto, ciascuno letto negli stessi quattro livelli. Un oggetto standard, costruito da Salesforce: Account; i suoi campi standard, come Name, OwnerId e Industry, non hanno suffisso; un pacchetto gestito può aggiungere i propri campi, come abc__Score__c; i tuoi campi personalizzati finiscono in __c, come Region__c. Un oggetto personalizzato, costruito da te: Truck__c; i suoi campi standard, Name, OwnerId e CreatedDate, non hanno suffisso; nessun campo di pacchetto, perché l'oggetto è tuo; i tuoi campi personalizzati finiscono in __c, come Unit_Number__c. Un oggetto di pacchetto gestito, installato dal fornitore abc: abc__Inspection__c; i suoi campi standard non hanno prefisso; i campi propri del pacchetto portano il prefisso, come abc__Result__c; e i campi che aggiungi tu, come Depot__c, prendono il tuo suffisso __c ma mai il prefisso del fornitore. Sotto: nessun suffisso è di Salesforce, __c è personalizzato, e abc__ è del fornitore, e non cambia mai. Oggetto standard costruito da Salesforce L'OGGETTO Account I SUOI CAMPI STANDARD Name, OwnerId, Industry: nessun suffisso I CAMPI DI UN PACCHETTO abc__Score__c, se un pacchetto ne aggiunge uno I TUOI CAMPI PERSONALIZZATI Region__c Oggetto personalizzato costruito da te L'OGGETTO Truck__c I SUOI CAMPI STANDARD Name, OwnerId, CreatedDate: nessun suffisso I CAMPI DI UN PACCHETTO nessuno: l'oggetto è tuo I TUOI CAMPI PERSONALIZZATI Unit_Number__c Oggetto di pacchetto gestito installato, dal fornitore abc L'OGGETTO abc__Inspection__c I SUOI CAMPI STANDARD Name, OwnerId, CreatedDate: nessun prefisso I CAMPI DI UN PACCHETTO abc__Result__c I TUOI CAMPI PERSONALIZZATI Depot__c: il tuo suffisso, mai il loro prefisso Nessun suffisso: di Salesforce. __c: personalizzato. abc__: del fornitore, e non cambia mai. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Leggi qualsiasi nome API e sai chi l’ha creato. Nessun suffisso: Salesforce. __c senza prefisso: la tua org. abc__ davanti: il fornitore. Conta ogni volta che pianifichi una modifica. Ciò che è tuo, puoi cambiarlo. Ciò che è di Salesforce, lo configuri e lo estendi. Ciò che è del fornitore è per lo più bloccato: alcune cose, come i layout di pagina e il testo della guida, puoi modificarle tu, ma la maggior parte del pacchetto, e ogni nome API, appartiene al fornitore, e i suoi aggiornamenti portano le sue modifiche (Editable Properties After Package Promotion or Installation (opens in a new tab)).

I pacchetti non gestiti no. Installa un pacchetto non gestito, e i suoi oggetti arrivano nella tua org come se li avessi costruiti tu, senza prefisso. Se porta un Truck__c e tu ne hai già uno, hai una collisione di nomi. Controlla prima di installare.

Creare un oggetto personalizzato è facile; è proprio per questo che penso che ne creiamo troppi. La schermata Nuovo oggetto personalizzato ti crea volentieri un Customer__c in una org che ha già Account. Quindi prima di cliccare, fatti la domanda del modulo precedente: la nave madre ce l’ha già? Se sì, usalo. Se no, costruiscilo, e compila tutta la schermata da architetto.

Il prossimo modulo fa una domanda ancora precedente: questi dati dovrebbero proprio stare in Salesforce?

  • Se Salesforce ha già un oggetto standard per questo, prima di costruirne uno personalizzato.
  • Il nome API, scelto una volta sola, e una descrizione scritta per le persone e per le macchine.
  • Il nome del record: Testo o numerazione automatica, tenendo a mente il volume che ti aspetti.
  • Quali funzioni opzionali, accessi API e ricerca attivare, di proposito.
  • Cosa ti dicono i suffissi in una org: personalizzato, gestito, big object, esterno, account personale.
  • Se un pacchetto che stai per installare potrebbe scontrarsi con ciò che hai costruito.
  • Custom Objects (opens in a new tab) e Custom Fields (opens in a new tab), Object Reference (in inglese, consultato il 2026-10-13): “i nomi degli oggetti personalizzati includono un suffisso di due trattini bassi seguiti da una ‘c’ minuscola”; lo stesso vale per i campi personalizzati; e la tabella degli oggetti standard che supportano i campi personalizzati.
  • AppExchange Object Prefixes and the API (opens in a new tab), Object Reference (in inglese, consultato il 2026-10-13): un prefisso dello spazio dei nomi rende unico ogni componente di un pacchetto; “name__c diventa prefix__name__c”.
  • Namespace Prefix (opens in a new tab), Apex Developer Guide (in inglese, consultato il 2026-10-13): i prefissi dello spazio dei nomi tengono i nomi di oggetti e campi dei pacchetti gestiti separati da quelli delle altre org.
  • Editable Properties After Package Promotion or Installation (opens in a new tab), Second-Generation Managed Packaging Developer Guide (in inglese, consultato il 2026-10-13): quali proprietà dei componenti di un pacchetto possono modificare lo sviluppatore, l’abbonato, entrambi o nessuno dei due.
  • Custom Object Standard Fields (opens in a new tab), Guida di Salesforce (in inglese, consultato il 2026-10-12): i campi standard che riceve ogni oggetto personalizzato (Nome, Titolare, Creato da, Ultima modifica di, Valuta, Divisione), e perché il Titolare viene rimosso sul lato dettaglio di una relazione master-dettaglio.
  • Standard User Licenses (opens in a new tab), Guida di Salesforce (in inglese, consultato il 2026-10-12): una Lightning Platform Light App “non può usare la Bulk API né la Streaming API”; una Enterprise App “supporta la condivisione a livello di record, può usare la Bulk API e la Streaming API”.