1. В разделе дизайнера системы "Права доступа на операции" создать системную операцию. Например, с кодом CanChangeContractFields
2. В код страницы, на которой мы будем использовать нашу операцию добавляем зависимость страницы от модуля RightUtilities. Пример:
define("ContractPageV2", ["RightUtilities","ProcessModuleUtilities"], function(RightUtilities,ProcessModuleUtilities)
3. В блоке methods{} найти и дополнить функцию init:, а если ее нет - вызвать.
При инициализации странички система будет проверять, имеет ли текущий пользователь доступ к указанной системной операции/операциям.
Ответ "да" или "нет" система передаст в указанный нами атрибут.
init: function() { const operationNames = [ "CanChangeContactFields" //Здесь через запятую нужно перечислить все системные операции, которые нужно проверить ]; RightUtilities.checkCanExecuteOperations(operationNames, function(result) { this.set("FieldsRights", result.CanChangeContactFields); // "FieldsRights" - название атрибута, в который мы передаем результат проверки }, this); // CanChangeContactFields - проверку по какой операции мы передаем в атрибут this.callParent(arguments); }
4. Использовать ответ. Например, на поле или кнопке
4.1 ДОСТУП К РЕДАКТИРОВАНИЮ ПОЛЯ
Для этого находим наше поле в блоке diff[] и изменяем значение параметра "enabled"
{ "operation": "insert", "name": "STRING2b088f15-40f9-4bbb-a4bc-dd846be945b2", "values": { "layout": { "colSpan": 12, "rowSpan": 1, "column": 0, "row": 3, "layoutName": "Header" }, "bindTo": "UsrField1", //Название нашего поля "enabled": { "bindTo": "FieldsRights" //возможность редактирования поля зависит от результата проверки, который хранит указанный ранее атрибут } }, "parentName": "Header", "propertyName": "items", "index": 6 }
4.2 ДОСТУП К НАЖАТИЮ КНОПКИ
По аналогии используем параметр "enabled". Например, кнопка в меню "Действия":
actionMenuItems.addItem(this.getActionsMenuItem({ "Caption": "Тестовая кнопка", "Tag": "runProcess", "Enabled": {"bindTo": "FieldsRights"}//активность кнопки зависит от результата проверки, который хранит указанный ранее атрибут }));