Создание записи с предзаполненными полями

Всем привет!
Есть необходимость создавать предзаполненные записи по нажатию на пункт в меню.

Жму на ссылку в меню > открывается форма создания записи с заполненными полями > пользователь заполняет остальное > создается реквест.

Подскажите, пожалуйста, как это можно реализовать или куда копать.
Нужен функционал Change Template только для Запросов на обслуживание.

Заранее спасибо!

Например создать кнопку с такой ссылкой (или сформировать ее динамически скриптом и использовать s_go.open(url)):

https://your-inst.simpleone.ru/record/itsm_request?field_subject=Предзаполнение_Сабжект&field_impact=1&field_urgency=1

2 лайка

Спасибо большое за ответ!

Еще вырианты

  1. Жестко в настройках полей прописать дефолтные значения. Работает всегда, даже для бизнес-правил.
  2. Использовать клиентские скрипты “при загрузке”, проверять, что это новая запись s_form.isNewRecord() и заполнять необходимые поля скриптом.

Первые два вариант - когда надо жестко назначать значения.

  1. Если надо из одной записи передавать значения, то можно воспользоваться советом уважаемого molodik - передавать через url.

  2. Но данный способ не всегда корректно работает с передачей большого количества полей и данных, в этом случае можно использовать локальное хранилище браузера - sessionStorage.

Пример:
Код кнопки

const storageObj = {};

// Список полей для передачи через Object
const mappingFields = [
    'caller',
    'subject',
    'description',
    'impact',
    'urgency',
    'priority',
    'service',
    'followers_list'
];

mappingFields.forEach(item => {
    if (s_form.getValue(item)) {
        storageObj[item] = s_form.getValue(item)
    }
});

// Сохраняем данные в localStorage
sessionStorage.setItem('taskData', JSON.stringify(storageObj));

// Переходим на создание Change Request
s_go.open(`/record/itsm_change_request`);

Код пользовательского скрипта “при загрузке”

// Если новая форма и существует в sessionStorage 'taskData'
if (s_form.isNewRecord() && sessionStorage.getItem('taskData')) { 
    const storageObj = JSON.parse(sessionStorage.getItem('taskData'));
    for (let columnName in storageObj) {
        await s_form.setValue(columnName, storageObj[columnName]);
    }
    // Удаляем taskData из Session Storage
    sessionStorage.removeItem('taskData');
}
3 лайка