Фильтрация встроенной (Embedded) детали mobile 5.4

Каким образом можно добавить встроенную (Embedded) деталь со связанного объекта? Например на одной из деталей активности вывести деталь адресов контрагента данной активности.

Нравится

1 комментарий

Для этого необходимо:
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
});
...

В итоге мы увидим адреса контрагента указанного в активности

Теоретически можно добавить любые данные в любое место любой карточки.

Показать все комментарии