Всем доброго времени суток.
Версия 7.9 sales.
На странице есть кнопка Отмена (см. скриншот). Необходимо добавить событие на эту кнопку. Событие связано с изменениями данных на странице и пересчётами параметров, но дело не в нём.
this.callParent(arguments);
console.log("Событие");
}
Такой вариант не помогает - нужное событие происходит раньше, чем отмена изменений (оно должно происходить сразу после).
Соответственно, вопрос - как правильно сделать? Какая функция должна быть переопределена, или быть может, есть sandbox-сообщение, на которое можно подписаться и вызывать через него требуемое событие?
Нравится
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 для отложенного вызова кода.