Начну с того что в ЗУПе для Украины, это вообще не реализовано, и никакой инфы нет по этой проблеме, потому пришлось программировать, делалось все в 3 часа ночи, так что если у кого то есть предложения по оптимизации буду рад выслушать ....
Писать старался так что бы потом при обновлении, было меньше гемора).
Пришлось переделать Интерфейсы, Роли, ОбщиеФормы,Перечисления и РегистрСведений.
Задача ставилась так, что бы пользователь мог работать только с теми подразделениями организации которые ему назначены, плюс пользователь должен видеть только те кадровые документы регламентированного учета которые он создал и ничье больше.
Описывать буду на примере документа ПрийомНаРаботуВОрганизацию.
Для того что бы пользователь видел определенные кадровые документы, был сделан отдельный интерфейс, с этим думаю не должно быть трудностей.
Для того что бы пользователь видел только те доки которые он создал, пришлось редактировать роли и привязать к реквизиту Ответственный, он есть почти в каждом кадровом документе, дальше для того что бы не изменять типовые объекты Роли, я создал свои методом копирования, конкретно типовую роль Пользователи и Полные права. В этих ролях для нужных мне документов, я редактировал права на чтение, в типовой для этих прав "Ограничение доступа к данным" стояло " ПриемНаРаботуВОрганизацию ГДЕ ЛОЖЬ " я изменял на "ПриемНаРаботуВОрганизацию ГДЕ (ЛОЖЬ ИЛИ ПриемНаРаботуВОрганизацию.Ответственный = &ТекущийПользователь)" так добился что бы пользователь видел только те доки которые он создал, по сути своего рода ограничение доступа на уровне пользователя.
Дальше ограничиваем права к определенным подразделениям организации так что бы при открытии реквизита в кадровых документах были видны только те Подразделения организации которые назначены этому пользователю.
В типовой реализован следующий механизм: создаем в типовом спр. ГруппыПользователей нужные нам группы и привязываем к ним пользователей. Спр.ГруппыПользователей открывается Сервис/Пользователи И Права Доступа/Группы Пользователей. Дальше когда открываете форму элемента спр. ГруппыПользователей в открывшийся форме в верхней части есть кнопочка "права", при нажатии на нее открывается общая форма Настройки прав доступа, где мы в левой части "область данных" расположены объекты разграничивания по сути там выбирается объект например: Организации, Контрагенты и т.д, а с правой стороны "объект доступа" и признаки: чтение, изменение, добавление по сути тут мы указываем конкретные элементы справочников которые будут доступны.
Проблема здесь в том что в "области данных" нет Справочника Подразделения Организации
Для того чтобы добавить ПодразделенияОрганизации в конфигураторе открываем перечисления "ОбластиДанныхОграниченияПравДоступа" и добавляем туда еще одно значение например: "ПодразделенияОрганизацииДанные " тогда при настройке прав в левой части "область данных" будет отображаться наше значение.
Следующие что нужно сделать это то что когда мы в настройке прав при выделении нашего добавленного значения "ОбластиДанныхОграниченияПравДоступа" в табличной части с правой стороны "объект доступа" открывался справочник ПодразделенияОрганизации.
Для этого в регистре сведений ПраваДоступаПользователейКОбъектам в ресурсе ОбъектДоступа в тип значения добавляем еще справочник ПодразделенияОрганизации.
Дальше в общей форме "НастройкаПравДоступа" в модуле есть функция "Функция ПолучитьТипДляОбластиДанных(ОбластьДанных) Экспорт", добавляем туда условие
ИначеЕсли ОбластьДанных = Перечисления.ОбластиДанныхОграниченияПравДоступа.ПодразделенияОрганизацииДанные Тогда
НайденныйТип = Тип("СправочникСсылка.ПодразделенияОрганизаций");