Здравствуйте!
Стоит задача сохранить карточку детали без выхода из неё. Также обязательным условием является выполнение событий обработки обновления записи, описанной в объекте. (Событие 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", выглядит следующим образом:
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); },
Здесь нет переходов в другие разделы, значит нужно смотреть в методы, вызываемые внутри save(). Смотрим метод onSaved() и видим, что карточку можно сохранит в "тихом" режиме, тогда она закрываться не будет и не будет публиковаться сообщение "UpdateDetail", если в объекте config свойство isSilent имеет значение true:
onSaved: function(response, config) { this.hideBodyMask(); if (!this.get("NextPrcElReady")) { this.set("NextPrcElReady", response.nextPrcElReady); } if (config && config.isSilent) { this.onSilentSaved(response, config); } else { ........
А config, соответсвенно, берется из save(config).
Итого, нужно сохранять запись следующим образом:
this.save({isSilent:true});
Андрей, спасибо за подсказку.
Действительно так работает. Я так тоже пробовал, но оказалось, что из-за открытого дебаггера не скрывалась кнопка "Сохранить", что ввело в заблуждение.