Сохранение изменений карточки

Код сохраняет все изменения карточки:
export async function saveCard(sender: CustomButton, e: IEventArgs) {
    await MessageBox.ShowConfirmation("Сохранить карточку?");

    layoutManager.cardLayout.saveCard(); (1)
}
1 Получаем разметку карточки (cardLayout) и вызываем её метод saveCard для сохранения.
Чтобы сохранить изменения определённого элемента управления, используйте его метод save:
export function saveDescription(sender: CustomButton, e: IEventArgs) {
    let cardDescription = sender.layout.controls.get<TextArea>("Description"); (1)

    cardDescription.save(); (2)
}
1 Получаем элемент управления Description, данные которого сохраняются.
2 Вызываем метод save для сохранения изменений.

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

Например, данная ошибка возникнет при сохранении карточки, если сохранение вызывается в обработчике изменения состояния карточки.

Чтобы обойти данную ошибку, приостановите обработку основного события до сохранения карточки, а сохранение сделайте асинхронным. Следующий код демонстрируется данный способ:

export async function onChangeState(sender: Layout, e: CancelableEventArgs<ICardStateChangingEventArgs>) {
        let description = sender.controls.get<TextArea>("Description");

        description.value = description.value + "\nЗарегистрировано"; (1)

        e.wait(); (2)
        await sender.saveCard(); (3)
        e.accept(); (4)
}
1 Изменяем значение поля карточки.
2 Приостанавливаем обработку основного события.
3 Асинхронное сохранение.
4 Продолжаем обработку.