Знакомство с Formula fields

В этой статье я расскажу о том что такое Formula Field, по каким принципам оно работает, и как его создать.

1. Вступление
2. Что такое Formula field
3. Создание Formula field
4. Заключение

Вступление

В Salesforce при переходе на запись вы найдёте множество значений которые были указаны при создании, или изменены в процессе работы. Но что делать если нужно что бы поле вычислялось каждый раз по новой, основываясь на других полях. Что бы не приходилось пересчитывать каждый раз значение в ручную или писать Trigger c помощью Apex который бы реагировал на каждое изменение, существует Formula field. Оно предоставляет нам возможность вычислять значения на лету, каждый раз когда вы обращаетесь к записи, в соответствии с указанной вами логикой. Но функционал formula field гораздо шире, давайте разберём подробнее.

Что такое Formula field

Представьте если бы вам было необходимо вычислить процентную ставку для работника, опираясь на его опыт или другие параметры. Или вы хотите что бы поле содержало ссылку на необходимую информацию. Частый случай когда нужно взять две даты и вычислить количество дней между ними. Реализовать всё это возможно с помощью Formula field.

Formula field это тип поля который вы можете создать на объекте, и задать логику по которой оно будет работать. Позволяет взаимодействовать с другими полями объекта и в том числе с полями родителя, если таковой существует.

Что следует знать о Formula field ?

  • Read only вы не можете редактировать значение этого поля.
  • Заполняется на основе логики указанной в описании поля.
  • Обновляется каждый раз когда поля из которых берут значения изменяются.
  • Вычисляются при обращении к записи.

После того как вы выберете тип Formula field для своего будущего поля, вам предложат выбрать ещё и тип возвращаемого значения.

Создание Formula field

Создание Formula в Salesforce происходит с помощью специального редактора.

Text Area : область где будет написана формула
Insert Field : позволяет выбрать поля для использования в формуле
Insert Operator: показывает набор математических и логических операторов которые существуют в Salesforce.
Functions Menu: набор функций таких как AND, ISNUMBER, CASE, NOT и т.д
Check Syntax : проверка на то, нет ли синтаксических ошибок в формуле.

Создадим Formula Field

Я буду создавать 2 formula field на кастомном объекте Book который содержит поле Price с типом Number, первое будет вычислять размер скидки в процентах в зависимости от цены книги, а второе стоимость этой книги со скидкой.

  1. Переходим в Setup | Object manager | Book | Fields and Relationships | New

  2. В типе поля выбираем Formula.

  3. Выбираем тип возвращаемого значения Percent, указываем имя Discount.

  4. Напишем формулу для вычисления размера скидки, в зависимости от стоимости. Используем логический оператор IF(logical_test, value_if_true, value_if_false). Проверяем синтаксис, жмём Next и Save.
    Формула:

IF(AlexHCSSTest__Price__c >= 3000, 0.3, 
IF(AlexHCSSTest__Price__c >= 2000, 0.2, 
IF(AlexHCSSTest__Price__c >= 1000, 0.1, 0)))

У меня в организации есть приставка AlexHCSSTest, пусть это вас не сбивает с толку

  1. После проверим работу нашего поля, создадим запись книги, назовём её Harry Potter и укажем цену больше 3000, следовательно, скидка должна быть 30%. Что бы быстро создавать записи рекомендую создать Tab. Что такое Tab и её создание.


    Так же для случая когда цена книги меньше 3000, но больше 2000.

    И для случая если книга стоит меньше 1000.

  2. Теперь создадим ещё одно formula field которое будет ссылаться на поле Discount и покажет нам цену со скидкой. Назовём его Price with discount, тип возвращаемого значения Number.
    Формула :
    AlexHCSSTest__Price__c - (AlexHCSSTest__Price__c * AlexHCSSTest__Discount__c)
    Вычисляем цену со скидкой. Заметьте, что скидка берётся из ранее созданного поля Discount.


    Если снова зайти на запись книги, то можно увидеть цену на книгу со скидкой.

Заключение

Здесь мы рассмотрели наиболее простой вариант работы с Formula field, формулы применяется в Salesforce не только в этом случае. Функционал formula field гораздо шире, и он имеет свою специфику в некоторых местах. Далее рассмотрим тему: Знакомство с Cross Object Formulas.