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