Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:19

1С: Документооборот - права доступа к карточкам

Автор forum1cru, 26 янв 2012, 16:28

0 Пользователей и 1 гость просматривают эту тему.

forum1cru


В 1С: Документооборот отсутствует возможность предоставлять права на доступ к карточке только тем сотрудникам, которые участвуют в ходе бизнес-процесса.

Как можно решить данную проблему?

Rasul

Да. Типовые механизмы разграничения прав доступа к документам к сожалению не совсем подходят к этой задаче. Как вариант можно сделать следующее:



- Создаем новую роль, например "ДополнительныйДоступ"

- Создаем регистр сведений "ДопНаборыЗначенийДоступа" по аналогии с типовым "НаборыЗначенийДоступа"

- Для входящих, исходящих и внутренних документах у роли "ДополнительныйДоступ" ставим галки Чтение, Просмотр. Ограничиваем чтение следующим условием (на примере внутренних доков):



ВнутренниеДокументы
ИЗ Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопНаборыЗначенийДоступа КАК ДопНаборыЗначенийДоступа     
ПО ВнутренниеДокументы.Ссылка = ДопНаборыЗначенийДоступа.Объект
ГДЕ ДопНаборыЗначенийДоступа.ЗначениеДоступа = &ТекущийПользователь




- В событии "ПриЗаписи" задачи "ЗадачаИсполнителя" пишем код, который запишет в новый регистр сведений строку, что-то типа:



МенеджерДопНаборы = РегистрыСведений.ДопНаборыЗначенийДоступа.СоздатьМенеджерЗаписи();           
МенеджерДопНаборы.Объект             = Предмет;     
МенеджерДопНаборы.ВидДоступа             = ПланыВидовХарактеристик.ВидыДоступа.Пользователи;
МенеджерДопНаборы.ЗначениеДоступа       = Исполнитель;
МенеджерДопНаборы.Прочитать();           


Если не МенеджерДопНаборы.Выбран() Тогда                       


      МенеджерДопНаборы.Объект            = Предмет;
      МенеджерДопНаборы.ВидДоступа             = ПланыВидовХарактеристик.ВидыДоступа.Пользователи;
      МенеджерДопНаборы.ЗначениеДоступа       = Исполнитель;
      МенеджерДопНаборы.Чтение                = Истина;
      МенеджерДопНаборы.Изменение             = Истина;
      МенеджерДопНаборы.Записать();


КонецЕсли;


Вуаля, все работает. Пользователям назначаем эту роль, запрещаем им все что можно типовыми механизмами. Теперь, даже если все запрещено, но для пользователя есть задача по кокому-нить доку - он получит к нему доступ.



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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск