Перейти к основному содержанию
`Ctrl`+`K`

# Коррекция параметра правила дискретного доступа

Используется чтобы удалить некорректное значение из JSON-массива параметра правила дискретного доступа. Применяется при постобработке после миграции или ошибок настройки.

Место применения: `Приложение "Администратор" > Настройки > Администрируемые объекты > [Администрируемый объект] > Редактировать > Дискретные ограничения доступа`

Внимание

В текущем виде содержит захардкоженные мнемокоды и ID — перед использованием необходимо заменить на актуальные значения.

Тип: JEXL-скрипт

    var idvAcObject = Btk_AcObjectApi.findByMnemoCode('Pm_AdvRep'); // Адм.объект
    var idvAcRole = Btk_AcRoleApi.findByMnemoCode('tstsud8.Documents'); // Роль
    var idvAcRoleObjRule = 30652l; // Правило роли
    var idvAcRoleObjRuleParam = 35052l; // Параметры позиции правила роли

    if (!idvAcObject) {
        dialogs.showMessage("Не найден адм.объект с мнемокодом 'Pm_AdvRep'");
    }
    if (!idvAcRole) {
        dialogs.showMessage("Не найдена роль с мнемокодом 'tstsud8.Documents'");
    }
    if (!idvAcRoleObjRule) {
        dialogs.showMessage("Не найдено правило роли с мнемокодом 'Pm_AdvRep34'");
    }

    var idvParams = sql(`
    select
    arorp.id as id
    from btk_acroleobjrule aror
    join btk_acroleobjruledet arord on arord.idacroleobjrule = aror.id
    join btk_acobjectrule aor on arord.idacobjrule = aor.id
    join btk_acroleobjruleparam arorp on arorp.idacroleobjruledet = arord.id
    where
    aor.idacobject = `+ idvAcObject +` -- id адм.объекта
    and aror.idacrole = `+ idvAcRole +` -- id роли, для которой задан параметр правила
    and aror.id = `+ idvAcRoleObjRule +` -- id правила для конкретной роли
    and arorp.id = `+ idvAcRoleObjRuleParam +` -- id позиции правила для конкретной роли
    ;`).asSingle().id;

    if(isNotNull(idvParams)) {
      const ropAcRoleObjRuleParam = Btk_AcRoleObjRuleParamApi.load(idvParams);
      var jPropertiesNew = [];
      var jProperties = Btk_AcRoleObjRuleParamApi.parsejParamValue(ropAcRoleObjRuleParam).asJObject();

        var jsonBuilder = "";
        var first = true;

        for (element : jProperties) {
          value = element.asLong();
            if (value != 429) {
                if (!first) {
                    jsonBuilder = jsonBuilder + ",";
                }
                jsonBuilder = jsonBuilder + value;
                first = false;
            }
        }

        var jPropertiesNewString = "[" + jsonBuilder + "]";

    Btk_AcRoleObjRuleParamApi.setjParamValue(ropAcRoleObjRuleParam, toString(jPropertiesNewString));
    }