Odin | База знаний 1С

Как настроить огран...
 

Как настроить ограничения RLS по организации в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Добрый день. Вопрос от коллег
" Подскажите, как настроить ограничения всех справочников и документов по организации? Я создал все нужные группы доступа, с ограничениями по организации(RLS), но всё равно в справочниках отражаются элементы связанные с другими организациями и при создании нового элемента какого-нибудь справочника отражаются подразделения или ещё какие объекты связанные с другими организациями ("



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Dimka, добрый день!

Для корректной настройки ограничений доступа по организациям (RLS) в 1С, чтобы пользователи видели только данные своей организации и не имели доступа к данным других организаций, необходимо выполнить следующие шаги:

---

### 1. Создание и настройка групп доступа с ограничением по организации

- В справочнике **Группы доступа** создайте группы с ограничением по организации.
- В ограничениях доступа укажите вид доступа, например, `"Организация"`, и настройте отбор по реквизиту организации в документах и справочниках.

---

### 2. Добавление вида доступа "Организация" в общий модуль `УправлениеДоступомПереопределяемый`

В процедуре `ПриЗаполненииВидовДоступа` добавьте вид доступа для организации:

1C
Процедура ПриЗаполненииВидовДоступа(ВидыДоступа) Экспорт
    // Добавляем вид доступа "Организация"
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "Организация";
    ВидДоступа.Представление = НСтр("ru='Организация'");
    ВидДоступа.ТипЗначений = Тип("СправочникСсылка.Организации");
КонецПроцедуры

После этого необходимо обновить информационную базу с параметром `/c ЗапуститьОбновлениеИнформационнойБазы`, чтобы изменения вступили в силу.

---

### 3. Настройка ограничений доступа в ролях (RLS)

- В ролях, которые используются пользователями, добавьте ограничения доступа по организации.
- Используйте штатные шаблоны RLS, например, `#ПоЗначениям` или `#ПоЗначениямРасширенный`.

Пример ограничения для документа:

1C
#ПоЗначениям("Документ.ЗаказПокупателя", "Чтение", "",
    "Организация", "Организация", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")

Для справочников аналогично:

1C
#ПоЗначениям("Справочник.ПодразделенияОрганизаций", "Чтение", "",
    "Организация", "Организация", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")

Если в справочнике нет прямого реквизита "Организация", используйте расширенный шаблон с внутренним соединением на объект, где есть организация.

---

### 4. Ограничение выбора связанных объектов при создании новых элементов

Чтобы при создании новых элементов справочников или документов в формах не отображались подразделения или другие объекты, относящиеся к другим организациям, необходимо:

- В формах выбора (например, в реквизитах типа "Подразделение") добавить фильтр по организации, который будет брать текущую организацию пользователя из параметров сеанса или из группы доступа.
- Для этого можно использовать параметр сеанса, например, `ТекущаяОрганизация`, который устанавливается при входе пользователя.

Пример кода инициализации параметра сеанса:

1C
Процедура ИнициализацияПараметровСеанса()
    // Получаем организацию пользователя из группы доступа
    ТекущаяОрганизация = ... // логика получения организации из группы доступа или профиля
    ПараметрыСеанса.Вставить("ТекущаяОрганизация", ТекущаяОрганизация);
КонецПроцедуры

В формах выбора добавьте отбор по этому параметру:

1C
Отбор.Организация.Значение = ПараметрыСеанса.ТекущаяОрганизация;

---

### 5. Проверка и отладка

- Используйте отчет **Проверка внедрения БСП** (если используется БСП) для выявления ошибок в настройках RLS.
- Проверьте, что у пользователя нет нескольких ролей с конфликтующими правами (например, одна роль с ограничением, другая без).
- Убедитесь, что все объекты, которые должны быть ограничены, добавлены в процедуры `ПриЗаполненииСписковСОграничениемДоступа` и `ПриЗаполненииВидовОграниченийПравОбъектовМетаданных` общего модуля `УправлениеДоступомПереопределяемый`.

---

### Итог

- Добавьте вид доступа "Организация" в общий модуль.
- Настройте роли с ограничениями по организации через шаблоны RLS.
- В формах выбора добавьте фильтры по текущей организации.
- Обновите информационную базу.
- Проверьте отсутствие конфликтующих ролей.

---

Если нужна помощь с конкретным кодом или настройкой — могу помочь написать пример.

Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/829474/
https://infostart.ru/1c/articles/380599/
https://infostart.ru/1c/articles/1908621/

---

Если кратко — основная ошибка в том, что ограничение по организации настроено только на уровне ролей, но не реализован фильтр в формах выбора связанных объектов, поэтому и видны данные других организаций.

---

Готов помочь с конкретными примерами кода и настройками!



   
ОтветитьЦитата