Вопрос
Фильтрация встроенной (Embedded) детали mobile 5.4
26 июня 2015 15:09
Каким образом можно добавить встроенную (Embedded) деталь со связанного объекта? Например на одной из деталей активности вывести деталь адресов контрагента данной активности.
Нравится
1 комментарий
26 июня 2015 20:32
Для этого необходимо:
1) В манифесте прописать требуемые модели с которыми мы будем работать (например "адреса контрагента"):
Models: { Activity: { RequiredModels: ["AccountAddress"...] ...
2) В карточку (например, просмотра - MobileActivityPreviewPage) добавляем примерно такой код:
*перекрываем событие loadedRecord (или дописываем в него если оно уже перекрыто)
onLoadRecord: function(loadedRecord) { ... this.callParent(arguments); ... var view = this.getView(); var containerConfig = { xtype: "container", cls: "my-css", layout: { type: "vbox" } }; var container = view.add(containerConfig); var modelName = "AccountAddress"; var store = Ext.create("Terrasoft.store.BaseStore", { model: modelName }); var columns = ["Address"]; var queryConfig = Ext.create("Terrasoft.QueryConfig", { modelName: modelName, columns: columns }); var AccountId = loadedRecord.data.Account.data.Id; var filtersConfig = { property: "Account", value: AccountId }; store.setPageSize(Terrasoft.AllRecords); store.loadPage(1, { filters: Ext.create("Terrasoft.Filter", filtersConfig), queryConfig: queryConfig, callback: function(loadedRecords, operation, success) { var lr = loadedRecords; if (success) { for (var i = 0, ln = lr.length; i < ln; i++) { var a = container.add(Ext.factory({ xtype: "label", cls: "my-label-css" })); a.setHtml(lr[i].data.Address); } } }, scope: this }); ...
В итоге мы увидим адреса контрагента указанного в активности
Теоретически можно добавить любые данные в любое место любой карточки.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать