tswiki
SDK
Support
mobile
Q&A

В мобильном приложении при открытии раздела "Активности" ошибка: "Uncaught TypeError:Cannot read property "modelName""

Симптомы

Настраиваю мобильное приложение, все объекты работают,кроме Активностей, при попытке зайти в Активность выходит сообщение:Uncaught TypeError:Cannot read property “modelName”

of undefined. Пробовала все колонки удалить, заново добавить, думала проблема в колонке Тип, не помогло ее удаление (после изменения настроек, заново раздавала права пользователям, чистила кэш и заново проводила синхронизацию с базой).

Изображение удалено.

Решение

В карточке активности была убрана часть полей, а главное – убрана деталь «Участники активности». Почему «главное». На эту деталь есть завязки при работе самого раздела. В частности, по умолчанию, когда при синхронизации забираются активности из bpm’online, то забираются только те активности, в детали «Участники активности» которых есть текущий пользователь.

Как раз из-за того, что была удалена группа колонок «Связи» и деталь «Участники», возникала ошибка, поскольку мы на них завязались. 

Убрав эту деталь, возможно, не будут «правильно» забираться активности.

Обходное решение для случая, когда пользователь удалил какой-то объект, используемый в родительских пакетах

Создать кастомную схему (Исходный код) (например, "MobileUtilitiesCustom")

Ext.define("Terrasoft.sdk.RecordPageMetadataApplier.Override", {

                override: "Terrasoft.sdk.RecordPageMetadataApplier",

               

                addEmbeddedDetail: function(modelName, operation) {

                               this.embeddedDetails[operation.name] = operation.values;

                               var values = operation.values;

                               var filter = values.filter;

                               var detailName = operation.name;

                               Terrasoft.sdk.RecordPage.addEmbeddedDetail(modelName, {

                                               name: detailName,

                                               title: values.caption,

                                               position: values.position,

                                               modelName: values.entitySchemaName,

                                               primaryKey: filter.masterColumn,

                                               foreignKey: filter.detailColumn,

                                               hidden: values.hidden

                               });

                },

               

                applyMetadata: function() {

                               this.callParent(arguments);

                               for (var itemName in this.removedMetadataItems) {

                                               if (!Terrasoft.util.isGuid(itemName) && Terrasoft.util.String.contains(itemName, "EmbeddedDetail")) {

                                                               this.addEmbeddedDetail(this.modelName, {

                                                                              name: itemName,

                                                                              values: {

                                                                                              entitySchemaName: itemName.substring(0, itemName.indexOf("Detail")),

                                                                                              filter: {

                                                                                                              masterColumn: "Id",

                                                                                                              detailColumn: "Id"

                                                                                              },

                                                                                              hidden: true

                                                                              }

                                                               });

                                               }

                               }

                }

});

 

Terrasoft.sdk.RecordPage.configureColumn = function(model, columnSetName, columnName, columnConfig) {

                var modelConfig = Terrasoft.ApplicationConfig.getModelConfig(model);

                var columnSetConfig = modelConfig.columnSets.get(columnSetName);

                if (!columnSetConfig) {

                               return;

                }

                var columnSetColumns = Terrasoft.sdk.RecordPage.getColumns(model, columnSetName);

                if (!columnSetColumns) {

                               return;

                }

                var columnSetColumn = columnSetColumns.get(columnName);

                var columnOriginalConfig;

                if (columnSetColumn) {

                               columnOriginalConfig = columnSetColumn.columnOriginalConfig;

                } else {

                               columnOriginalConfig = {};

                               columnConfig.hidden = true;

                               var modelInstance = Ext.ClassManager.get(columnSetConfig.modelName || model);

                               var realModelColumnConfig = modelInstance.ColumnConfigs.get(columnName);

                               columnConfig.columnType = realModelColumnConfig.columnType;

                               columnConfig.name = columnName;

                }

                Ext.merge(columnOriginalConfig, columnConfig);

                var contextModel = columnSetConfig.modelName || model;

                if (columnConfig.hidden) {

                               var columns = this.getColumnSetColumns(model, columnSetName);

                               columns.remove(columnName);

                } else {

                               var resolvedColumnConfig = this.resolveColumnConfig(contextModel, columnOriginalConfig,

                                                               !!columnSetConfig.modelName);

                               columnSetConfig.columns.configure(columnName, resolvedColumnConfig);

                }

};

 

Terrasoft.sdk.RecordPage.addColumn = function(model, columnConfig, columnSetName) {

                var modelConfig = Terrasoft.ApplicationConfig.getModelConfig(model);

                if (!columnSetName) {

                               columnSetName = modelConfig.primaryColumnSetName;

                }

                var columnSetConfig = modelConfig.columnSets.get(columnSetName);

                if (!columnSetConfig) {

                               return;

                }

                var contextModel = columnSetConfig.modelName || model;

                var isEmbeddedDetail = !!columnSetConfig.modelName;

                if (!columnConfig.hidden) {

                               columnSetConfig.columns.add(this.resolveColumnConfig(contextModel, columnConfig, isEmbeddedDetail));

                }

                this.addColumnToQueryConfig(model, columnConfig.name, columnSetName, isEmbeddedDetail);

                if (columnConfig.displayColumn) {

                               this.addColumnToQueryConfig(model, columnConfig.displayColumn, columnSetName, isEmbeddedDetail);

                }

};

В манифесте мобильного приложения (например, "UsrMobileApplicationManifestCustomMobile") указать кастомную схему

{

"CustomSchemas": [
"MobileUtilitiesCustom"
]
}

 

Нравится

Поделиться

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