Dynamic Forms

В этот статье мы расскажем Вам о том, что такое Dynamic Forms, как начать с ними работать, а также о том, что поддерживается и не поддерживается.

Что такое Dynamic Forms?

Цель Dynamic Forms - создание ориентированных на пользователя, интуитивно понятных Page Layout, которые отображают нужную информацию в нужный момент времени. Как часто бывает, когда проекты расширяются — возрастает количество полей, в следствии чего Page Layout или его секции могут быть перегружены этими же полями. Эти поля могут быть необходимыми, но не прямо сейчас и не для всех пользователей. Мы, конечно же, выкручивались, создавали несколько Page Layouts и различные Profiles, что требовало дополнительных трудозатрат.

И вот появились Dynamic Forms, с помощью которых мы можем:

  • Размещать поля где угодно на Layout странице, не только в “Details” tab
  • Использовать Visibility Rules, для установки критериев, по которым поля отображаются и скрываются
  • Возможность использовать один Page Layout вместо нескольких
  • Улучшить время загрузки страницы

Dynamic Forms пока работают только для страниц кастомных объектов. Поддержка стандартных объектов в настоящее время недоступна, но, возможно, появится в релизе Spring 2021.

Как начать работать с Dynamic Forms?
Для начала работы включим Dynamic Forms в организации:

  • В Setup в меню “User Interface” выберем подменю “Record Page Settings

  • В секции Dynamic Forms переключим тумблер на On

Это вы должны включить на каждой организации/сандбоксе, на которых будете использовать Dynamic Forms.

Что будем реализовывать с помощью Dynamic Forms?

Заранее прошу не судить строго мою фантазию, но этот пример должен дать понимание о том, что такое Dynamic Forms.
Итак, у нас есть кастомный объект, на котором есть поля:

Обязательные:

  • Name
  • Stage (Picklist)

Необязательные:

  • rejection reason (Picklist)
  • other rejection reason (Text)
  • Change address? (Checkbox)
  • City
  • Street

Когда значение Stage - rejected, пользователю отображается поле - rejection reason.
Если значение поля rejection reason - other, тогда для заполнения появляется следующее текстовое поле - other rejection reason.
Если значение поля rejection reason - wrong address, тогда у пользователя отображается еще одно поле Change address?, если его установить в True, то появляется новая секция - Address с двумя полями: City и Street.

Создание Lightning Page Record c Dynamic Forms

С помощью Dynamic Forms поля и секции можно размещать в любом месте на странице, чтобы эффективно структурировать и систематизировать информацию. Кроме того, правила могут быть установлены так, чтобы показывать только определенные поля на основе других значений полей, например, когда установлен checkbox или когда picklist имеет определенное значение. Также, можно настроить отображение данных пользователям на основе их роли, местоположения или другой идентифицирующей информации.

Ближе к делу! Открываем меню Setup - User Interface - Lightning App Builder.
Создаем новую страницу: New - Record Page - заполняем Label страницы, указываем кастомный объект в Object, выбираем шаблон страницы - Finish. Перед нами открывается Lightning Page доступная для заполнения. И первое, что бросается в глаза: появилась вкладка Fields.

Есть два способа начать использовать Dynamic Forms. Для новых record pages — после создания страницы. Вы можете сразу же перетащить Field Section компоненты и Fields на страницу. Поскольку Dynamic Forms очень гибкие, Вы можете переставлять, организовывать и даже размещать секции в разных Tab на странице.

Или же открыть существующую страницу в Lightning App Builder и кликнуть на компонент Record Detail. В свойствах компонента вы увидите новую область.

Кликните “Upgrade Now”, чтобы приступить к работе с Dynamic Forms на этой странице. Откроется всплывающее окно, в котором нужно будет выбрать page layout, после будет запущен мастер миграции, который перенесет сам все поля и секции на Lightning Page.

Компонент “Record Detail” удаляется со страницы, оставляя нас с полями и секциями, которые можно настраивать и размещать где угодно.

Теперь давайте создадим нашу страницу с помощью Dynamic Forms согласно условия выше.

В секции Information оставим 2 колонки с полями: Name, Stage, rejection reason, other rejection reason и Change address?. Остальные пока удалим.

Постоянно видеть нам надо только Name и Stage, при этом они должны быть обязательными. Установим это в свойствах поля справа, которое появится при нажатии на каждое из полей

Приступаем к настройке Visibility для rejection reason, other rejection reason и Change address? полей. Для этого выбираем каждое поле и в его настройках справа в Set Field Visibility нажимаем кнопку Add Filter

Поле rejection reason будет видимым только когда значение Пиклиста поля Stage будет rejected:

Тоже и для other rejection reason и Change address? полей. Фильтров может быть несколько.

Теперь добавим секцию Address, добавим на нее два поля: City и street. И настроим видимость всей секции только когда Checkbox поля Change address? установлен в True.

Сохраним и активируем страницу. И можем насладится результатом работы с Dynamic Forms.

Изначально отображаются только два требуемых поля

И, в зависимости от значений некоторых полей, количество полей на странице увеличивается динамически

При этом кнопку Save нажимать не нужно. Но для отображения секции это необходимо

После сохранения

Что не поддерживается?

  • В данный момент Dynamic Forms поддерживается только для кастомных объектов. Salesforce стремится реализовать поддержку Dynamic Forms для стандартных объектов в релизе Spring 2021
  • Dynamic Forms не поддерживаются на страницах записей, которые используют pinned-region или кастомные page templates
  • Field Section и Field компоненты не поддерживаются на мобильных устройствах. На всех мигрированных страницах автоматически будет добавлен новый компонент “Record Detail – Mobile”, и вы должны добавить этот компонент вручную, если создаете страницу самостоятельно (с нуля) без миграции старой.
  • Традиционные Page Layouts по-прежнему будут контролировать related lists, например, порядок related lists и видимые столбцы в related lists

По итогу могу сказать, что Dynamic Forms это крутая штука, которую вскоре разработчики будут использовать все больше и больше, особенно после того, как будет добавлена поддержка стандартных объектов (надеюсь, Salesforce с этим не затянет). Из неудобств: мне не понравилось, что новая секция отображается только после сохранения записи. И если нужно менять значения полей и в новой секции, то придется сохранять запись дважды. Хотя можно на новой секции размещать поля формулы.

5 Вподобань

По сути у нас появилась новая версия пейдж лейаута с доп функциями?

Да, более свободная версия, можно даже не больше не использовать Action на страницах, а просто создать отдельную секцию

Да, штука хорошая. Хочу уточнить несколько моментов:

  1. Раз нужен App Builder, то это только для Lightning Experience доступно?
  2. В результате мы получим Lightning Record page, соответственно нам нужно будет настраивать назначение по рекорд тайпам через App Builder (меню после кнопки Activation)? Выходит что стандартный Page Layout Assignment уже не нужен, поскольку сами лейауты не будут динамическими (а жаль, так удобнее, как по мне)
2 Вподобання

Спасибо, за комент, хорошее дополнение к статье)

  1. да, DF доступны только в Lightning Experience
  2. это тоже да, сразу об этом не подумал. Page Layout Assignment не нужен, согласен, через него удобнее