Привет!
Сегодня разберемся, что такое Field History Tracking, зачем он нужен и как его настроить.
Очень часто возникает ситуация, когда на рекорде какого-либо объекта изменяется какое-то поле, и через время никто не помнит ни кто сделал эти изменения, ни когда они были сделаны, никакие предыдущие значения это поле имело. Для отслеживания всей этой информации и используется Field History Tracking.
Как включить?
Для того чтобы включить Field History Tracking на стандартном объекте – нужно зайти на вкладку Fields & Relationships. Кликаем Set History Tracking, затем Enable Account History и выбираем нужные поля для трекинга истории изменений
На кастомном объекте сначала нужно включить Track Field History. Для этого в Object Manager кликаем Edit напротив нужного объекта
И ставим галочку возле Track Field History в секции Optional Features.
После этого, как и на стандартном объекте, заходим в Fields & Relationship. Кликаем Set History Tracking и выбираем нужные поля для трекинга истории изменений.
Как отслеживать изменение?
Теперь, когда мы включили трекинг, нужно еще добавить History объект в Related List на основном объекте, где мы трекаем историю изменения полей.
Для этого заходим на Page Layout и в разделе Related Lists добавляем объект History
Теперь мы можем видеть записи объекта History на табе Related на записи основного объекта.
Сейчас там нет записей, но если мы сделаем изменения в поле, которое мы пометили для отслеживания, то увидим такую картину.
Собственно на этом процедура включения Field History Tracking завершена.
Что “под капотом”?
После активации Field History Tracking создается новый объект - для стандартных объектов он имеет название {Имя объекта}History, например AccountHistory. Для кастомных объектов он имеет название {Имя объекта}__History, например Master1__History.
Этот объект имеет такой набор полей:
Поле | Описание |
---|---|
ObjectNameId (AccountId) - для стандартных объектов. ParentId - для кастомных объектов | Это Lookup на запись изменения полей на которой отслеживаются. |
Field | Имя отслеживаемого поля. |
NewValue | Новое значение поля. |
OldValue | Старое значение поля. |
CreatedBy | Lookup на пользователя, который сделал изменения. |
CreatedDate | Дата изменений. |
DataType | Тип поля, которое было изменено. |
Примечание: Исключением является объект Opportunity, для которого при активации Field History Tracking создается объект OpportunityFieldHistory имеющий описанную выше структуру. А объект OpportunityHistory имеет другую структуру и назначение.
Для работы с History объектом можно использовать SOQL:
SELECT AccountId,
DataType,
Field,
NewValue,
OldValue,
CreatedById,
CreatedDate
FROM AccountHistory
Ограничения
Как и все в Salesforce Field History Tracking имеет свои ограничения. Основные из них такие:
- можно использовать для кастомных объектов и для таких стандартных
- Accounts
- Articles
- Assets
- Campaigns
- Cases
- Contacts
- Contracts
- Contract Line Items
- Crisis
- Employees
- Employee Crisis Assessments
- Entitlements
- Events
- Individuals
- Internal Organization Units
- Knowledge
- Leads
- Opportunities
- Orders
- Order Products
- Products
- Price Book Entries
- Quote
- Quote Line Item
- Service Appointments
- Service Contracts
- Solutions
- Tasks
- Work Orders
- Work Order Line Items
- максимум 20 полей на объект (при помощи Field Audit Trail - до 60)
- нельзя использовать для Formula и Roll-Up Summary Fields
- если изменения сделаны в текстовом поле длинной больше 255 символов, то Field History Tracking зафиксирует факт изменения, но при этом не зафиксирует, какое это было изменение, то есть NewValue и OldValue будут пустыми
- время хранения записей объекта History ограничено:
- к записям за последние 18 месяцев после активации Field History Tracking можно получить доступ через SOQL
- к записям за последние 18-24 месяца можно получить доступ через Data Loader или API
- через 24 месяца данные становятся недоступны (Это ограничение можно обойти при помощи Field Audit Trail)
- если изменения сделаны Process Builder, Flow или Trigger в системном режиме, то они не отображаются в Field History Tracking
- изменения сделанные до активации Field History Tracking не отображаются
Мы рассмотрели общий функционал, настройки и ограничения для Field History Tracking. Теперь Вы сможете легко настроить данный функционал для практически любого объекта в Salesforce. Хочу сразу отметить, что при настройке Field History Tracking для некоторых объектов есть определенные нюансы. Более подробно можно об этом можно почитать в документации по ссылке - Help And Training Community.