Как поженить типовой 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

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    205951    1131    410    

1029

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

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

16000 руб.

10.11.2023    16803    73    39    

89

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

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

5940 руб.

27.05.2021    44772    339    106    

269

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.06.2025, версия 1.3

19200 руб.

06.12.2023    15852    61    10    

95

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

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    8270    42    24    

45

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

Мучаетесь со списком типовых ролей? Не хотите иметь дело с конфигуратором? Не знаете что делают имеющиеся права в базе? Хотите просто и удобно добавлять и настраивать, по одному клику, доступы и поведение при записи/удалении/проведении/открытии списка/фильтрацию данных в списках или формах выбора для пользователя или группы пользователей и для любого объекта? Не хотите переживать, что при обновлении конфигурации все права и роли слетят? (Обновление от 27.03.2023, версия 1.9)

16800 руб.

21.03.2022    17410    27    54    

50

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

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

4560 руб.

21.05.2019    1697728    584    194    

142
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. JohnyDeath 302 02.02.22 09:08 Сейчас в теме
А если воспользоваться обработкой "Управление доступом" из БСП, где показано всё по шагам и с кусками кода для копипаста, то возможно всё пройдет быстрей и проще.
Свежая статья по этой теме: https://infostart.ru/1c/articles/1594229/
Видео по теме производительного RLS https://youtu.be/GpB4nuO-F0c
vislavok; ong1990; eeeio; gazpromsera; vandalsvq; Il; +6 Ответить
2. triviumfan 102 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 14.10.24 09:49 Сейчас в теме
Может раньше не было. Но сейчас в подменю Ещё есть специальные кнопки для обновления этих регистров (в обоих регистрах есть)
Прикрепленные файлы:
Serg O.; marchel; +2 Ответить
9. Serg O. 314 11.06.25 14:11 Сейчас в теме
Ещё есть несколько тонких моментов
например для настройки списка документов
см. видео (RuTube) Занятие №9 (УЦ-1) - 1С РАЗРАБОТКА - RLS
Оставьте свое сообщение