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