URL Hacking for Lightning

Всем привет!

В этой статье хочу рассказать о том, что такое URL Hacking для Lightning и как его использовать.
По умолчанию Salesforce заполняет только поля Relationship Fields, но если вам нужно заполнить другие поля при создании новой записи в Lightning — используйте Lightning URL Hack.

URL Hacking — это способ, с помощью которого вы можете предварительно установить значения для записи по умолчанию, используя статические или динамические поля, на основе записи. Т.е URL Hacking использует стандартный URL-адрес с добавлением в него дополнительных параметров для заполнения необходимых полей.

К примеру, вы находитесь на Account и хотите создать c Account - Opportunity с некоторыми предзаполненными полями на основе данного Account (Name, RecordType, StageName и т.д.). Установить значения по умолчанию не слишком гибкий подход, т.к. значения полей могут задаваться разные, а также Opportunity может создаваться без привязки к конкретному аккаунту.

URL Hacking можно использовать как декларативно (при создании custom button), так и императивно (при генерации ссылки в коде). В этой статье поговорим о декларативном способе.

Построение URL Hacking Lightning

Для того чтобы использовать кастомную кнопку для создания записи с предзаполненными полями нужно:

  • создать кастомную кнопку
  • добавить URL Hacking с defaultFieldValues
  • добавить кнопку на лейаут

Теперь давайте рассмотрим конкретный пример. Представим, что у нас есть Opportunity с разными Record Types и мы хотим создать новую запись Opportunity с определенным Record Type и продублировать некоторые поля с Аккаунта. В нашем случае мы хотим создать запись Opportunity с:

  • Record Type - New Business
  • Name - такое же, как и Name Account
  • CloseDate - + 30 дней от сегодняшней даты
  • StageName - установить в Negotiation/Review
  • NextStep - пропишем строку “Waiting for confirmation”
  • TrackingNumber - также для всех будем устанавливать произвольную строку
  • IsPrivate - установим в зависимости от значения поля Passport_ID на Account. Если заполнено - true, иначе - false

Создание Custom Button

Для этого нам нужно зайти на Account через Object Manager, выбрать раздел Buttons, Links and Actions, затем нажать New Button or Link.

Задаем имя для Custom Button.

В пункте Display Type мы указываем Detail Page Button.

Content Source - URL

Добавление URL и дефолтных значений

В секции для ввода формулы мы создаем нашу ссылку. Она начинается с:

/lightning/o/Opportunity/new?

Вместо Opportunity вы можете подставить нужный вам объект. Если как в нашем случае мы хотим установить определенный RecortType, тогда мы должны добавить в продолжении URL выше:

recordTypeId=0122o000000NzCG

Регистр имеет значение, учтите это. Если пропустить установку RecordType, тогда будет создана запись Opportunity с Record Type по умолчанию.

Но если нужно оставить пользователю выбор при создании записи, используйте следующий параметр после знака вопроса:

/lightning/o/Opportunity/new?useRecordTypeCheck=1

Далее с помощью defaultFieldValues указываем те значения, которые мы хотим видеть предзаполненными на нашей форме. Для этого мы используем API имя нашего поля и присваиваем ему нужное нам значение вручную или при помощи функции Insert Field на странице создания кнопки. Но только не указывайте defaultFieldValues в Record Type! Он должен устанавливается сразу, как описано выше.

Перед defaultFieldValues после задания recordTypeId установите символ - & и после укажите значения полей в следующем формате, без пробелов, при этом Enter допускается

/lightning/o/Opportunity/new?recordTypeId=0122o000000NzCGAA0&defaultFieldValues=

Name={!Account.Name},

CloseDate={!TEXT(TODAY()+30)},

StageName=Negotiation/Review,

NextStep=Waiting+for+confirmation,

TrackingNumber__c=Test+0679453,

IsPrivate={!IF(Account.Passport_ID__c != null, true, false)}

Полю Name присваиваем имя Account динамически

Для поля с типом Date указываем дату в данном формате - {!TEXT()} - Date преобразовывается в String с помощью TEXT()

В полях NextStep и TrackingNumber__c - символ “+” заменяется в значении на пробел

IsPrivate устанавливается в true или false динамически с помощью формулы IF()

Проверяем синтаксис и жмем Save

Добавление кнопки на Page Layout

Для того чтобы наша кнопка была доступна для использования, и мы могли ее протестировать — нам нужно добавить ее на Page Layout. Идем на Account Page Layout, в разделе Mobile & Lightning Actions находим нашу кнопку и добавляем ее на Page Layout.

Теперь приступим к тестированию. Если вы все сделали верно, то на странице Account должна появиться наша кнопка.

При раскрытии формы можно увидеть, что поля заполнены

Особенности

  • Кнопки не доступны Community и Salesforce Mobile. Они также не будут работать вне Lightning.
  • Если вы устанавливаете статическое значение, используйте плюс + вместо пробела, а если вы заполняете динамически - используйте {!URLENCODE()}

С помощью данного инструмента процесс работы станет более гибким, а также он поможет избавить пользователя от рутины - заполнения тех же полей одними и теми же значениями. Или, как в случае с чекбоксом в нашем примере, делать дополнительные проверки перед его установкой в true или false, что также должно позитивно сказаться на качестве данных.

7 Likes

Чи можна зробити так, щоб рекорд створювався без вспливаючого вікна. Тобто ми нажимаємо кнопку і рекорд створився з дефолтними полями, без цього вікна