Вы здесь
Проверка прав доступа на уровне ролей 1С
Настройка доступа на уровне ролей не всегда спасет от ошибок программистов.
Настройки ролей пользователей были по максимому урезаны на уровне ролей. Только у роли бухгалтер был доступ к справочнику подразделения компании и только на программное изменение. Однако один пользователь все-таки умудрился переместестить в иерархии подразделение. В справочнике подразделения компании в списке на обработчик ПроверкаПеретаскивания был код:
Т.е. встроенная проверка доступа и обработки отключается, а выполняется код из обработчика Перемещение. Естественно, вся проверка, которая была написана ограничивалась доступом на редактирование справочника в правах (разрешено редактировать или нет). Различия между ручным редактированием и программных тут не учитывались.
Исправляем это недорозумение.
Необходимо в общий обработчик для справочников добавить следующее:
И если у пользователя права только на программное изменение, то код идущий следом за этим не выполнится и программное изменение родителя не последует.
Краткая справка функции ПравоДоступа
Синтаксис:
Параметры:
<Право> (обязательный)
Тип: Строка. Название права доступа.
<Объект метаданных> (обязательный) — Объект метаданных.
<Пользователь/Роль> (необязательный)
Тип: ПользовательИнформационнойБазы, Метаданные.Роли.Роль
Возвращаемое значение:
Тип: Булево. Истина - право доступа к объекту установлено; Ложь - в противном случае.
Описание:
Показывает установку права доступа к объекту метаданных для текущего пользователя.
Вызов метода всегда требует административных прав, если явно указан третий параметр - Пользователь/Роль, права которого проверяются. Если пользователь не указан, то проверяются права текущего пользователя, и для этого наличие административных прав не требуется.
Примечание:
Права доступа к объектам метаданных устанавливаются при конфигурировании ролей.
Комментарии
А вот похожи и фиг, если в
А вот похожи и фиг, если в правах прописано условие, и по нему нет доступа к конкретному объекту, то все равно будет истина
Приведите код, который Вы
Приведите код, который Вы использовали. Возможно не так вызывали функцию?