Добрый день!
Имеется несколько типов контрагентов, для каждого из которых создана страница со своей логикой.
Естественно, что не все пользователи имеют право создавать Поставщиков, Агентов и уж тем более Нашу компанию.
Скорее всего, необходимо создать функциональные роли: Agent manager, Vendor manager и т.п.
Но как в зависимости от функциональных ролей скрывать или показывать пункты меню Add?
Нравится
В данной ситуации вижу 2 выхода:
1. Попробовать назначить права на объект "Тип контрагента". Как вариант ESQ не будет возвращать тип КА без разрешения на него и он не будет отображаться в кнопке.
2. Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
"Царьков Сергей Вячеславович" написал:1. Попробовать назначить права на объект "Тип контрагента". Как вариант ESQ не будет возвращать тип КА без разрешения на него и он не будет отображаться в кнопке.
2. Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
1-й вариант не подойдёт, так как пользователь должен видеть другие типы, но не создавать их.
А в какой схеме прописывается эта логика реестра контрагентов?
Изменить логику в странице реестра контрагентов. Проверять к какой роли относится текущий пользователь и добавлять доступные для роли типы КА.
Мне кажется, лучше не привязвавться к конкретной роли, а создать новую операцию (в «Права доступа на операции», таблица SysAdminOperation), выдать пользователю или роли права на эту операцию, и в коде страницы уже запрограммировать проверку на наличие права.
Логику, скорее всего, менять на странице AccountSectionV2, но надо смотреть.
"Владимир Соколов" написал:А в какой схеме прописывается эта логика реестра контрагентов?
Логика действительно меняется на странице AccountSectionV2. Но копнуть нужно глубже - на странице BaseSectionV2 в diff есть объявление кнопки
{ "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; } } } } } } } },
из этого объявления видно, что items ссылаются на коллекцию EditPages. Остается только в методе инициализации страницы поправить в зависимости от нужной логики какие действия будут доступны пользователю с определенной ролью.