Здравствуйте!
Есть деталь, назовём её - "Документы", со страницей редактирования.
Код обновления записи детали, со страницы редактирования:
onSaved: function() { this.callParent(arguments); if (buttonsResultYes) { this.updateMethod(); } buttonsResultYes = null; }, updateMethod: function () { var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "ScDealDocuments" }); esq.addColumn("Id"); esq.addColumn("ScTopical"); esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "ScTypeParticipant", this.get("ScTypeParticipant").value)); esq.getEntityCollection(function(result) { if (result.success) { result.collection.collection.each(function (item){ if (item.values.ScTopical) { var update = Ext.create("Terrasoft.UpdateQuery", { rootSchemaName: "ScDealDocuments" }); update.filters.add("idFilter", update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Id", idTopicalPart)); update.setParameterValue("ScTopical", false, Terrasoft.DataValueType.BOOLEAN); update.execute(function() {}, this); } }, this); } }, this); },
Но вот загвоздка в том, что код то выполняется нормально, но вот когда закрываешь страницу редактирования этой детали, то реестр этой самой детали не обновляется (старые данные ещё видны), только поле обновления старицы отображаются актуальные данные.
Попробовал вызвать этот код через sandbox.
код публикации сообщения со страницы редактирования:
onSaved: function() { this.callParent(arguments); if (buttonsResultYes) { this.sandbox.publish("UpdateGetGridDetail", { typeParticipant: this.get("ScTypeParticipant"), id: idTopicalPart }, ["updateIfTopical"]); } buttonsResultYes = null; },
код подписки:
updateLoadedGridData: function(response, callback, scope) { //здесь типа код изменения записей детали (код описан выше) this.reloadGridData(); callback.call(scope, response); }
но здесь опять же, подписка выполняется, данные изменяются, то реестр детали после сохранения не обновляется, только поле обновления страницы.
Можно ли как-то обновить деталь, чтобы после выполнения update, деталь так же обновлялась.
З.Ы.: this.reloadGridData(); не помогает
Нравится
Добрый день, Александр!
У всех деталей, которые наследуются по иерархии от BaseDetail должно быть сообщение "UpdateDetail"
Также попробуйте метод updateDetails на самой странице.
Есть еще также updateDetail в BaseGridDetail.
Попробуйте.
Золотарев Артем Андреевич,
спасибо, помог вызов метода this.updateDetail({realoadAll:true})
Коллеги, осторожно, не копируйте данное выражение, здесь опечатка в слове "reloadAll".
Должно быть так:
this.updateDetail({reloadAll:true});