Каким образом можно добавить встроенную (Embedded) деталь со связанного объекта? Например на одной из деталей активности вывести деталь адресов контрагента данной активности.
Нравится
Для этого необходимо:
1) В манифесте прописать требуемые модели с которыми мы будем работать (например "адреса контрагента"):
Models: { Activity: { RequiredModels: ["AccountAddress"...] ...
2) В карточку (например, просмотра - MobileActivityPreviewPage) добавляем примерно такой код:
*перекрываем событие loadedRecord (или дописываем в него если оно уже перекрыто)
[javascript]
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
});
...
[/javascript]
В итоге мы увидим адреса контрагента указанного в активности
Теоретически можно добавить любые данные в любое место любой карточки.