Здравствуйте. Есть задача, для разных ролей выводить разный набор колонок, для раздела. Нашёл метод "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 с сформированным ключом будет пустой и т.п.
А вы не слишком заморочились? Не проще ли научить пользователей менять состав колонок?
Что будет, если кто-то из пользователей в роли, для которой вы проставляете набор колонок автоматом, захочет добавить/убрать какую-то?
Александр, если уж вспомнили о ролях, можно просто настроить права на колонки. Если у пользователя или роли прав не будет, колонка исчезнет не только в карточке, но и в реестре. А в настройках реестра настроить полный набор.