Здравствуйте!
Стоит задача сохранить карточку детали без выхода из неё. Также обязательным условием является выполнение событий обработки обновления записи, описанной в объекте. (Событие SxMyObjUpdating)
this.save(), this.saveEntity(function () {}); - Событие Udpating отрабатывает, но сразу закрывается карточка
this.saveEntity() - В Событие Updating не попадает + результат:
core.js:466 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: http://pashchenko:7400/0/core/5bd338b22650c32496b5ec4322b7b2eb/combined/... line: 618
message: Uncaught TypeError: Cannot read property 'call' of undefined
date: Mon Feb 02 2015 18:19:25 GMT+0300 (Саудовское время (зима))
Как можно решить данную проблему?
Нравится
Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.
Здравствуйте, Александр!
Чтобы понимать, что происходит при вызове методов всегда смотрите исходники. Например, метод save() определен в "BasePageV2", выглядит следующим образом:
[javascript]
save: function(config) {
this.showBodyMask();
Terrasoft.chain(
this.saveCheckCanEditRight,
this.saveAsyncValidate,
this.saveEntityInChain,
function(next) {
this.saveDetails(function(response) {
if (this.validateResponse(response)) {
next();
}
}, this);
},
function() {
this.onSaved(this.cardSaveResponse, config);
this.cardSaveResponse = null;
delete this.cardSaveResponse;
},
this);
},
[/javascript]
Здесь нет переходов в другие разделы, значит нужно смотреть в методы, вызываемые внутри save(). Смотрим метод onSaved() и видим, что карточку можно сохранит в "тихом" режиме, тогда она закрываться не будет и не будет публиковаться сообщение "UpdateDetail", если в объекте config свойство isSilent имеет значение true:
[javascript]
onSaved: function(response, config) {
this.hideBodyMask();
if (!this.get("NextPrcElReady")) {
this.set("NextPrcElReady", response.nextPrcElReady);
}
if (config && config.isSilent) {
this.onSilentSaved(response, config);
} else {
........
[/javascript]
А config, соответсвенно, берется из save(config).
Итого, нужно сохранять запись следующим образом:
[javascript]
this.save({isSilent:true});
[/javascript]
Андрей, спасибо за подсказку.
Действительно так работает. Я так тоже пробовал, но оказалось, что из-за открытого дебаггера не скрывалась кнопка "Сохранить", что ввело в заблуждение.