Имя: Пароль:
1C
1С v8
Список доступных пользователю документов
0 Domanoff26
 
07.11.11
13:24
как можно через роли пользователя получить список документов на которые он иммет право редактирования?

сама задача: отменяем право перепроведения (и вобще изменение проведенных) доков, но для некоторых изменения некоторых реквизитов сделали отдельную обработку, сунули само изменение (запись дока с новыми значениями реквизитов) в привелегерованый модуль, но получаются что эту обработку могут вызывать все пользователи, а нам надо чтобы это было доступно только для  тех, кто имеет (точнее имел до проведения) право на изменение этого дока....
1 Eugene_life
 
07.11.11
13:37
(0) Может, глупость, но - вариант: Создать новую роль, типа "ПравоИзмененияПроведенных", в начале модуля установить проверку "РольДоступна()", и эту роль назначить только тем, кому надо.
2 Domanoff26
 
07.11.11
13:38
(1) но это по сути копирование старых ролей
3 Eugene_life
 
07.11.11
13:40
(2) Ну, я бы так не сказал. Копирования ролей тут нет. Тут есть модуль, и роль, разрешающая его выполнение.
4 jump if zero
 
07.11.11
13:40
Глобальный контекст.ПравоДоступа

Нето?
5 Domanoff26
 
07.11.11
14:01
(3) чего то не пойму, а документы, кому то можно поступление наприимер менять, кому то нельзя, как это учитывается, можно подробнее?
6 Eugene_life
 
07.11.11
14:05
(5) Это нужно смотреть, как написана сама обработка по изменению реквизитов. Если она одна на все документы, а доступ надо делить по ролям/пользователям, то есть вариант получше:
Создаем РегистрСведений, с измерением Пользователь и реквизитом ДоступныйДляИзмененияРеквизит. Заполняем его (указываем связку Пользователь - Реквизит документа. А в обработке перед изменением реквизита - дергаем данные из регистра (можно - нельзя)
7 Domanoff26
 
07.11.11
14:37
(6) совет (4) лучше учитывая что этот регистр создан но без измерения пользователь но с  измерением документ, и когда он будет открывать обработку она откроется только если ПравоДоступа("Изменение",ЭтотОбъект.Метаданные(), ПользователиИнформационнойБазы.ТекущийПользователь()) = Истина, а та же у в свою очередь вытащит для этого доку изменяемые реквизиты.....просто заполнять для каждой роли все нужные реквизиты накладно
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший