Налаштування доступу на рівні ролей не завжди врятує від помилок програмістів.
Налаштування ролей користувачів були по максимому урізані на рівні ролей. Тільки у ролі бухгалтер був доступ до довідника підрозділу компанії і тільки на програмне зміна. Однак один користувач все-таки примудрився переместестіть в ієрархії підрозділ. У довіднику підрозділу компанії в списку на обробник ПроверкаПеретасківанія був код:
СтандартнаяОбработка = Брехня;
ПараметриПеретасківанія. Дія = ДействіеПеретасківанія. переміщення;
Тобто вбудована перевірка доступу і обробки відключається, а виконується код з обробника Переміщення. Природно, вся перевірка, яка була написана обмежувалася доступом на редагування довідника в правах (дозволено редагувати чи ні). Відмінності між ручним редагуванням і програмних тут не враховувалися.
Виправляємо це недорозуменій.
Необхідно в загальний обробник для довідників додати наступне:
І якщо у користувача права тільки на програмне зміна, то код йде слідом за цим не виконається і програмне зміна батька не буде.
Коротка довідка функції ПравоДоступа
синтаксис:
ПравоДоступа ( <Право>, <Объект метаданных>, <Пользователь / Роль> )
параметри:
<Право> (Обов'язковий)
Тип: Рядок. Назва права доступу.
<Объект метаданных> (Обов'язковий) - Об'єкт метаданих.
<Пользователь/Роль> (Необов'язковий)
Тип: ПользовательІнформаціоннойБази, Метаданние.Ролі.Роль
Значення, що повертається:
Тип: Булево. Істина - право доступу до об'єкта встановлено; Брехня - в іншому випадку.
опис:
Показує установку права доступу до об'єкта метаданих для поточного користувача.
Виклик методу завжди вимагає адміністративних прав, якщо явно вказано третій параметр - Користувач / Роль, права якого перевіряються. Якщо користувач не вказано, то перевіряються права поточного користувача, і для цього наявність адміністративних прав не вимагається.
Примітка:
Права доступу до об'єктів метаданих встановлюються при конфігуруванні ролей.