mobile 5.4
Технические вопросы
5.x

Фильтрация встроенной (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
});
...

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

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

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