this.save() прервать закрытие карточки (возврат к предыдущей карточке в сhain)

Карточки в типовой конфигурации, если какрточка сущности была открыта в chain
(или поправьте меня как это правильно называть, мое толкование проистекает от метода openCardInChain)
В таком режиме - определенные типовые действия: "Закрыть", "Сохранить", "Отмена", приводят к "шагу назад" в цепочке открытых карточек.
Иногда в бизнес-логике необходимо выполнить принудительное сохранение карточки, для этого очень удобно использовать методы распостраняемые BasePageV2, и расширяемые на уровне сущностей в соответствии с их особенностями, в частности this.save()
Вопрос:
Можно ли принудительно изменить, в данном случае "прервать" поведение которое осуществляет закрытие карточки и возврат к предыдущей карточке в chain, после вызова this.save() ?

Нравится

3 комментария

Сам спросил, сам ответил

var config = {
    isSilent: true,
};
this.save(config)

метод принимает конфигурационный объект, в котором предусмотрен соответствующий флаг.
isSilent

так... сей фокус не работает если это целевой режим создания или копирования. (т.е. если это карточка новой записи - она все равно закрывается)

Вообщем итоговый "трюк" таков.
Если вам нужно вызвать this.save() и избежать закрытия карточки:

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});
}
Показать все комментарии