Как поженить типовой RLS и новый документ

02.02.22

Разработка - БСП (Библиотека стандартных подсистем)

Создание доступа на уровне записей (RLS) для нового документа средствами библиотеки стандартных подсистем (БСП).

Случилась у меня задачка сделать в типовой конфигурации (УНФ 1.6.24.193 - это неважно) доступ на уровне записей (RLS) для нового документа. Документ сделан был быстро методом «Копи-Паста» в моем случае исходным был документ ЗаказПоставщику (Источник), а создавался документ РеестрОтгрузки (НовыйДокумент).

С первого раза с правами не влетело. Не взлетело и потом с пинками…  Далее опишу методику поиска решения, потому-что через пару лет уже сами объекты библиотеки стандартных подсистем (БСП) сильно поменяются.

Просмотр просторов интернета дал мало ссылок. Вот наиболее стоящая:https://forum.infostart.ru/forum9/topic237082/

Также интересной оказалась обработка для раскручивания шаблона в запрос: //infostart.ru/public/264989/

Чтобы понять объем катастрофы, можно установить фильтр конфигурации по подсистемам - «СтандартныеПодсистемы\УправлениеДоступом» :

 

 

Итого: 7 Общих модулей, 13 определяемых типов, 4 справочника, 19 регистров сведений.

Сразу же выделил два регистра с которыми у меня возникли проблемы.

Шаги большого пути:

1. Добавить ссылки на НовыйДокумент, в составных типах данных там где были ссылки на документ Источник. Таких данных оказалось 3. Все они были определяемые типы: ВладелецЗначенийКлючейДоступа, ВладелецЗначенийКлючейДоступаДокумент, ПолеРегистраКлючейДоступаКРегистрам. Эти типы пришлось снимать с поддержки, механизм расширений пока для этого не готов.

2. По условиям задачи требовалось создать новую роль с ограничением доступа по Организации и Контрагентам. В новую роль копируем Шаблоны из роли Источника. Стандартные шаблоны написаны универсально без указания текущего объекта. Обычно всё выносится в параметры. В моем случае копировалось из роли ДобавлениеИзменениеПодсистемыЗакупки :

 

 

Настраиваем права Новой роли: 

 

 

Копировать нужно по очереди отдельно для каждого права. В ограничениях доступа для Прав Чтение, Добавление, Изменение в конструкциях типа:

#ПоЗначениям( "Документ.ЗаказПоставщику","Чтение","",

меняем Источник на НовыйДокумент:

#ПоЗначениям( "Документ.РеестрОтгрузки","Чтение","",

3. Проверяем наличие экспортной процедуры в модуле менеджера НовогоДокумента

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

 

 

4. Поиск прямого обращения к документу Источника в модулях этой подсистемы позволило обнаружить 2 процедуры. Переопределяем две экспортные процедуры из модуля УправлениеДоступомПереопределяемый в новом или существующем расширении:

 

 

5. В режиме Предприятие создаем новый профиль или в существующем профиле добавляем новую роль. Естественно в профиле должны заданы ограничения доступа:

 

 

6. Добавляем в права пользователя профиль созданный в п.5 и выбираем группы доступа контрагентов. Проверяем и... не работает.

После длительного копания в потрохах RLS, выяснил, что основной структурой данных на которые опираются дополнительные условия в запросах является регистр сведений ТаблицыГруппДоступа. Этот регистр описывает как накладывать условия. Измерение (Таблица) этого РС является ссылкой на Справочник.ИдентификаторыОбъектовМетаданных и в моем случае для нового документа записей не содержалось. Сам справочник оказался заполнен новым документом. 

Были испробованы несколько вариантов заполнения:

Запуск предприятия с ключом обновления.

Запуск Регламентного задания ЗаполнениеДанныхДляОграниченияДоступа.

Запуск в лоб (своей обработке) кода: УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации().

Ничего не сработало. После долгих поисков было обнаружено, что регистр сведений ПраваРолей, для НовогоОбъекта тоже не заполнены. Решение было в вызове двух служебных процедур (во внешней обработке):

&НаСервере

Процедура ОбновитьПраваРолейНаСервере()

ЕстьИзменения = Неопределено;

РегистрыСведений.ПраваРолей.ОбновитьДанныеРегистра(ЕстьИзменения);

Сообщить("ЕстьИзменения:" + Строка(ЕстьИзменения));

КонецПроцедуры

&НаКлиенте

Процедура ОбновитьПраваРолей(Команда)

ОбновитьПраваРолейНаСервере();

КонецПроцедуры

&НаСервере

Процедура ОбновитьВспомогательныеДанныеНаСервере()

РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(); // вызов внутри следующей процедуры не срабатывает, т.к. версии конфы совпадает.

УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации()

КонецПроцедуры

&НаКлиенте

Процедура ОбновитьВспомогательныеДанные(Команда)

ОбновитьВспомогательныеДанныеНаСервере();

КонецПроцедуры

-----

P.S.

Кто найдет более простое решение для заполнения указанных регистров сведений, пишите в комментариях.

RLS

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159392    872    399    

861

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

16800 руб.

06.12.2023    8840    42    5    

73

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10412    36    20    

61

SALE! 20%

Зарплата Роли и права Системный администратор Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5940 4752 руб.

27.05.2021    37556    264    92    

205

Логистика, склад и ТМЦ Роли и права Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

4560 руб.

21.05.2019    1694762    570    194    

137

Ценообразование, анализ цен Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    58451    160    261    

152

Роли и права Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

19200 руб.

29.11.2019    25657    16    8    

37
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. JohnyDeath 302 02.02.22 09:08 Сейчас в теме
А если воспользоваться обработкой "Управление доступом" из БСП, где показано всё по шагам и с кусками кода для копипаста, то возможно всё пройдет быстрей и проще.
Свежая статья по этой теме: https://infostart.ru/1c/articles/1594229/
Видео по теме производительного RLS https://youtu.be/GpB4nuO-F0c
ong1990; eeeio; gazpromsera; vandalsvq; Il; +5 Ответить
2. triviumfan 97 07.02.22 13:56 Сейчас в теме
Кто найдет более простое решение для заполнения указанных регистров сведений, пишите в комментариях.

Запустить предприятие с ключом /ЗапуститьОбновлениеИнформационнойБазы или воспользоваться обработкой обновления вспомогательных данных.
3. solary 186 13.07.22 17:22 Сейчас в теме
Спасибо, очень помогло, т.к. знаний по RLS нет, а прикрутить к своему документу очень хотелось.
4. doronin70 02.12.22 00:26 Сейчас в теме
Большое спасибо автору за пункт 1 из шагов большого пути!

А пункт 6 в моем случае (ERP 2.5.8) делается очень просто: Открываем в режиме предприятия форму регистра сведений - Ещё - Обновить данные регистра.
5. 1cNBL 12.01.24 12:13 Сейчас в теме
Если выдает такую ошибку:

Не удалось обновить права ролей конфигурации по причине: Найдены подключенные расширения конфигурации, изменяющие роли конфигурации.
{РегистрСведений.ПраваРолей.МодульМенеджера(48)}:ВызватьИсключение ТекстОшибки

это значит, что в расширении есть заимствованные роли. Их нужно удалить из расширения.
6. Lanvelius 21.08.24 06:51 Сейчас в теме
Попробовал настроить в ЗУП 8.3.22.2208 для своего документа в расширении.
Список видимых документов ограничивается, чтение и изменение работают корректно.
Но при создании документа выходит ошибка об отсутствии прав, документ сохраняется и перестает быть редактируемым до релога в 1С (в списке документов он не виден до релога тоже).

Для начала тестировал доступ по организации, процедура из менеджера документа:
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)";
КонецПроцедуры
Если закомментировать запрос, то все работает корректно, но без ограничений по организации.
Сталкивался кто-нибудь с таким?

По п.6 в регистр Права ролей не попадают объекты из расширений, стоит ли его обновлять? У меня все обновления проходили без изменений.
7. Lanvelius 21.08.24 14:15 Сейчас в теме
(6) Апдейт
Но при создании документа выходит ошибка об отсутствии прав, документ сохраняется и перестает быть редактируемым до релога в 1С (в списке документов он не виден до релога тоже).

Новые документы не появляются у пользователя. Для получения доступа к новым документам пришлось передобавить роль в группу доступа (снять - сохранить - поставить - сохранить).
После этого видны все документы без учета RLS, далее вручную обновляем доступ на уровне записей (Администрирование - настройки и пользователи), после этого пользователь видит документы с учетом прав.
8. Slalom05 1 14.10.24 09:49 Сейчас в теме
Может раньше не было. Но сейчас в подменю Ещё есть специальные кнопки для обновления этих регистров (в обоих регистрах есть)
Прикрепленные файлы:
Оставьте свое сообщение