Перейти к содержимому

Стандартные модели данных

Также доступно на 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)

An aisle of a builders' supply warehouse, its racks stacked with ready-made standard doors, windows and stair parts, a cart waiting in the aisle.
Изображение создано с помощью ИИ

Модуль 2 из 10 главы Архитектура данных Salesforce, глава 3 курса Data Architect. Каждый модуль самостоятелен. Назад: Платформа данных Salesforce: больше, чем база данных · Далее: Постройте свое: пользовательские объекты

Вопрос, на который отвечает этот модуль: что Salesforce уже смоделировал за вас и как это устроено?

В модуле 1 я сказал вам: смотрите на корабль-носитель — прежде чем что-то изобретать, посмотрите, как это делает сам Salesforce. В этом модуле мы действительно смотрим. Salesforce уже смоделировал за вас большую часть бизнеса в своих стандартных объектах, и две из этих моделей делают основную работу почти в каждом org, куда я прихожу: модель продаж (Sales) и модель обслуживания (Service). Прежде чем решать, заслуживает ли что-то пользовательского объекта, нужно знать, что уже есть. Об этом следующие два модуля.

Стандартный объект есть «из коробки». Его построил Salesforce, у него определенное назначение, и он приходит со своими полями и связями. Вы можете добавлять в него поля, строить вокруг него автоматизацию и менять его макеты, но перепроектировать его нельзя: стандартные поля и связи принадлежат Salesforce.

Посмотрите на имена. Account, Contact, Case. Ни префикса, ни суффикса. Так Salesforce оставляет это пространство за собой. Все, что строим мы, заканчивается на __c, поэтому Salesforce может добавлять новые стандартные объекты в любой момент и никогда не столкнуться ни с чем в вашем org. И он это делает, в каждом релизе.

Когда-то кто-то построил объект продукта, который не удался, и его пришлось оставить позади. Вот почему API-имя — Product2. Это мой первый лакмусовый тест, когда кто-то говорит мне, что знает Salesforce.

Начнем слева, с интереса (Lead): это кто-то, кто может стать клиентом. Интерес на самом деле еще не часть модели. Это зона ожидания. Когда вы его конвертируете, Salesforce создает настоящие записи: организацию (Account), контакт (Contact) и, если есть сделка, возможность (Opportunity). Поэтому я рисую интерес сбоку.

Организация — это компания. Ее контакты — люди в ней. Возможность — сделка с этой организацией. Пока ничего неожиданного.

А дальше становится интересно. Что входит в сделку? Каждая строка — это продукт возможности (Opportunity Product), и продукт возможности указывает не прямо на продукт. Он указывает на запись прайс-листа (Price Book Entry): этот продукт, по этой цене, в этом прайс-листе. Запись прайс-листа стоит между продуктом (Product) и прайс-листом (Price Book), поэтому у одного и того же продукта может быть одна цена в стандартном прайс-листе и другая — в прайс-листе для партнеров.

Это две связи, которые стали сущностями, одна за другой. Помните позицию доставки (Delivery Item) из главы 2, между доставкой и продуктом, и Трюк собаки между Собакой и Трюком? Salesforce сделал здесь ровно то же самое, дважды: продукт возможности между возможностью и записью прайс-листа, и запись прайс-листа между продуктом и прайс-листом. Если вы умеете это читать, вы прочитаете большую часть стандартной модели данных.

Модель продаж Модель продаж. Интерес, чуть левее, конвертируется в организацию. У организации есть контакты и возможности. Возможность использует прайс-лист и содержит продукты возможности. Каждый продукт возможности оценивается по одной записи прайс-листа. Прайс-лист перечисляет записи прайс-листа, а продукт входит в записи прайс-листа, поэтому каждая запись прайс-листа связывает один продукт и один прайс-лист. конвертируется в имеет имеет использует содержит оценивается по перечисляет входит в Интерес Организация Контакт Возможность Прайс-лист Продукт возможности Запись прайс-листа Продукт ровно один ноль или один один или много ноль или много © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Вот эта цепочка крупным планом, с полями, которые ее скрепляют:

Цепочка цен крупным планом Цепочка цен как детальная модель данных. Продукт возможности несет ID возможности, ID записи прайс-листа, количество и цену продажи и оценивается по одной записи прайс-листа. Запись прайс-листа несет ID прайс-листа, ID продукта, цену по прайс-листу и флаг «Использовать стандартную цену». У прайс-листа есть название и флаг «Стандартный»; у продукта — название и код продукта. оценивается по перечисляет входит в Прайс-лист ID прайс-листа ID ЗАПИСИ Название Стандартный Продукт возможности ID продукта возможности ID ЗАПИСИ ID возможности ID записи прайс-листа Количество Цена продажи Запись прайс-листа ID записи прайс-листа ID ЗАПИСИ ID прайс-листа ID продукта Цена по прайс-листу Использовать стандартную цену Продукт ID продукта ID ЗАПИСИ Название Код продукта ровно один ноль или один один или много ноль или много © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Одно правило, на котором люди спотыкаются: есть стандартный прайс-лист, и запись прайс-листа в любом другом прайс-листе может просто использовать стандартную цену продукта. Знайте, какой прайс-лист использует возможность, прежде чем загружать ее продукты.

Теперь другая половина дома. Та же организация, те же контакты. Когда что-то идет не так, клиент открывает обращение (Case).

Обращение обычно касается чего-то, что есть у клиента, и у Salesforce есть для этого объект: актив (Asset). В модуле 5 я назову его стандартным объектом, который люди упускают из виду. Это то, что есть у клиента, купил он это у вас или нет.

А на что клиент имеет право? Это право на обслуживание (Entitlement): поддержка, которую организация может получать, часто привязанная к активу, продукту или сервисному контракту. Добавьте право на обслуживание к обращению — и теперь обращение знает, какой уровень поддержки ему положен.

Модель обслуживания Модель обслуживания. У организации есть контакты, обращения и активы. Контакт сообщает об обращениях. Обращение может касаться одного актива, а право на обслуживание, принадлежащее организации, покрывает обращения. Линия от обращения обратно к нему же, вокруг угла, — это родительское обращение: обращение является родителем для нуля или многих обращений, и у каждого обращения ноль или один родитель. имеет имеет сообщает о владеет касается покрывает родитель для Организация Контакт Актив Обращение Право на обслуживание ровно один ноль или один один или много ноль или много © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Посмотрите на линию, которая идет от обращения обратно к нему самому. У каждого обращения есть поле Parent Case (родительское обращение), и оно указывает на другое обращение. Это самосвязь (self-lookup): связь объекта с самим собой. Многих она сбивает с толку, когда они видят ее впервые, поэтому вот две причины, по которым я ее использую.

Первая: большая проблема, которая распадается на меньшие. Клиент сообщает, что вся инсталляция не работает. Мы открываем дочерние обращения по сети, оборудованию и конфигурации, каждое решается само по себе, и все они закрываются вверх: родительское обращение не завершено, пока не завершены они.

Вторая: история. Обращение закрыли в прошлом месяце, а теперь та же проблема вернулась. Новое обращение указывает на исходное, так что любой, кто его откроет, увидит, что такое уже было, и что тогда сделали.

Мы вернемся к самосвязям, когда дойдем до связей в модуле 7.

Обратите внимание: организация и контакт стоят на одном и том же месте на обеих диаграммах. Это одни и те же записи. Менеджер по продажам и агент поддержки смотрят на одного и того же клиента с разных сторон дома. Это один из самых сильных аргументов за то, чтобы оставаться на стандартных объектах: модели построены так, чтобы встречаться.

Не все на записи — это поле. Договоры, фотографии, PDF и таблицы — это файлы, и их место в Salesforce Files, а не в старой модели Attachments, которая устарела. Если документ уже лежит в SharePoint Online, OneDrive, Google Drive или Box, Files Connect позволяет пользователям открыть его из Salesforce, не копируя внутрь.

Файлы учитываются иначе, чем записи. Salesforce делит хранилище на две части: файловое хранилище (file storage) содержит вложения, Files, Salesforce CRM Content, файлы Chatter и тому подобное, а хранилище данных (data storage) — ваши записи. Файловое хранилище быстро растет, когда к каждой записи прикрепляют фотографии или сканы, поэтому большим объемам изображений, вроде фотографий из полевого приложения, часто место вообще вне Salesforce, а в Salesforce остается только ссылка. Модуль 4 к этому вернется.

Хранилище данных тоже считается не так, как в базе данных. В обычной базе таблица из двух столбцов и миллиона строк маленькая, а таблица из ста столбцов и миллиона строк — слон. Salesforce взвешивает их одинаково: большинство записей считаются примерно как 2 КБ, сколько бы полей у них ни было. Есть исключения. Кампания весит больше, сообщение электронной почты считается по реальному размеру, а персональная учетная запись — около 4 КБ, потому что это и организация, и контакт.

Вот совет. Когда я прихожу в новый org, одно из первых мест, куда я иду, — Setup → Storage Usage (использование хранилища). Я даже прошу у клиента скриншот на первом созвоне. Этот экран не врет. Он показывает, какие объекты растут и какие уже стали слонами.

Персональные учетные записи: когда клиент — человек

Заголовок раздела «Персональные учетные записи: когда клиент — человек »

Модель организаций и контактов прекрасно работает для компании и людей в ней. Но что если ваш клиент — не компания? Что если это человек?

Для этого есть персональная учетная запись (Person Account): организация и контакт, объединенные в одну запись, для частных лиц. Поля контакта приходят вместе с ней, а пользовательские поля получают свой суффикс — __pc. Каждая такая запись считается и в хранилище организаций, и в хранилище контактов, потому что под капотом это и то и другое.

Одно предупреждение, прежде чем вы их включите: после включения персональных учетных записей отключить их нельзя. Это тест на обратимость из главы 1 в чистейшем виде. В модуле 5 я расскажу, когда, по-моему, они того стоят.

  • Какие части бизнеса Salesforce уже смоделировал — до того как проектировать что-то новое.
  • Попадает ли понятие в модель продаж, в модель обслуживания или в обе, с учетом того, что у них общие организация и контакт.
  • Где живут документы и изображения: в Salesforce Files, в подключенной файловой системе или вне платформы со ссылкой.
  • Сколько данные будут стоить в хранилище, если считать так, как считает Salesforce: записями, а не столбцами.
  • Является ли клиент компанией или человеком — до того как включать то, что нельзя выключить.

А если в Salesforce нет того, что вам нужно? Вы строите это сами. Об этом дальше.

  • OpportunityLineItem (opens in a new tab), Object Reference for the Salesforce Platform (на английском, проверено 2026-10-12): «элемент списка продуктов Product2, связанных с возможностью»; запись прайс-листа обязательна.
  • PricebookEntry (opens in a new tab), Object Reference (на английском, проверено 2026-10-12): «связь между Pricebook2 и Product2»; запись может использовать стандартную цену.
  • Case (opens in a new tab), Object Reference (на английском, проверено 2026-10-12): ParentId — «ID родительского обращения в иерархии. Метка — Parent Case»; связь lookup с Case.
  • Entitlement (opens in a new tab), Object Reference (на английском, проверено 2026-10-12): «поддержка клиентов, которую может получать организация или контакт», возможно, на основе актива, продукта или сервисного контракта.
  • Data and Storage Resources (opens in a new tab), Salesforce Help (на английском, проверено 2026-10-12): что входит в файловое хранилище и в хранилище данных.
  • Salesforce Data Storage: Estimated Record Size by Object Type (opens in a new tab), Salesforce Help (на английском, проверено 2026-10-12): «Большинство записей Salesforce занимают примерно 2 КБ хранилища данных»; персональные учетные записи — около 4 КБ.
  • Enable Person Accounts (opens in a new tab), Salesforce Help (на английском, проверено 2026-10-12): «После включения Person Accounts отключить их нельзя».
  • Files Connect FAQ (opens in a new tab), Salesforce Help (на английском, проверено 2026-09-25).