Стоит задача разделить документы на 2 раздела с разными типами. Есть ли возможность определять несколько разделов для одного объекта в mobile с некоторыми фильтрами или прийдется делать для это представление в базе данных bpm?

Нравится

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

Да, вы правы, нельзя добавить на один объект 2 раздела. Предложенный вариант вполне жизненный – реализовать новое представление с фильтром.

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

Каким образом можно загруженные данные подтянуть в модель карточки?
Например в следующем коде данные подгружаются в одном из контроллеров, но установка их в loadedRecord не меняет состояние отображаемых значений в карточке. Также никаких изменений не просходит при обращении к модели одного из вложенных элементов во view.

onLoadRecord: function(loadedRecord) {
                this.callParent(arguments);
                var store = Ext.create('Terrasoft.store.BaseStore', {
                    model: 'Account'
                });
                var queryConfig = Ext.create('Terrasoft.QueryConfig', {
                    columns: ['Name', 'Ownership', 'AccountCategory', 'TypeOfFacility'],
                    modelName: 'Account'
                });
                store.loadPage(1, {
                    queryConfig: queryConfig,
                    filters: Ext.create('Terrasoft.Filter', {
                        property: 'Id',
                        value: loadedRecord.data.Account.data.Id
                    }),
                    callback: function(records, operation, success) {
                        var record = records[0];
                        if (record) {
                            var name = record.get('Name');  
                            loadedRecord.set('OutletName', name);
                        }
                    },
                    scope: this
                });

Нравится

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

Вопрос снимается, нашел реализацию через кастомное бизнес правило.

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

Каким образом можно добавить встроенную (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
});
...

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

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

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