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

Moduł 3 z 10 w rozdziale Architektura danych Salesforce, rozdziale 3 kursu Data Architect. Każdy moduł jest samodzielny. Wstecz: Patrz na statek-matkę: standardowe modele danych · Dalej: Gdzie mieszkają te dane?
Pytanie, na które odpowiada ten moduł: kiedy Salesforce czegoś nie ma, co naprawdę dostajesz, budując własny obiekt?
W poprzednim module przyjrzeliśmy się temu, co Salesforce już zbudował. Czasem nie ma tego, czego potrzebujesz. Steve Trucking jeździ ciężarówkami, a standardowego obiektu Truck nie ma. Więc budujesz go sam: obiekt niestandardowy.
Oto co chcę ci pokazać w tym module. Obiekt niestandardowy tworzy się w metadanych, jak wszystko inne w module 1, i w chwili, gdy powstaje, przychodzi z zestawem standardowych funkcji. To nie jest pusta tabela. A ekran, który wypełniasz, żeby go utworzyć, zadaje ci pytania architektoniczne, czy to zauważasz, czy nie.
Ekran New Custom Object
Dział zatytułowany „Ekran New Custom Object ”Przejdź do Setup → Object Manager → Create → Custom Object (Konfiguracja → Menedżer obiektów → Utwórz → Obiekt niestandardowy), a dostaniesz jeden długi formularz. Większość ludzi wypełnia dwa pierwsze pola i klika Save. Zwolnijmy i przeczytajmy go.
Label i Plural Label (etykieta i etykieta w liczbie mnogiej). „Truck” i „Trucks”. To widzą użytkownicy, na kartach, w układach stron i w raportach. Można je później zmienić bez większego bólu.
Object Name (nazwa obiektu). Ta jest inna: to nazwa API, nazwa, której używają kod, integracje, raporty, a teraz także agenci. Wpisz „Truck”, a Salesforce zrobi z tego Truck__c. Zmiana jej później oznacza znalezienie wszystkiego, co się do niej odwołuje, czyli znowu Test Odwracalności z rozdziału 1. Ustaw ją dobrze za pierwszym razem.
Description (opis). Wypełnij go. Za każdym razem. W module 1 mówiłem, że metadane to już nie dekoracja: czyta je następny administrator i czyta je każde narzędzie AI, które próbuje zrozumieć twój org. Obiekt niestandardowy z pustym opisem to pudło bez etykiety.
Record Name (nazwa rekordu). Każdy obiekt niestandardowy ma pole Name i tu decydujesz, czym ono jest. Nazwa typu Text, na przykład „Truck 117”, albo Auto Number (autonumer), na przykład T-000184, który Salesforce wypełnia za ciebie. Przeczytaj ostrzeżenie na tym ekranie: jeśli planujesz wstawiać dużą liczbę rekordów przez API, Salesforce każe ci użyć typu Text. To platforma mówi ci coś o skali, zanim utworzysz choćby jeden rekord.

Konfiguracja Salesforce, New Custom Object: sekcja Record Name z ostrzeżeniem (zrzut ekranu, 2026-10-12). Pełny rozmiar
Optional Features (funkcje opcjonalne). Allow Reports, Allow Activities, Track Field History, Allow in Chatter Groups. Domyślnie wyłączone. Każda z nich to możliwość, którą włączasz dla tego obiektu; decyduj świadomie.
Object Classification (klasyfikacja obiektu). Allow Sharing, Allow Bulk API Access, Allow Streaming API Access, wszystkie domyślnie włączone. Ekran mówi to wprost: gdy są włączone, obiekt jest obiektem Enterprise Application; gdy są wyłączone, jest obiektem Light Application. Te nazwy odpowiadają licencjom subskrypcji aplikacji Salesforce: Lightning Platform Light App nie ma udostępniania na poziomie rekordu i nie może używać Bulk API ani Streaming API, a Enterprise App może. Moja rada: zostaw je włączone, chyba że dokładnie wiesz, dlaczego nie. Wyłącz dostęp do Bulk API na obiekcie, który później będziesz ładować masowo, a przekonasz się, dlaczego to miało znaczenie.
Deployment Status i Search (status wdrożenia i wyszukiwanie). „In Development” ukrywa obiekt przed użytkownikami, kiedy go budujesz; „Deployed” udostępnia go. A Allow Search jest domyślnie wyłączone, więc użytkownicy nie znajdą tych rekordów w wyszukiwaniu globalnym, dopóki go nie włączysz. To łapie ludzi za każdym razem.

Ustawienia domyślne: trzy ustawienia API włączone, Deployed, a Allow Search wyłączone (zrzut ekranu, 2026-10-12). Pełny rozmiar
Kliknij Save, a Menedżer obiektów pokaże ci obiekt: nazwa API Truck__c, zaznaczone Custom, etykiety, status wdrożenia. Spójrz jednak na lewą stronę: Fields & Relationships, Page Layouts, Lightning Record Pages, Record Types, Validation Rules, Triggers, Flow Triggers, Object Access, Field Access. Ta lista to moduł 1, który stał się widoczny. Obiekt to nie tylko magazyn; to miejsce, na którym wisi całe to zachowanie.

Menedżer obiektów, Truck: nazwa API Truck__c, Custom i wszystko, co wisi na obiekcie (zrzut ekranu, 2026-10-12). Pełny rozmiar
Pola, których nie utworzono
Dział zatytułowany „Pola, których nie utworzono ”Otwórz Fields & Relationships w zupełnie nowym obiekcie niestandardowym, a zobaczysz, że już ma pola. Każdy obiekt niestandardowy dostaje standardowy zestaw:
- Name, nazwa rekordu, którą właśnie wybrano, używana w układach stron, listach powiązanych rekordów, lookupach i wynikach wyszukiwania.
- Owner, użytkownik albo kolejka, do których należy rekord.
- Created By i Last Modified By, użytkownicy, którzy go utworzyli i ostatnio zmienili.
- Currency, jeśli włączona jest obsługa wielu walut, i Division, jeśli twój org używa działów.
A pod spodem identyfikator rekordu z modułu 1 oraz daty utworzenia i modyfikacji. Wyeksportuj kilka rekordów za pomocą Data Loader, a zobaczysz je wszystkie.
Jedno z nich może zniknąć. Uczyń swój obiekt niestandardowy stroną szczegółową relacji master-detail, a pole Owner zniknie: własność pochodzi wtedy z rekordu nadrzędnego. To ważniejsze, niż brzmi, i wrócimy do tego w modułach 7 i 8.
Prefiksy i sufiksy: na co patrzysz
Dział zatytułowany „Prefiksy i sufiksy: na co patrzysz ”W poprzednim module mówiłem, że obiekty standardowe nie mają prefiksu ani sufiksu. Wszystko inne ma, a kiedy umiesz je czytać, lista pól mówi ci dokładnie, na co patrzysz.
| Jak wygląda | Czym jest |
|---|---|
Account, Case | Obiekt lub pole standardowe: bez prefiksu, bez sufiksu |
Truck__c | Obiekt niestandardowy albo pole niestandardowe, na przykład Unit_Number__c |
abc__Inspection__c | Obiekt niestandardowy z pakietu zarządzanego (managed package): abc to przestrzeń nazw dostawcy |
Delivery_History__b | Big object (moduł 4) |
Shipment__x | Obiekt zewnętrzny: dane mieszkają w innym systemie (moduł 4) |
Allergies__pc | Niestandardowe pole kontaktu na koncie osoby (moduł 2) |
Truck__r | Relacja stojąca za niestandardowym lookupem, kiedy podążasz nią w zapytaniu |
Kilka rzeczy, na które warto zwrócić uwagę.
Na razie to lista. Oto jak tego uczę: jako warstw. Są trzy rodzaje obiektów, standardowe, niestandardowe i z pakietu zarządzanego, a każdy z nich może mieć te same rodzaje pól: pola standardowe, z którymi przyszedł, i pola niestandardowe, które ktoś dodał.
Obiekty standardowe. Account nie ma prefiksu ani sufiksu, tak samo jak jego pola standardowe: Name, Industry, OwnerId. Do większości obiektów standardowych możesz dodawać pola niestandardowe, a każde, które dodasz, kończy się na __c: Region__c (Custom Fields (opens in a new tab)). To właśnie ten sufiks zapewnia ci bezpieczeństwo. Salesforce dodaje w swoich wydaniach nowe pola standardowe do Account, a ponieważ twoje zawsze kończą się na __c, a jego nigdy, przyszłe pole standardowe nigdy nie zderzy się z polem, które już masz.
Obiekty niestandardowe. Twój własny obiekt kończy się na __c, Truck__c (Custom Objects (opens in a new tab)), tak samo jak pola niestandardowe, które na nim umieścisz: Unit_Number__c. Ale pola, z którymi się urodził, te z poprzedniej sekcji, to pola standardowe: Name, OwnerId, CreatedDate, bez sufiksu. Więc nawet na twoim własnym obiekcie sufiks mówi, kto utworzył każde pole.
Obiekty z pakietu zarządzanego. Kiedy instalujesz pakiet zarządzany z AppExchange, jego obiekty i pola przychodzą z prefiksem przestrzeni nazw (namespace prefix) dostawcy: abc__Inspection__c i pola takie jak abc__Result__c. Ten prefiks jest unikalny dla dostawcy i się nie zmienia (Namespace Prefix (opens in a new tab)). Jak ujmuje to sam Salesforce, prefiks jest dodawany do każdego komponentu, żeby był unikalny: name__c staje się prefix__name__c (AppExchange Object Prefixes and the API (opens in a new tab)). Dwóch dostawców może więc dostarczyć obiekt o nazwie Invoice__c i nigdy nie zderzyć się ze sobą ani z tobą. Obiekty pakietu nadal mają swoje pola standardowe, Name i OwnerId, bez prefiksu. Pakiet może też dodawać własne pola z prefiksem do obiektów standardowych, na przykład abc__Score__c na Account. A ty możesz dodawać własne pola niestandardowe do obiektów pakietu: Depot__c na abc__Inspection__c dostaje twój sufiks __c, ale nigdy prefiksu dostawcy, bo utworzono je u ciebie, a nie u niego (Known Issue: unmanaged custom field on a managed package object (opens in a new tab)).
Przeczytaj dowolną nazwę API, a wiesz, kto ją utworzył. Bez sufiksu: Salesforce. __c bez prefiksu: twój org. abc__ z przodu: dostawca. To ma znaczenie przy każdej planowanej zmianie. To, co twoje, możesz zmieniać. To, co należy do Salesforce, konfigurujesz i rozszerzasz. To, co należy do dostawcy, jest w większości zablokowane: kilka rzeczy, takich jak układy stron i tekst pomocy, możesz edytować, ale większość pakietu i każda nazwa API należą do dostawcy, a jego aktualizacje przynoszą jego zmiany (Editable Properties After Package Promotion or Installation (opens in a new tab)).
Pakiety niezarządzane nie mają prefiksu. Zainstaluj pakiet niezarządzany, a jego obiekty wylądują w twoim orgu tak, jakby zbudowano je u ciebie, bez prefiksu. Jeśli przynosi Truck__c, a ty już taki masz, masz kolizję nazw. Sprawdź przed instalacją.
Buduj tylko to, czego Salesforce nie ma
Dział zatytułowany „Buduj tylko to, czego Salesforce nie ma ”Utworzenie obiektu niestandardowego jest łatwe; właśnie dlatego uważam, że tworzymy ich za dużo. Ekran New Custom Object chętnie zrobi ci Customer__c w orgu, który już ma Account. Zanim więc klikniesz, zadaj pytanie z poprzedniego modułu: czy statek-matka już to ma? Jeśli tak, użyj tego. Jeśli nie, zbuduj to i wypełnij cały ekran jak architekt.
Następny moduł zadaje pytanie jeszcze wcześniejsze: czy te dane w ogóle powinny być w Salesforce?
Co tu decyduje architekt
Dział zatytułowany „Co tu decyduje architekt ”- Czy Salesforce ma już na to obiekt standardowy, zanim zbuduje się niestandardowy.
- Nazwa API, wybrana raz, i opis napisany dla ludzi i maszyn.
- Nazwa rekordu: Text czy Auto Number, z myślą o spodziewanym wolumenie.
- Które funkcje opcjonalne, dostęp przez API i wyszukiwanie włączyć, świadomie.
- Co mówią ci sufiksy w orgu: niestandardowy, zarządzany, big object, zewnętrzny, konto osoby.
- Czy pakiet, który zamierzasz zainstalować, może zderzyć się z tym, co już zbudowano.
Do zgłębienia
Dział zatytułowany „Do zgłębienia ”- Custom Objects (opens in a new tab) i Custom Fields (opens in a new tab), Object Reference (po angielsku, sprawdzono 2026-10-13): „nazwy obiektów niestandardowych zawierają sufiks złożony z dwóch podkreśleń i małej litery »c«”; to samo dotyczy pól niestandardowych; do tego tabela obiektów standardowych, które obsługują pola niestandardowe.
- AppExchange Object Prefixes and the API (opens in a new tab), Object Reference (po angielsku, sprawdzono 2026-10-13): prefiks przestrzeni nazw sprawia, że każdy spakowany komponent jest unikalny; „name__c staje się prefix__name__c”.
- Namespace Prefix (opens in a new tab), Apex Developer Guide (po angielsku, sprawdzono 2026-10-13): prefiksy przestrzeni nazw oddzielają nazwy obiektów i pól pakietów zarządzanych od nazw z innych orgów.
- Editable Properties After Package Promotion or Installation (opens in a new tab), Second-Generation Managed Packaging Developer Guide (po angielsku, sprawdzono 2026-10-13): które właściwości komponentów pakietu może edytować deweloper, subskrybent, obaj albo żaden.
- Custom Object Standard Fields (opens in a new tab), Pomoc Salesforce (po angielsku, sprawdzono 2026-10-12): pola standardowe, które dostaje każdy obiekt niestandardowy (Name, Owner, Created By, Last Modified By, Currency, Division), i dlaczego pole Owner jest usuwane po stronie szczegółowej relacji master-detail.
- Standard User Licenses (opens in a new tab), Pomoc Salesforce (po angielsku, sprawdzono 2026-10-12): Lightning Platform Light App „nie może używać Bulk API ani Streaming API”; Enterprise App „obsługuje udostępnianie na poziomie rekordu, może używać Bulk API i Streaming API”.
