Всем доброго времени суток.
Версия 7.9 sales.
На странице есть кнопка Отмена (см. скриншот). Необходимо добавить событие на эту кнопку. Событие связано с изменениями данных на странице и пересчётами параметров, но дело не в нём.
this.callParent(arguments);
console.log("Событие");
}
Такой вариант не помогает - нужное событие происходит раньше, чем отмена изменений (оно должно происходить сразу после).
Соответственно, вопрос - как правильно сделать? Какая функция должна быть переопределена, или быть может, есть sandbox-сообщение, на которое можно подписаться и вызывать через него требуемое событие?
Нравится
[javascript]
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);
}
},
[/javascript]
Кажется мне, что в сферическом вакууме перезагрузка entity выглядит как-то так: [javascript]
this.loadEntity(recordId, callback, scope)
[/javascript]Ну и поскольку она асинхронна, попробуйте добавить console.log после, допустим, this.updatePageHeaderCaption()
Здравствуйте, Денис.
Предыдущий комментатор верно подметил. Для замещения, Вам необходимо переписать метод onDiscardChangesClick целиком (вызова this.callParent(arguments) будет недостаточно) и добавить свой код в коллбэк функцию из метода loadEntity.
Также, при необходимости, можете посмотреть в сторону использования js функции setTimeout для отложенного вызова кода.