Перейти до вмісту

Користувацькі об’єкти

Також доступно 28 мовами

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · 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.
Зображення згенеровано ШІ

Модуль 3 з 10 розділу Архітектура даних Salesforce, розділ 3 курсу Data Architect. Кожен модуль самостійний. Попередній: Дивіться на материнський корабель: стандартні моделі даних · Наступний: Де живуть ці дані?

Питання, на яке відповідає цей модуль: Коли в Salesforce цього немає, що ви насправді отримуєте, будуючи власний об’єкт?

У попередньому модулі ми подивилися, що Salesforce уже збудував. Іноді там немає того, що вам потрібно. Steve Trucking експлуатує вантажівки, а стандартного об’єкта Truck немає. Тож ви будуєте його самі: користувацький об’єкт.

Ось що я хочу, щоб ви побачили в цьому модулі. Користувацький об’єкт створюється в метаданих, як і все інше в модулі 1, і щойно він з’являється, він отримує набір стандартної функціональності. Це не порожня таблиця. А екран, який ви заповнюєте, щоб його створити, ставить вам архітектурні запитання — помічаєте ви це чи ні.

Перейдіть у Setup → Object Manager → Create → Custom Object, і ви отримаєте одну довгу форму. Більшість людей заповнюють перші два поля й натискають Save. Сповільнімося і прочитаймо її.

Label і Plural Label (мітка в однині та множині). «Truck» і «Trucks». Це те, що бачать користувачі: у вкладках, макетах сторінок і звітах. Їх можна змінити пізніше без особливого болю.

Object Name (ім’я об’єкта). А це інше: це ім’я API, яким користуються код, інтеграції, звіти, а тепер і агенти. Введіть «Truck», і Salesforce зробить із нього Truck__c. Змінити його пізніше означає знайти все, що на нього посилається, — знову тест на зворотність із розділу 1. Зробіть це правильно з першого разу.

Description (опис). Заповнюйте його. Щоразу. У модулі 1 я казав, що метадані більше не прикраса: це читає наступний адміністратор, а також кожен інструмент ШІ, який намагається зрозуміти вашу org. Користувацький об’єкт із порожнім описом — це коробка без етикетки.

Record Name (назва запису). Кожен користувацький об’єкт має поле Name, і саме тут ви вирішуєте, яким воно буде. Назва типу Text, як-от «Truck 117», або Auto Number (автонумерація), як-от T-000184, яку Salesforce заповнює за вас. Прочитайте попередження на цьому екрані: якщо ви плануєте вставляти великий обсяг записів через API, Salesforce радить використовувати Text. Це платформа каже вам щось про масштаб ще до того, як ви створили хоч один запис.

Розділ Record Name на екрані New Custom Object: поле Record Name, Data Type зі значенням Text і попередження використовувати тип даних Text, якщо ви плануєте вставляти великий обсяг записів через API

Salesforce Setup, New Custom Object: розділ Record Name із попередженням (скриншот, 2026-10-12). Повний розмір

Optional Features (додаткові функції). Allow Reports, Allow Activities, Track Field History, Allow in Chatter Groups. За замовчуванням вимкнені. Кожна з них — можливість, яку ви вмикаєте для цього об’єкта; вирішуйте свідомо.

Object Classification (класифікація об’єкта). Allow Sharing, Allow Bulk API Access, Allow Streaming API Access — усі за замовчуванням увімкнені. Екран каже це прямо: з ними об’єкт є об’єктом Enterprise Application; без них — об’єктом Light Application. Ці назви відповідають ліцензіям на підписку застосунків Salesforce: Lightning Platform Light App не має спільного доступу на рівні записів і не може використовувати Bulk API чи Streaming API, а Enterprise App може. Моя порада: залишайте їх увімкненими, якщо не знаєте точно, чому ні. Вимкніть доступ до Bulk API на об’єкті, який ви згодом завантажуватимете великими обсягами, — і дізнаєтеся, чому це було важливо.

Deployment Status і Search (статус розгортання і пошук). «In Development» ховає об’єкт від користувачів, поки ви його будуєте; «Deployed» робить його робочим. А Allow Search за замовчуванням вимкнено, тож користувачі не знайдуть ці записи в глобальному пошуку, доки ви його не ввімкнете. На цьому люди спотикаються щоразу.

Розділи Object Classification, Deployment Status і Search Status: Allow Sharing, Allow Bulk API Access і Allow Streaming API Access позначені; вибрано Deployed; Allow Search не позначено

Значення за замовчуванням: три налаштування API увімкнені, Deployed, а Allow Search вимкнено (скриншот, 2026-10-12). Повний розмір

Натисніть Save, і Object Manager покаже вам об’єкт: ім’я API Truck__c, позначку в Custom, мітки, статус розгортання. Але подивіться на ліву частину: Fields & Relationships, Page Layouts, Lightning Record Pages, Record Types, Validation Rules, Triggers, Flow Triggers, Object Access, Field Access. Цей список — модуль 1, який став видимим. Об’єкт — це не просто сховище; це місце, до якого чіпляється вся ця поведінка.

Object Manager з об’єктом Truck: API Name Truck__c, позначка Custom, мітки в однині й множині і список ліворуч від Fields & Relationships до Validation Rules

Object Manager, Truck: ім’я API Truck__c, Custom і все, що чіпляється до об’єкта (скриншот, 2026-10-12). Повний розмір

Поля, яких ви не створювали

Section titled “Поля, яких ви не створювали ”

Відкрийте Fields & Relationships на щойно створеному користувацькому об’єкті, і там уже є поля. Кожен користувацький об’єкт отримує стандартний набір:

  • Name — назва запису, яку ви щойно обрали; використовується в макетах сторінок, пов’язаних списках, lookup і результатах пошуку.
  • Owner — користувач або черга, що володіє записом.
  • Created By і Last Modified By — користувачі, які створили запис і востаннє його змінили.
  • Currency — якщо ввімкнено кілька валют, і Division — якщо ваша org використовує підрозділи (divisions).

А під ними — ID запису з модуля 1 і дати створення та зміни. Експортуйте кілька записів через Data Loader, і ви побачите їх усі.

Одне з них може зникнути. Зробіть свій користувацький об’єкт дочірньою стороною зв’язку master-detail, і поле Owner зникає: власність натомість іде від головного запису. Це важливіше, ніж звучить, і ми повернемося до цього в модулях 7 і 8.

Префікси й суфікси: на що ви дивитеся

Section titled “Префікси й суфікси: на що ви дивитеся ”

У попередньому модулі я сказав, що стандартні об’єкти не мають ні префікса, ні суфікса. Усе інше має, і щойно ви навчитеся їх читати, список полів скаже вам точно, на що ви дивитеся.

Як це виглядаєЩо це
Account, CaseСтандартний об’єкт або поле: ні префікса, ні суфікса
Truck__cКористувацький об’єкт або користувацьке поле, як-от Unit_Number__c
abc__Inspection__cКористувацький об’єкт із керованого пакета: abc — простір імен постачальника
Delivery_History__bBig object (модуль 4)
Shipment__xЗовнішній об’єкт: дані живуть в іншій системі (модуль 4)
Allergies__pcКористувацьке поле контакту на персональному акаунті (модуль 2)
Truck__rЗв’язок за користувацьким lookup, коли ви йдете ним у запиті

Кілька речей, на які варто звернути увагу.

Поки що це просто список. Ось як я його викладаю: шарами. Є три види об’єктів — стандартні, користувацькі та з керованих пакетів, — і кожен із них може мати однакові види полів: стандартні поля, з якими він прийшов, і користувацькі поля, які хтось додав.

Стандартні об’єкти. Account не має ні префікса, ні суфікса, як і його стандартні поля: Name, Industry, OwnerId. До більшості стандартних об’єктів можна додавати користувацькі поля, і кожне, яке ви додаєте, закінчується на __c: Region__c (Custom Fields (opens in a new tab)). Саме цей суфікс вас захищає. Salesforce додає нові стандартні поля до Account у своїх релізах, і оскільки ваші завжди закінчуються на __c, а їхні — ніколи, майбутнє стандартне поле ніколи не конфліктуватиме з полем, яке у вас уже є.

Користувацькі об’єкти. Ваш власний об’єкт закінчується на __c, Truck__c (Custom Objects (opens in a new tab)), як і користувацькі поля, які ви на нього кладете: Unit_Number__c. Але поля, з якими він народився, — ті, що з попереднього розділу, — стандартні: Name, OwnerId, CreatedDate, без суфікса. Тож навіть на вашому власному об’єкті суфікс каже вам, хто створив кожне поле.

Об’єкти керованих пакетів. Коли ви встановлюєте керований пакет з AppExchange, його об’єкти й поля приходять із префіксом простору імен постачальника: abc__Inspection__c і поля на кшталт abc__Result__c. Цей префікс унікальний для постачальника і не змінюється (Namespace Prefix (opens in a new tab)). За словами самого Salesforce, префікс додається до кожного компонента, щоб зробити його унікальним: name__c стає prefix__name__c (AppExchange Object Prefixes and the API (opens in a new tab)). Тож два постачальники можуть обидва постачати об’єкт Invoice__c і ніколи не конфліктувати ні між собою, ні з вами. Об’єкти пакета все одно мають свої стандартні поля, Name і OwnerId, без префікса. Пакет також може додавати власні поля з префіксом до стандартних об’єктів, як-от abc__Score__c на Account. А ви можете додавати власні користувацькі поля до об’єктів пакета: Depot__c на abc__Inspection__c отримує ваш суфікс __c, але ніколи префікс постачальника, бо його створили ви, а не вони (Known Issue: unmanaged custom field on a managed package object (opens in a new tab)).

Як читати назви Три види об’єктів, кожен прочитаний у тих самих чотирьох шарах. Стандартний об’єкт, створений Salesforce: Account; його стандартні поля, як-от Name, OwnerId та Industry, не мають суфікса; керований пакет може додати власні поля, як-от abc__Score__c; ваші користувацькі поля закінчуються на __c, як Region__c. Користувацький об’єкт, створений вами: Truck__c; його стандартні поля, Name, OwnerId і CreatedDate, не мають суфікса; полів пакета немає, бо об’єкт ваш; ваші користувацькі поля закінчуються на __c, як Unit_Number__c. Об’єкт керованого пакета, встановлений від вендора abc: abc__Inspection__c; його стандартні поля не мають префікса; власні поля пакета несуть префікс, як abc__Result__c; а поля, які додаєте ви, як Depot__c, отримують ваш суфікс __c, але ніколи не префікс вендора. Внизу: без суфікса — це Salesforce, __c — користувацьке, а abc__ — вендора, і це ніколи не змінюється. Стандартний об’єкт створений Salesforce ОБ’ЄКТ Account ЙОГО СТАНДАРТНІ ПОЛЯ Name, OwnerId, Industry: без суфікса ПОЛЯ ПАКЕТА abc__Score__c, якщо пакет його додає ВАШІ КОРИСТУВАЦЬКІ ПОЛЯ Region__c Користувацький об’єкт створений вами ОБ’ЄКТ Truck__c ЙОГО СТАНДАРТНІ ПОЛЯ Name, OwnerId, CreatedDate: без суфікса ПОЛЯ ПАКЕТА немає: об’єкт ваш ВАШІ КОРИСТУВАЦЬКІ ПОЛЯ Unit_Number__c Об’єкт керованого пакета встановлений, від вендора abc ОБ’ЄКТ abc__Inspection__c ЙОГО СТАНДАРТНІ ПОЛЯ Name, OwnerId, CreatedDate: без префікса ПОЛЯ ПАКЕТА abc__Result__c ВАШІ КОРИСТУВАЦЬКІ ПОЛЯ Depot__c: ваш суфікс, ніколи не їхній префікс Без суфікса: Salesforce. __c: користувацьке. abc__: вендора, і це ніколи не змінюється. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Прочитайте будь-яке ім’я API — і ви знаєте, хто його створив. Без суфікса: Salesforce. __c без префікса: ваша org. abc__ попереду: постачальник. Це важливо щоразу, коли ви плануєте зміну. Те, що ваше, ви можете змінювати. Те, що належить Salesforce, ви налаштовуєте й розширюєте. Те, що належить постачальнику, здебільшого заблоковано: кілька речей, як-от макети сторінок і текст довідки, ви можете редагувати, але більша частина пакета і кожне ім’я API належать постачальнику, і його оновлення приносять його зміни (Editable Properties After Package Promotion or Installation (opens in a new tab)).

Некеровані пакети — ні. Встановіть некерований пакет, і його об’єкти потраплять у вашу org так, ніби ви збудували їх самі, без префікса. Якщо він приносить Truck__c, а у вас такий уже є, у вас конфлікт імен. Перевіряйте перед встановленням.

Будуйте лише те, чого в Salesforce немає

Section titled “Будуйте лише те, чого в Salesforce немає ”

Створити користувацький об’єкт легко; саме тому, як на мене, ми створюємо їх забагато. Екран New Custom Object охоче зробить вам Customer__c в org, де вже є Account. Тож перш ніж натиснути, поставте запитання з попереднього модуля: чи є це вже на материнському кораблі? Якщо є — використовуйте. Якщо немає — будуйте і заповнюйте весь екран як архітектор.

Наступний модуль ставить ще раніше запитання: чи мають ці дані взагалі бути в Salesforce?

Що тут вирішує архітектор

Section titled “Що тут вирішує архітектор ”
  • Чи є в Salesforce уже стандартний об’єкт для цього, перш ніж будувати користувацький.
  • Ім’я API, обране один раз, і опис, написаний для людей і машин.
  • Назву запису: Text чи Auto Number, з урахуванням очікуваного обсягу.
  • Які додаткові функції, доступ через API і пошук увімкнути — свідомо.
  • Що кажуть вам суфікси в org: користувацький, керований, big object, зовнішній, персональний акаунт.
  • Чи може пакет, який ви збираєтеся встановити, конфліктувати з тим, що ви збудували.
  • Custom Objects (opens in a new tab) і Custom Fields (opens in a new tab), Object Reference (перевірено 2026-10-13): «імена користувацьких об’єктів містять суфікс із двох підкреслень, за якими йде мала літера „c“»; те саме для користувацьких полів; і таблиця стандартних об’єктів, що підтримують користувацькі поля.
  • AppExchange Object Prefixes and the API (opens in a new tab), Object Reference (перевірено 2026-10-13): префікс простору імен робить кожен компонент пакета унікальним; «name__c стає prefix__name__c».
  • Namespace Prefix (opens in a new tab), Apex Developer Guide (перевірено 2026-10-13): префікси простору імен відокремлюють імена об’єктів і полів керованих пакетів від імен інших org.
  • Editable Properties After Package Promotion or Installation (opens in a new tab), Second-Generation Managed Packaging Developer Guide (перевірено 2026-10-13): які властивості компонентів пакета може редагувати розробник, підписник, обидва чи ніхто.
  • Custom Object Standard Fields (opens in a new tab), Salesforce Help (перевірено 2026-10-12): стандартні поля, які отримує кожен користувацький об’єкт (Name, Owner, Created By, Last Modified By, Currency, Division), і чому Owner прибирається з дочірньої сторони зв’язку master-detail.
  • Standard User Licenses (opens in a new tab), Salesforce Help (перевірено 2026-10-12): Lightning Platform Light App «не може використовувати Bulk API чи Streaming API»; Enterprise App «підтримує спільний доступ на рівні записів, може використовувати Bulk API і Streaming API».