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

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

Используется чтобы удалить некорректное значение из 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));
}