Публикация

Примеры использования системных операций

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"}//активность кнопки зависит от результата проверки, который хранит указанный ранее атрибут
}));

 

Нравится

Поделиться

0 комментариев
Показать все комментарии