0
Голосовать

Отмена изменений

Создано:
Метки записи:

Всем доброго времени суток.

Версия 7.9 sales.

На странице есть кнопка Отмена (см. скриншот). Необходимо добавить событие на эту кнопку. Событие связано с изменениями данных на странице и пересчётами параметров, но дело не в нём.

onDiscardChangesClick: function(){
        this.callParent(arguments);
        console.log("Событие");
}

Такой вариант не помогает - нужное событие происходит раньше, чем отмена изменений (оно должно происходить сразу после).

Соответственно, вопрос - как правильно сделать? Какая функция должна быть переопределена, или быть может, есть sandbox-сообщение, на которое можно подписаться и вызывать через него требуемое событие?

otmena.png2.07 кб

Комментарии

Варфоломеев Данила

onDiscardChangesClick: function() {
        if (this.isNew) {
                this.sandbox.publish("BackHistoryState");
                return;
        }
        this.set("IsEntityInitialized", false);
        this.loadEntity(this.getPrimaryColumnValue(), function() {
                this.updateButtonsVisibility(false, {
                        force: true
                });
                this.initMultiLookup();
                this.set("IsEntityInitialized", true);
                this.discardDetailChange();
                this.updatePageHeaderCaption();
        }, this);
        if (this.get("ForceUpdate")) {
                this.set("ForceUpdate", false);
        }
},

Кажется мне, что в сферическом вакууме перезагрузка entity выглядит как-то так:
this.loadEntity(recordId, callback, scope)
Ну и поскольку она асинхронна, попробуйте добавить console.log после, допустим, this.updatePageHeaderCaption()

Мотков Илья

Здравствуйте, Денис.

Предыдущий комментатор верно подметил. Для замещения, Вам необходимо переписать метод onDiscardChangesClick целиком (вызова this.callParent(arguments) будет недостаточно) и добавить свой код в коллбэк функцию из метода loadEntity.

Также, при необходимости, можете посмотреть в сторону использования js функции setTimeout для отложенного вызова кода.

Смородинов Денис

Илья, Данила - спасибо!

Вроде как задача решена.