Здравствуйте. Столкнулся с проблемой получения дополнительных данных.
Например, создал активность в мобильном приложении, указав контрагента. На карточке просмотра активности есть необходимость скрывать некоторые поля, в зависимости от типа контрагента. Но на карточку просмотра активности о контрагенте загрузилась минимальная информация в виде Id и Name, а мне необходимо ещё значение Type.
Пробовал решить двумя способами.
В первом добавил бизнес правило на событие загрузки записи и внутри метода обработчика сделал следующий вызов:
var modelName = "Account";
var model = Ext.ClassManager.get(modelName);
var queryConfig = Ext.create("Terrasoft.QueryConfig", {
modelName: modelName,
columns: ["Id", "Name", "Type"]
});
model.load(account.get("Id"), {
queryConfig: queryConfig,
success: function(record) {
// ???
},
failure: function(record, operation) {
// ???
},
scope: this
});
Но метод выполняется асинхронно, как из него вернуть данные и продолжить дальнейшее выполнение, учитывая, что в конце бизнес-правила необходимо вызвать
Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
Вторым способом заместил View и Controller и в Controller-классе в методе onLoadRecord попытался вызвать безрезультатно Account.Store.getById.
Хотя, при прочих равных в файле PharmaMobileActionScheduleVisit пакета PharmaMobile аналогичная строка с "волшебным" Store работает.
var type = ActivityType.Store.getById(Terrasoft.Configuration.ActivityTypes.Visit);
Может код из первого варинта поместить в замещенный onLoadRecord? Или есть другие варианты? Прошу помощи в решении задачи.