this.save() прервать закрытие карточки (возврат к предыдущей карточке в сhain)
Карточки в типовой конфигурации, если какрточка сущности была открыта в chain
(или поправьте меня как это правильно называть, мое толкование проистекает от метода openCardInChain)
В таком режиме - определенные типовые действия: "Закрыть", "Сохранить", "Отмена", приводят к "шагу назад" в цепочке открытых карточек.
Иногда в бизнес-логике необходимо выполнить принудительное сохранение карточки, для этого очень удобно использовать методы распостраняемые BasePageV2, и расширяемые на уровне сущностей в соответствии с их особенностями, в частности this.save()
Вопрос:
Можно ли принудительно изменить, в данном случае "прервать" поведение которое осуществляет закрытие карточки и возврат к предыдущей карточке в chain, после вызова this.save() ?
Нравится
Сам спросил, сам ответил
[javascript]
var config = {
isSilent: true,
};
this.save(config)
[/javascript]
метод принимает конфигурационный объект, в котором предусмотрен соответствующий флаг.
isSilent
так... сей фокус не работает если это целевой режим создания или копирования. (т.е. если это карточка новой записи - она все равно закрывается)
Вообщем итоговый "трюк" таков.
Если вам нужно вызвать this.save() и избежать закрытия карточки:
[javascript]
if (this.isAddMode() || this.isCopyMode()) {
//сохраняем значения для восстановления их далее
var operation = this.get("Operation");
var isChain = this.get("IsInChain");
//подменим целевой режим
this.set("Operation", "edit");
//подменим флаг присутствия в chain, елси он установлен
if (isChain) {
this.set("Operation", false);
}
//вызываем метод save, используем флаг isSilent
this.save({isSilent: true});
//Восстановим подмененные значения
this.set("Operation", operation);
if (isChain) {
this.set("Operation", isChain);
}
} else {
//Если карточка открыта в целевом режиме "Редактировать запись"
//вызываем метод save, используем флаг isSilent
this.save({isSilent: true});
}
[/javascript]