gifts2017

Использование подсистемы "Управление доступом" из состава БСП версии 2.2+

Опубликовал Алексей Драчков (Bassgood) в раздел Администрирование - Защита, права, пароли

В статье описана последовательность манипуляций с подсистемой "Управление доступом" из библиотеки стандартных подсистем "1С" (БСП), результатом которых является реализация возможности настройки ограничения доступа к данным на уровне записей таблиц базы данных (RLS), применяя в качестве разграничителя доступа (критерия ограничения) любой из справочников конфигурации. Данная статья полезна для разработчиков, которые имеют дело либо с одной из типовых конфигураций "1С" (таких как "Бухгалтерия предприятие 3.0" или "Управление торговлей 11"), либо собираются внедрять (или дорабатывать) указанную выше подсистему в какую-либо другую конфигурацию.  

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

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

Теперь перейдем к тому, что допустим, нам потребовалось организовать разграничение доступа к какому-либо объекту конфигурации по определенному критерию, но возможность настройки такого разграничения в программе отсутствует. В качестве примера для рассмотрения возьмем типовую конфигурацию "Бухгалтерия предприятия 3.0" (БП), включающую в себя подсистему "Управление доступом", и в которой отсутствует возможность настройки RLS по справочнику "Контрагенты". Перед внесением изменений в конфигурацию хотелось бы также сделать оговорку - вносимые изменения зависят от версии БСП, используемой в конфигурации, но принцип остается тем же самым. В рассматриваемой статье используется версия БСП 2.2.2.44.

И так, последовательность наших действий в конфигураторе, целью которых является реализация возможности настройки в конфигурации RLS по справочнику "Контрагенты" (в нашем случае является предметом ограничения доступа), будет следующей:
1. Отфильтровать дерево метаданных конфигурации по подсистеме "Стандартные подсистемы" - "Управление доступом".
2. Через настройку поддержки конфигурации (в случае использования механизма поддержки) включить возможность изменения следующих объектов конфигурации:
    а. Корень конфигурации.
    б. Справочник "Контрагенты".
    в. Определяемый тип "ЗначениеДоступа".
    г. Подписка на событие "ОбновитьГруппыЗначенийДоступа".
    д. Общий модуль "УправлениеДоступомПереопределяемый". 
3. Добавить в конфигурацию новый справочник "Группы доступа контрагентов".
4. Добавить в справочник "Конрагенты" новый реквизит "ГруппаДоступа" ссылочного типа на наш новый справочник.
5. Для определяемого типа "ЗначениеДоступа" в составной тип включить ссылки на справочники "Контрагенты" и "Группы доступа контрагентов".
6. Для подписки на событие "ОбновитьГруппыЗначенийДоступа" в качестве источника также указать справочник "Контрагенты".
7. Открыть общий модуль "УправлениеДоступомПереопределяемый" и вставить в три его процедуры фрагменты кода, приведенные ниже.
8. Из роли "ИзменениеУчастниковГруппДоступа" скопировать в необходимую вам роль (или роли, определяющие доступ к справочнику) шаблоны RLS с именами "ПоЗначениям" и "ПоЗначениямРасширенный". Установить в своих ролях использование одного из шаблонов по требуемому праву (например, "Чтение"), как показано на скрине ниже.  
9. Запустить конфигурацию в режиме "Предприятия" с параметром запуска "ЗапуститьОбновлениеИнформационнойБазы" (или же вызвать экспортную процедуру "ОбновитьПараметрыОграниченияДоступа" общего модуля подсистемы "УправлениеДоступомСлужебный"). 

Обратим внимание на довольно важный момент: в последнюю процедуру возможно потребуется добавить большее количество строк кода, если вы планируете ограничение доступа не только к справочнику "Контрагенты", но также и к каким-либо другим объектам конфигурации, связанных с этим справочником, например, разграничить доступ к документам "Реализация товаров и услуг" по реквизиту "Контрагент" - в этом случае предметов ограничения доступа выступает документ, а справочник "Контрагенты" является критерием ограничения доступа к предмету при помощи инструмента-разграничителя справочника "Группы доступа контрагентов". 

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

Процедура ПриЗаполненииИспользованияВидаДоступа(ИмяВидаДоступа, Использование) Экспорт
	
	ЗарплатаКадры.УправлениеДоступомЗаполнитьИспользованиеВидаДоступа(ИмяВидаДоступа, Использование);
	
	// +Наша вставка	
	Если ИмяВидаДоступа = "ГруппыКонтрагентов" Тогда
	    Использование = Истина;
	КонецЕсли;
	// -Наша вставка
	
КонецПроцедуры
Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
    
    // +Наша вставка
    // указание прав объектов метаданных, на которые распространяется RLS 
    Описание = Описание + "
    |Справочник.Контрагенты.Чтение.ГруппыКонтрагентов
    |Справочник.Контрагенты.Изменение.ГруппыКонтрагентов
    |";
    // -Наша вставка
    
КонецПроцедуры

Шаблон RLS по контрагентам в роли

После завершения обновления ИБ в программе необходимо проделать следующие действия:
1. Заполнить только что добавленный в систему справочник "Группы доступа контрагентов".
2. У
 элементов справочника "Контрагенты" заполнить необходимым образом реквизит "Группа доступа".    
3. В справочнике "Профили групп доступа" (или же в справочнике "Группы доступа") на закладке "Ограничения доступа" соответствующим образом настроить RLS по группам доступа контрагентов (ниже на скрине - пользователи, которым назначен профиль "Наш новый профиль доступа", будут работать в справочнике только с контрагентами, входящими в группы доступа "Оптовые" и "Общие").
4. Возможно потребуется предусмотреть в конфигурации механизм автоматического заполнения реквизита "Группа доступа" для новых элементов справочника "Контрагенты" (в целях облегчения его администрирования). 

Настройка RLS по контрагентам

Резюме: Использование подсистемы "Управление доступом" из состава БСП дает возможность управлять RLS по любым объектам конфигурации, оперируя при этом минимум двумя стандартными справочниками "Профили групп доступа" и "Группы доступа". Расширение возможностей настройки RLS дается с минимальным внесением изменений в подсистему. В случае, если критерий (или предмет) ограничения прав доступа имеет большой объем и постоянно расширяется (например, справочник "Контрагенты"), то имеется возможность через свой дополнительный справочник (средство разграничения) разделить критерий (или предмет) доступа на определенные области (в нашем случае через "Группы доступа контрагентов"), в противном случае в качестве разграничителя доступа можно использовать (и имеет смысл) сами элементы справочника (например, в справочнике "Организации"). Неоспоримым плюсом использования подсистемы также является унификация администрирования прав доступа в информационной базе.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей 1 (AlX0id) 18.11.14 10:52
Спасибо за труд - будет очень кстати :)
2. Яков Коган (Yashazz) 18.11.14 13:04
Знаю, как тяжело раскопать это всё в БСП, поэтому очень плюсую и респектую!
3. Александр Анисков (vandalsvq) 18.11.14 14:56
Помню как в свое время копал БСП-шную систему RLS, внимательно читал их шаблоны. Понравилось, хороший труд у них получился. Единственное что не нравится, что управление в основном через администратора, хотя можно и допилить (впрочем ты об этом написал).

(0) Bassgood, можно еще описать параметры RLS. В шаблонах конечно описание норм, но блин, пока до конца поймешь :))))

Однозначный плюс.
4. Алексей 1 (AlX0id) 18.11.14 15:28
ЗЫ. Очень надеюсь, что в очередной версии БСП все не перевернут с ног на голову..
5. Сергей Ожерельев (Поручик) 18.11.14 16:18
(0) Очень хорошо. В начале осени занимался доводкой нашей конфигурации в части прав доступа. До всего дощупывался сам.
6. Сергей Ожерельев (Поручик) 18.11.14 16:34
(0) Забыли про процедуру ПриЗаполненииВидовОграниченийПравОбъектовМетаданных в модуле УправлениеДоступомПереопределяемый

Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
	
	// +Наша вставка
	//
	Описание = Описание + "
	|Справочник.ФизическиеЛица.Чтение.ГруппыФизическихЛиц
	|Справочник.ФизическиеЛица.Изменение.ГруппыФизическихЛиц
	|";
	// +Наша вставка
	
КонецПроцедуры
...Показать Скрыть

7. Алексей Драчков (Bassgood) 18.11.14 22:23
(6) Поручик, спасибо за подсказку, внес в публикацию необходимые исправления.
8. Сергей Ожерельев (Поручик) 19.11.14 08:01
(7) Строка

     |Справочник.Контрагенты.Добавление.ГруппыКонтрагентов


лишняя. Смотрите типовые конфигурации и описание к процедуре.
9. Павел Колмаков (Stim213) 19.11.14 10:34
я бы не трогал типовой модуль. Отдельная подписка, отдельный модуль - и меньше проблем при последующих обновлениях
RodinMax; Bassgood; +2 Ответить 2
10. Алексей Драчков (Bassgood) 19.11.14 11:25
(8) Поручик, Исправил, еще раз спасибо за внимательность! =)
11. Алексей Драчков (Bassgood) 19.11.14 11:37
(9) Stim213, модуль "УправлениеДоступомПереопределяемый" все равно придется трогать, а вот подписку, да, вместо типовой можно создать свою, она обращается к модулю "УправлениеДоступомСлужебный" (в этот модуль мы и не вносили изменений). Учел ваше замечание.
12. Сергей Ожерельев (Поручик) 19.11.14 13:23
(9) Модули с суффиксом Переопределяемый предусмотрены для того, чтобы их трогали в определённых местах. Этакая пародия на абстрактные методы эмуляция абстрактных методов классов в 1С Предприятии.
13. Петр (plus1s_a) 19.11.14 15:05
14. Дмитрий Глазырин (glassman) 19.11.14 16:16
Не так давно все это раскапывать пришлось самому. Была мысль подобный пост написать :) Вы меня опередили и описали все очень даже сжато и хорошо!
15. Сергей Ожерельев (Поручик) 19.11.14 16:28
(14) У меня тоже было намерение, но не хватало времени и писательских способностей, поэтому забил.
16. Алексей Кубовцов (aleksey.kubovtsov) 20.11.14 19:47
спасибо за статью. будет полезна
17. VVV (V_V_V) 22.11.14 23:54
А сколько еще всего осталось за кадром... Но спасибо за проделанную работу.
18. Алина Иванова (alina0587) 26.11.14 17:06
Было бы здорово, если бы расписали, как пользоваться другими БСП-шными шаблонами, не только #ПоЗначениям))
19. Алексей Драчков (Bassgood) 26.11.14 17:34
(18) alina0587, это уже совсем другая история =) В этой статье в общем то не описываются возможности использования БСП-шных шаблонов, в ней описано использование БСП-шной подсистемы, в которой применяются эти шаблоны (сами шаблоны независимо от подсистемы применять не получится), использование части возможностей одного из шаблонов, я думаю, из статьи понятно, но описание всех возможностей этих шаблонов - это уже отдельная статья.
20. Сергей Ожерельев (Поручик) 27.11.14 13:36
(11)
>>> г. Подписка на событие "ОбновитьГруппыЗначенийДоступа" (вместо этого можно также создать свою собственную подписку).

Создать свою подписку можно, но при обновлении конфигурации программа завершится с ошибкой. Вчера обжёгся сам, поэтому пришлось удалить свою подписку и назначить обработку своих объектов на штатную.
21. Сергей Ожерельев (Поручик) 27.11.14 13:38
(11)
>>> г. Подписка на событие "ОбновитьГруппыЗначенийДоступа" (вместо этого можно также создать свою собственную подписку).

Создать свою подписку можно, но при обновлении конфигурации программа завершится с ошибкой. Вчера обжёгся сам, поэтому пришлось удалить свою подписку и назначить обработку своих объектов на штатную.
22. Алексей Драчков (Bassgood) 27.11.14 14:46
(20) Поручик, а как такое может быть, если штатная и наша собственная подписки вызывают одну и ту же процедуру по одному и тому же событию "Перед записью" элемента справочника (конечно, как вариант, в какой-нибудь процедуре штатной подписки идет обращение к ее метаданным и уже на основании состава ее источников выполняется обновление)? Причину ошибки обновления получилось выяснить? Если ошибка точно из-за собственной подписки - то уберу из статьи касающейся этой проблемы текст.
p.s. Я сам не пробовал делать это с собственной подпиской, я изначально правил штатную подписку.
23. Сергей Ожерельев (Поручик) 28.11.14 10:16
(22) Ошибка из-за того, что в программе при обновлении используется именно штатная ОбновитьГруппыЗначенийДоступа. Свою подписку использовать можно, но до первого обновления.
24. Сергей Ожерельев (Поручик) 28.11.14 10:27
(22) Вот именно так - в модуле менеджера какой-то константы идет обращение к метаданным "ОбновитьГруппыЗначенийДоступа" и уже на основании состава ее источников выполняется обновление.

Ну воссоздавать вчерашнюю ситуации лениво.
25. Алексей Драчков (Bassgood) 28.11.14 11:21
(24) Поручик, убрал из статьи касающийся этой проблемы текст, еще раз спасибо за корректировку публикации! =)
26. Сергей Зубарев (ASZub) 04.03.15 12:48
Подскажите, сделал все как указанно, но в виды доступа не добавляется "группы номенклатуры". При этом у пользователя, которому назначена указанная роль, ограничен доступ ко всем контрагентам
buy_sale; kasper076; +2 Ответить 1
27. Алексей Драчков (Bassgood) 04.03.15 15:54
(26) ASZub, честно говоря, не видя картины в живую, сложно что-то сказать что сделано не так, могу лишь посоветовать попробовать еще раз пройтись внимательно по всем пунктам публикации и проверить у себя в конфигурации все ли эти пункты были выполнены.
Как вариант - проверьте правильно ли заполнена процедура "ПриЗаполненииВидовДоступа".
28. Сергей (necropunk) 16.04.15 15:17
Да, статья помогла, спасибо. По документации БСП не очень просто разобраться, плюс в ней есть ошибки, что затрудняет разработку...
29. Максим Зудин (kasper076) 17.04.15 09:31
На БСП 2.2.5.30 не получилось добиться результата..
30. Сергей (necropunk) 17.04.15 09:34
(29) kasper076, А что именно не получилось? Делал все по статье, со своими нюансами, изредка подглядывая в шаблоны ERP - все заработало.
31. Сергей Ожерельев (Поручик) 17.04.15 10:04
(29) Или руки не там вставлены, или в БСП 2.2.5 есть различия от предыдущей 2.2.4. Не думаю, чтобы отличия были большими.
32. Максим Зудин (kasper076) 17.04.15 10:31
(30) necropunk, Создал новую конфу со справочником "Контрагенты", далее все делал по статье. Справочник "Профили пользователей" имеет несколько другой вид. В итоге пользователь вообще не видит справочник "Контрагенты".
(31) Поручик, на счет рук спорить не буду. Возможно, что именно в них причина.

Какой источник указать для Подписки "ЗаписатьНаборыЗначенийДоступа"?

В демо-базе БСП 2.2.5.30 новые "ВидыДоступа" являются предопределенными элементами ПВХ ВидыДоступа.
33. Александр (МимохожийОднако) 24.04.15 07:27
Есть какая-нибудь таблица соответствия версии БСП с последним релизом типовой конфигурации?
34. Сергей Ожерельев (Поручик) 24.04.15 12:26
(33) Какой именно типовой? Их целая куча типовых, открою тебе секрет. Только никому не говори.
35. Александр (МимохожийОднако) 25.04.15 07:10
(34) Поручик, спасибо за секрет )) Например, УТ11, БП3, Розница, ЗУП3. В этих конфигурациях разные или одинаковые БСП?
36. Надежда (user_2010) 12.05.15 12:30
Разбираюсь с БСП. Вижу, что в моей конфигурации есть СтандартныеПодсистемы, нужная мне подсистема ПрисоединенныеФайлы - тоже есть.
Как узнать - какая версия этих подсистем?
Ведь для каждой версии по-своему настраивается работа...
37. Сергей Ожерельев (Поручик) 12.05.15 12:50
(36) СтандартныеПодсистемыСервер

// Возвращает номер версии Библиотеки стандартных подсистем.
//
Функция ВерсияБиблиотеки() Экспорт

Возврат "1.2.1.15";

КонецФункции
38. Алексей Драчков (Bassgood) 12.05.15 17:09
(36) user_2010, Версию БСП можно просмотреть в регистре сведений "Версии подсистем".
39. Надежда (user_2010) 13.05.15 10:42
(38) Bassgood, Спасибо! Все нашла!
40. Надежда (user_2010) 13.05.15 11:30
Еще вопрос: имеем нетиповую конфигурацию на 8.2. В ней есть некоторые подсистемы из БСП. Версия Стандартных подсистем 2.1.3.50.
Подсистема "Присоединенные файлы" есть. Начинаю настраивать и вижу, что недостает РегистраСведений.ПрисоединенныеФайлы...? Т.е. внедрили подсистему "Присоединенные файлы" не полностью?
На сайте обновлений такой версии БСП 2.1.3.50 нет (хотела посмотреть - может в этой версии еще не было РегистраСведений.ПрисоединенныеФайлы). На сайте обновлений есть 2.1.3.51, в ней этот регистр сведений есть.
Значит мне нужно обновить нужные мне подсистемы БСП?
Или просто добавить недостающие объекты?
Можно ли обновлять сразу на самую последнюю версию? Или нужно последовательно ставить все обновления?
41. Алексей Драчков (Bassgood) 13.05.15 12:09
(40) user_2010, честно говоря от себя не могу что-то посоветовать, боюсь ошибиться, но я бы просто обновил БСП через сравнение/объединение с 2.1.3.51, т.к. она ближе всего к версии текущей вашей БСП, с последующей проверкой основных функций подсистемы "Присоединенные файлы".
42. Надежда (user_2010) 13.05.15 12:18
Понятно! Спасибо!
Кажется поняла почему подсистема "Присоединенные файлы" загружена не полностью.
В Регистре сведений "Версии подсистем" указаны:
БиблиотекаЭлектронныхДокументов 1.1.17.6
СтандартныеПодсистемы 2.1.3.50

Почитала про БиблиотекаЭлектронныхДокументов - она содержит в себе функциональность "Присоединенные файлы"... может быть грузили именно ее, а присоединенные файлы попали прицепом... и болтаются там необновленные...
43. Надежда (user_2010) 14.05.15 12:08
Выяснилось, что это в типовой 1С.БухгалтерияПредприятия.2.0 - так странно загружены подсистемы БСП...
Никто не пытался использовать БСП в 1С.Бухгалтерии.2.0?
44. chirinna Арвачев (chirinna) 18.05.15 16:58
Отличная статья - сильно помогла! Может посоветует кто - у меня ограничение "все разрешены, кроме ..." замечательно работают. А вот "все разрешены, кроме ..." не отрабатывает - пустой справочник показывает. Причем можно создать элемент с разрешенной группой, и этот элемент виден в справочнике. Пока не понял, в чем дело...
buy_sale; +1 Ответить
45. Кирилл Кремнев (Jimkaaa) 31.05.15 19:36
Добрый день. БСП 2.2.5.33
Пытаюсь реализовать доступ к документу _ДемоПоступлениеТоваров с ограничением по статусам.
Создал Справочник ДоступПоСтатусам
Добавил реквизит "СтатусДоступа" в документ _ДемоПоступлениеТоваров
Дальше добавил в УправлениеДоступомПереопределяемый строки кода

Процедура ПриЗаполненииВидовДоступа(ВидыДоступа) Экспорт
	
	// _Демо начало примера
	_ДемоСтандартныеПодсистемы.ПриЗаполненииВидовДоступа(ВидыДоступа);
	// _Демо конец примера
	

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


Процедура ПриЗаполненииИспользованияВидаДоступа(ИмяВидаДоступа, Использование) Экспорт
	
	// _Демо начало примера
	_ДемоСтандартныеПодсистемы.ПриЗаполненииИспользованияВидаДоступа(ИмяВидаДоступа, Использование);
	// _Демо конец примера

	Если ИмяВидаДоступа = "ДоступПоСтатусам" Тогда
	Использование = Истина;
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
	
	// _Демо начало примера
	_ДемоСтандартныеПодсистемы.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание);
	// _Демо конец примера
	
	Описание = Описание + "
	|Документ._ДемоПоступлениеТоваров.Чтение.СтатусДоступа
	|Документ._ДемоПоступлениеТоваров.Изменение.СтатусДоступа
	|";
	
КонецПроцедуры
...Показать Скрыть


При запуске обработки ИнструментыРазработчикаОбновлениеВспомогательныхДанных выдаёт ошибку:

{Константа.ПараметрыОграниченияДоступа.МодульМенеджераЗначения(461)}: Ошибка в процедуре ЗаполнитьСвойстваВидаДоступа
общего модуля УправлениеДоступомПереопределяемый.

Тип значений доступа "Доступ по статусам" вида доступа "ДоступПоСтатусам"
не указан в определяемом типе "Значение доступа".
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(


Подскажите пожалуйста, что не так делаю?
46. Кирилл Кремнев (Jimkaaa) 31.05.15 22:38
Всё разобрался. Забыл добавить в Определяемые типы - ЗначенияДоступа справочник СтатусыДоступа.
47. Сергей Фирсаев (buy_sale) 21.07.15 17:54
(29) kasper076, +1
Не работает на 3.0.40.38 БСП 2.2.5.35
Не выводит список контрагентов вообще, все сделано по инструкции. Проверено,что все сделано по инструкции еще 5 раз.
48. Алексей Драчков (Bassgood) 21.07.15 18:59
(47) buy_sale, возможно, что в БСП 2.2.5 присутствуют какие-нибудь не глобальные изменения по отношению к предыдущим версиям библиотеки, значит нужно копать глубже.
49. Ридван (утюгчеловек) 27.09.15 15:12
БСП 2.3.1.79

Инфа из статьи (из ИТС, кстати, тоже) не помогла. Мой справочник для целевого пользователя оказался пуст. Одолжите выпрямитель рук:

1. Включил подсистему в конфу сравнением/объединением
2. Планируется использовать шаблон "ПоЗначениям". Добавил вид доступа, писал необходимые процедуры:
Процедура ПриЗаполненииВидовДоступа(ВидыДоступа) Экспорт
	
	// +
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "ГруппыДоступаПодразделений"; // имя вида доступа (используется в ролях для RLS)
    ВидДоступа.Представление    = НСтр("ru = 'Группы доступа подразделений'");
    ВидДоступа.ТипЗначений      = Тип("СправочникСсылка.Подразделения"); // критерий ограничения доступа
    ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.ГруппыДоступаПодразделений"); // средство ограничения доступа
    // -
	
КонецПроцедуры

Процедура ПриЗаполненииИспользованияВидаДоступа(ВидДоступа, Использование) Экспорт
	
	// +    
    Если ВидДоступа = "ГруппыДоступаПодразделений" Тогда
        Использование = Истина;
    КонецЕсли;
    // -
	
КонецПроцедуры

Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(Описание) Экспорт
	
	// + 
    // указание прав объектов метаданных, на которые распространяется RLS 
    Описание = Описание + "
    |Справочник.Подразделения.Чтение.ГруппыДоступаПодразделений
    |Справочник.Подразделения.Изменение.ГруппыДоступаПодразделений
    |";
    // -
	
КонецПроцедуры
...Показать Скрыть


3. Включил шаблон для Роли ЧтениеПодразделений на право Чтение: #ПоЗначениям("Справочник.Подразделения", "", "", "ГруппыДоступаПодразделений", "ГруппаДоступа", "", "", "","","","","","","","","","","","","","","","","","","","","","","","","","","","").
Реквизит справочника Подразделения типа СправочникСсылка.ГруппыДоступаПодразделений называется "ГруппаДоступа"

4. Запустил базу с параметром /C ЗапуститьОбновлениеИнформационнойБазы

5. Добавил пользователя в группу ОбычныйПользователь. Группа связана с профилем ОсновнойПрофильПользователя, для которого установлен вид доступа. В группе ОбычныйПользователь назначил резрешенные подразделения.

Админ всё видит. Пользователь не видит. ЧЯНТД?

Вчитываюсь в текст шаблона. Сравниваю с текстом запроса, полученным из ТЖ... Пока не разобрался.
50. Ридван (утюгчеловек) 27.09.15 22:25
(49) Покурил демобазу БСП. Обнаружил нюансы, о которых не прочитал в статье:

1. Проблема вылечилась изменением параметров в шаблоне доступа:
БЫЛО: #ПоЗначениям("Справочник.Подразделения", "", "", "ГруппыДоступаПодразделений", "ГруппаДоступа"...
СТАЛО: #ПоЗначениям("Справочник.Подразделения", "", "", "ГруппыДоступаПодразделений", "Ссылка"...

2. В демобазе в модуле объекта справочника, группирующего ограничения, тоже установлен реквизит. В моем случае для справочника ГруппыДоступаПодразделений я добавил реквизит ГруппаДоступа типа СправочникСсылка.ГруппыДоступаПодразделений. И поставил RLS с шаблоном:
#ПоЗначениям("Справочник.ГруппыДоступаПодразделений", "", "", "ГруппыДоступаПодразделений", "Ссылка"..

3. В демобазе на справочник групп доступа навешивается обработчик ПередЗаписью. Где автоматически заполняется реквизит ГруппаДоступа.

Возможно я не докурил подсистему, и ляпнул что-то лишнего. Но с учетом всего вышесказанного у меня справочник заработал.

Буду разбираться с другими шаблонами.
SirYozha; UPSoft; Bassgood; +3 Ответить
51. Валентин Баринов (dkxtitan) 04.05.16 11:36
Очень полезная статья, спасибо!
От себя хочу добавить, что в инструкцию можно добавить ещё один пункт:
В константу "ПараметрыОграниченияДоступа" в процедуру "ЗаполнитьЗначенияДоступаСГруппами" нужно добавить:

Если Свойства.Имя = "ГруппыКонтрагентов" Тогда
		ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.Контрагенты"));
		ДобавитьВМассив(Свойства.ТипыВыбираемыхЗначений, Тип("СправочникСсылка.ГруппыДоступаКонтрагентов"));
		Возврат;
	КонецЕсли;
...Показать Скрыть


Если что - я не программист и даже не знаю что этот код означает, но без него не проходило обновление базы.
Bassgood; +1 Ответить
52. Юрий Меринов (portfleet) 31.05.16 17:50
51. dkxtitan
Спасибо! После этой врезки обновление прошло
53. Vladimir Ganzuk (vlan76) 17.08.16 14:30
Люди Добрые помогите
Пытаюсь по тексту статьи сделать ограничение доступа по складам.
1.Создал справочник ГруппыДоступаСклады
2. В справочнике Склады добавил реквизит ГруппаДоступаПоСкладу
3. Для подписки на событие "ОбновитьГруппыЗначенийДоступа" в качестве источника также указал справочник "Склады".
4. В общий модуль "УправлениеДоступомПереопределяемый" и вставил в три его процедуры фрагменты кода, приведенные ниже.

ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "ГруппыДоступаСклады"; // имя вида доступа (используется в ролях для RLS)
    ВидДоступа.Представление    = НСтр("ru = 'Группы Доступа Склады'");
    ВидДоступа.ТипЗначений      = Тип("СправочникСсылка.Склады"); // критерий ограничения доступа
    ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.ГруппыДоступаСклады"); // средство ограничения доступа
	//Константы.ИспользоватьГруппыДоступаСклады="Истина";
	//Сообщить("33333",СтатусСообщения.БезСтатуса);
	// -Наша вставка
	Для каждого ВидДоступа Из ВидыДоступа Цикл
	Сообщить(ВидДоступа,СтатусСообщения.БезСтатуса);

ИначеЕсли ВидДоступа="ГруппыДоступаСклады" Тогда
		Сообщить(видДоступа,СтатусСообщения.БезСтатуса);
		Использование = Истина;
	иначе
		Сообщить("цццц",СтатусСообщения.БезСтатуса);
	КонецЕсли;


Описание = Описание + "
    |Справочник.Склады.Чтение.ГруппыДоступаПоСкладу
    |Справочник.Склады.Изменение.ГруппыДоступаПоСкладу
    |";
...Показать Скрыть

После всего этого захожу в 1с УТ11.1 В настройки пользователей и ролей в ограничения данные о Группе доступа склады не добавляются
Подскажите где ошибаюсь
54. Дмитрий Усачев (UsachevDima) 31.10.16 02:38
Протестил этот метод в конф. БГУ2 - все норм, все работает. Спасибо!

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