Прерывание выполнения операции

Функция, настроенная для обработки события, возникающего при выполнении операции, позволяет прервать её выполнение, если аргумент события имеет интерфейс ICancelableEventArgs. Данный интерфейс определяет два метода: cancel — прерывает выполнение операции; accept — продолжает выполнение операции.

Следующий код демонстрирует пример обработчика события сохранения карточки, прерывающего сохранение, если в названии карточки (cardName) содержится слово "договор".

export function onCardSaving(sender: Layout, e: ICancelableEventArgs<ISaveControlData>) { (1)

    let cardName = sender.controls.get<TextBox>("cardName"); (2)

    if (cardName.params.value.includes("договор")) { (3)
        MessageBox.ShowError("Для оформления договоров используйте вид документа 'Договор'");
        e.cancel(); (4)
    } else {
        e.accept(); (5)
    }
}
1 Метод onCardSaving настроен в качестве обработчика события, вызываемого перед сохранением карточки

Список параметров метода соответствует аргументам события cardSaving класса LayoutParams

2 Получение элемента управления с названием карточки.
3 Если в названии используется слово "договор", сохранении карточки будет прервано.
4 Метод cancel прерывает операцию сохранения.
5 Метод accept продолжает операцию сохранения.

Вызов метода accept не является обязательным.

Другой пример демонстрирует использование метода wait, который позволяет отложить решение до момента выполнения асинхронной операции (например, запроса к серверу или показа диалога подтверждения).

export async function onCardSaving(sender: Layout, e: ICancelableEventArgs<ISaveControlData>) {

    e.wait(); (1)
    try {
        await MessageBox.ShowConfirmation("Вы действительно хотите сохранить карточку?"); (2)

        e.accept(); (3)
    } catch {
        e.cancel(); (4)
    }
}
1 Отменяем автоматический вызов e.accept().
2 Показ диалога с ожиданием решения пользователя.
3 Разрешаем выполнение операции.
4 Отменяем событие.
Чтобы определить, является ли событие прерываемым, обратитесь к его описанию в справочнике по JS API. События, возникающие при начале выполнения операции, реализуют интерфейс ICancelableEvent; возникающие после — IBasicEvent.