← Назад к вопросам
Настройка прав доступа для групп пользователей
2.0 Middle🔥 241 комментариев
#RLS и права#Стандарты разработки
Условие
Настройте систему прав доступа для разных групп пользователей.
Группы пользователей:
-
Менеджеры по продажам
- Просмотр и создание документов продаж
- Просмотр справочников
- Нет доступа к себестоимости и закупочным ценам
-
Кладовщики
- Просмотр и создание складских документов
- Только свой склад (RLS)
- Нет доступа к ценам
-
Бухгалтеры
- Полный доступ к регламентированному учёту
- Просмотр всех документов
Задание
Создайте роли, настройте права и реализуйте RLS для кладовщиков.
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение: Настройка прав доступа для групп пользователей
Определение ролей в конфигураторе
1. Менеджер по продажам
- Документ Продажа: создание, редактирование
- Справочник Номенклатура: просмотр
- Справочник Контрагенты: просмотр
- Запрет на поля: Себестоимость, ЗакупочнаяЦена
2. Кладовщик
- Документ ПриходПостав: создание, редактирование
- Документ РасходМатериалов: создание, редактирование
- RLS по складу
- Запрет на просмотр цен
3. Бухгалтер
- Регламентированный учёт: полный доступ
- Все справочники: просмотр
- Все документы: полный доступ
Реализация RLS (Row-Level Security)
Процедура УстановитьОграничениеПоСкладу() Экспорт
// Получаем текущего пользователя
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
// Получаем его сотрудника
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка,
| Сотрудники.Склад
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.ПользовательИБ = &Пользователь";
Запрос.УстановитьПараметр("Пользователь", ТекущийПользователь);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пусто() Тогда
Выборка = Результат.Выбрать();
Выборка.Прочитать();
УстановитьПривилегированныйРежим(Истина);
УстановитьЗначениеПараметраСеанса("СкладКладовщика", Выборка.Склад);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
Использование RLS в запросах
Функция ПолучитьДокументыМоегоСклада() Экспорт
ОграничениеСклад = ПолучитьЗначениеПараметраСеанса("СкладКладовщика");
Если ОграничениеСклад = Неопределено Тогда
Возврат Новая ТаблицаЗначений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходПостав.Ссылка,
| ПриходПостав.Номер,
| ПриходПостав.Дата,
| ПриходПостав.Склад
|ИЗ
| Документ.ПриходПостав КАК ПриходПостав
|ГДЕ
| ПриходПостав.Склад = &Склад
| И ПриходПостав.Проведён = Истина
|УПОРЯДОЧИТЬ ПО
| ПриходПостав.Дата УБЫВ";
Запрос.УстановитьПараметр("Склад", ОграничениеСклад);
Результат = Запрос.Выполнить();
Возврат Результат.Выгрузить();
КонецФункции
Скрытие конфиденциальных данных
Процедура ПередЧтением()
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
// Проверяем роли
ЕстьРольМенеджера = ТекущийПользователь.Роли.Содержит(
Метаданные.Роли.МенеджерПоПродажам
);
ЕстьРольКладовщика = ТекущийПользователь.Роли.Содержит(
Метаданные.Роли.Кладовщик
);
// Для менеджера скрываем себестоимость
Если ЕстьРольМенеджера Тогда
Для каждого СтрокаТовара Из Товары Цикл
СтрокаТовара.Себестоимость = 0;
СтрокаТовара.ЗакупочнаяЦена = 0;
КонецЦикла;
КонецЕсли;
// Для кладовщика скрываем все цены
Если ЕстьРольКладовщика Тогда
Для каждого СтрокаТовара Из Товары Цикл
СтрокаТовара.Цена = 0;
СтрокаТовара.Сумма = 0;
СтрокаТовара.Себестоимость = 0;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Проверка прав перед операциями
Процедура ПередЗаписью(Отказ)
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
// Только бухгалтеры могут редактировать
Если НЕ ТекущийПользователь.Роли.Содержит(
Метаданные.Роли.Бухгалтер
) Тогда
ОбщегоНазначения.СообщитьОбОшибке(
"У вас нет прав на редактирование документов"
);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Ключевые компоненты
Три уровня контроля:
- Роли и права в конфигураторе
- RLS через параметры сеанса
- Скрытие полей через ПередЧтением
RLS реализация:
- Параметр сеанса для хранения склада
- Динамическая фильтрация в запросах
- Применяется на уровне чтения данных
Защита данных:
- Менеджеры не видят себестоимость
- Кладовщики не видят цены
- Бухгалтеры видят всё