Добрый день!
Имеется несколько типов контрагентов, для каждого из которых создана страница со своей логикой.
Естественно, что не все пользователи имеют право создавать Поставщиков, Агентов и уж тем более Нашу компанию.
Скорее всего, необходимо создать функциональные роли: Agent manager, Vendor manager и т.п.
Но как в зависимости от функциональных ролей скрывать или показывать пункты меню Add?

Нравится
В данной ситуации вижу 2 выхода:
1. Попробовать назначить права на объект "Тип контрагента". Как вариант ESQ не будет возвращать тип КА без разрешения на него и он не будет отображаться в кнопке.
2. Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
"Царьков Сергей Вячеславович" написал:1. Попробовать назначить права на объект "Тип контрагента". Как вариант ESQ не будет возвращать тип КА без разрешения на него и он не будет отображаться в кнопке.
2. Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
1-й вариант не подойдёт, так как пользователь должен видеть другие типы, но не создавать их.
А в какой схеме прописывается эта логика реестра контрагентов?
Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
Мне кажется, лучше не привязвавться к конкретной роли, а создать новую операцию (в «Права доступа на операции», таблица SysAdminOperation), выдать пользователю или роли права на эту операцию, и в коде страницы уже запрограммировать проверку на наличие права.
Логику, скорее всего, менять на странице AccountSectionV2, но надо смотреть.
"Владимир Соколов" написал:А в какой схеме прописывается эта логика реестра контрагентов?
Логика действительно меняется на странице AccountSectionV2. Но копнуть нужно глубже - на странице BaseSectionV2 в diff есть объявление кнопки
[javascript]
{
"operation": "insert",
"name": "SeparateModeAddRecordButton",
"parentName": "SeparateModeActionButtonsLeftContainer",
"propertyName": "items",
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"style": Terrasoft.controls.ButtonEnums.style.GREEN,
"caption": {"bindTo": "AddRecordButtonCaption"},
"click": {"bindTo": "addRecord"},
"classes": {
"textClass": ["actions-button-margin-right"],
"wrapperClass": ["actions-button-margin-right"]
},
"controlConfig": {
"menu": {
"items": {
"bindTo": "EditPages",
"bindConfig": {
"converter": function(editPages) {
if (editPages.getCount() > 1) {
return editPages;
} else {
return null;
}
}
}
}
}
}
}
},
[/javascript]
из этого объявления видно, что items ссылаются на коллекцию EditPages. Остается только в методе инициализации страницы поправить в зависимости от нужной логики какие действия будут доступны пользователю с определенной ролью.