Здравствуйте. Есть задача, для разных ролей выводить разный набор колонок, для раздела. Нашёл метод "initializeProfile" в схеме "BaseSchemaViewModel", в котором проставляется значение переменной "Profile". Я добавляю свою колонку, но в итоге она не выводится в реестр, хотя например если зайти в настройку колонок реестра, то там видна моя добавленная колонка, тогда не понятно почему она не видна в реестре раздела. Как вообще правильно сделать эту таску?
initializeProfile: function(callback, scope) { this.requireProfile(function(profile) { var profileColumnName = this.getProfileColumnName(); if (profile && profile.DataGrid && profile.DataGrid.tiledConfig) { var prifileDataGrid = JSON.parse(profile.DataGrid.tiledConfig); prifileDataGrid.items.pop(); prifileDataGrid.items.push({ "bindTo": "PlaceOfBirth", "caption": "Место рождения", "position": { "column": 17, "colSpan": 7, "row": 2 }, "dataValueType": 1, "metaPath": "PlaceOfBirth", "path": "PlaceOfBirth", "captionConfig": { "visible": true } }); profile.DataGrid.tiledConfig = JSON.stringify(prifileDataGrid); } this.set(profileColumnName, profile); Ext.callback(callback, scope); }, this); }
Нравится
Александр, добрый день!
Реализовать вашу задачу можно добавив в таблицу SysProfileData записи с определёнными ключами и правильным содержанием ObjectData и переопределив метод получения Profile получать нужное содержание по сформированному ключу по вашему условию.
Но также нужно учесть много нюансов, например, когда запись в таблице SysProfileData с сформированным ключом будет пустой и т.п.
А вы не слишком заморочились? Не проще ли научить пользователей менять состав колонок?
Что будет, если кто-то из пользователей в роли, для которой вы проставляете набор колонок автоматом, захочет добавить/убрать какую-то?
Александр, если уж вспомнили о ролях, можно просто настроить права на колонки. Если у пользователя или роли прав не будет, колонка исчезнет не только в карточке, но и в реестре. А в настройках реестра настроить полный набор.