Как создать замещение пользователя

Зачастую, когда сотрудник в отпуске, на больничном, в командировке или отсутствует по каким-либо другим причинам, его временно заменяет другой сотрудник.

Необходимо, чтобы информация о замещении появилась в системе и была видна другим пользователям, а задачи отсутствующего сотрудника приходили на замещающего.

О том, как работают замещения и как создать замещение вручную, можно узнать в статье «Замещение пользователей» справки по системе.

В этой статье мы расскажем, как создать замещение автоматически с помощью скрипта.

Рассмотрим кейс с замещением сотрудника, отправляющегося в командировку. Замещение будет создаваться в бизнес-процессе, который запускается при сохранении элемента приложения Командировка.

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

При сохранении карточки командировки запускается бизнес-процесс, в котором находится скрипт, добавляющий новое замещение.

Скрипт

В бизнес-процесс обработки командировки необходимо добавить блок Скрипт и написать код, представленный ниже.

В скрипте важно заполнить все атрибуты замещения: Тип, Отсутствующий, Замещающий, Дата начала и Дата окончания.

После заполнения атрибутов необходимо обязательно сохранить новое замещение.

async function createReplacement(): Promise<void> {

    /* Получим элемент приложения Командировка,
    данные из которого будут использоваться при создании замещения. */
    const trip = await Context.data.trip.fetch();

    // Создаем элемент замещения
    const newReplacement = System.replacements.create();

    /* Указываем тип замещения: Информирование (`information`), 
    Переназначение задач (`reassign`) или Полная передача прав (`full`) */
    newReplacement.data.type = newReplacement.fields.type.variants.information;

    // Указываем отсутствующего — в нашем случае это пользователь, который отправляется в командировку
    newReplacement.data.absent = trip.data.traveller;

    // Указываем замещающего
    newReplacement.data.replacement = trip.data.replacer;

    // Указываем дату начала и окончания из контекста — даты командировки
    newReplacement.data.begin = trip.data.trip_start_date;
    newReplacement.data.end = trip.data.trip_end_date;

    // Сохраняем элемент замещения
    await newReplacement.save()

}

Результат

Когда в процессе выполнится указанный выше скрипт, в системе появится новое замещение.