Имя: Пароль:
1C
1С v8
Настройка доступа по автору документа в БП 3.0
0 Admin_Net_1C
 
18.08.15
11:39
Добрый день народ.
Подскажите, как реализовать следующую задачу в БП 3.0: доступ пользователя только к документам, автором которых он является.
На вскидку, я так понимаю надо использовать RLS, но опыта работы с данным механизмом не имею.
Есть ли другие типовые варианты решения задачи (без переписывания всей конфигурации)?
1 Lamer1C
 
18.08.15
11:42
(0) а если пользователь уволится?
2 Dmitriy_76
 
18.08.15
11:43
(0) а тут (в рлс) все и не надо переписывать. Добавляешь свою роль, и в ней настраиваешь необходимый доступ

статей по настройке РЛС тьма.
3 Dmitriy_76
 
18.08.15
11:43
(1) ну с полными правами то всяко ВСЕ видно :)
4 Lamer1C
 
18.08.15
11:45
(3) смотря как это реализовывать :)
5 OldMonk
 
18.08.15
11:46
(2) каждому юзеру - по роли? :))
6 Admin_Net_1C
 
18.08.15
11:46
(2) не нашел пока такую, где все расписано по шагам. Кусками из разных статей пытаюсь собрать, чтобы более менее ясная картина предстала, пока слабо получается (
7 Admin_Net_1C
 
18.08.15
11:47
(3) под полными правами ни нужно чтобы было видно
8 Lamer1C
 
18.08.15
11:48
(0) а вообще, есть типовой механизм - ограничение доступа на уровне записей. правда там по организациям. но для примера можно взять.
(3) ну вот в (7)  ))
9 Dmitriy_76
 
18.08.15
11:49
(8) ууу

(5) ЗАЧЕМ ???
10 Admin_Net_1C
 
18.08.15
11:50
(8)->(7) НУЖНО - опечатался )
(0) Попутно еще один вопрос возник, а как в этом случае будет отрабатывать подбор, например в том же документе "Авансовый отчет" есть реквизит "ДокументАванса", но его ведь может ввести и другой пользователь. Как тогда можно будет выбрать данный документ?
11 Lamer1C
 
18.08.15
11:51
(10) если RLS - то никак
12 Stim
 
18.08.15
11:51
не хочешь возиться с рлс - делай отбор в форме списка и не разрешай его изменять пользователю
13 OldMonk
 
18.08.15
11:53
(9) а как ты это сделаешь одной ролью?
14 Fl0Mаsтер
 
18.08.15
11:54
(0) Была похожая задача, но по ходу обсуждения с заказчиком, выяснили, что пусть документы будут видны и другим пользователям, и что другие пользователи могут их открывать. Но изменять, проводить - нет. Решилось элементарно блокирование интерфейса формы.
15 Admin_Net_1C
 
18.08.15
11:54
(11) тогда RLS, получается, не подходит... Ок, тогда возможно ли создать подписку на открытие ЛЮБОГО документа? (Чтобы в ней проверять, например Если Ответственный<>ТекущийПользователь Тогда Возврат - что то типа такого)
16 Dmitriy_76
 
18.08.15
11:56
(15) подписки при открытии нет..
а вот перед записью вполне можно...
17 Dmitriy_76
 
18.08.15
11:57
(15) + рлс как раз и на изменение настроить вполне устроит
18 OldMonk
 
18.08.15
11:57
(14) ТС не хочет лезть в конфигуратор.
19 Stim
 
18.08.15
11:59
(16)  как так нету?? есть подписка с событием ОбработкаПолученияФормы, там все есть
20 Admin_Net_1C
 
18.08.15
12:01
(18) это как раз без проблем. Не хочется изобретать велосипед, типа прописывания доп.кода в каждую форму, например при открытии.
(19) спасибо, посмотрю
21 Dmitriy_76
 
18.08.15
12:08
(19) это подписка ???? или обработчик ?
22 Fl0Mаsтер
 
18.08.15
12:10
(21) подписка, но не объекта, а менеджера
сам только узнал
23 Dmitriy_76
 
18.08.15
12:11
(22) мы не путаем... то что вставляем 1 раз..выбираем кучу объектов и все....


и кусок кода который надо вставить  в каждый документ?
24 OldMonk
 
18.08.15
12:24
(23) ответь плз таки на вопрос: как тут обойтись одной ролью?
25 Dmitriy_76
 
18.08.15
12:27
(24) Обычным образом..зачем плодить то ? тогда расскажи свой коварный план на каждого пользователя отдельную роль ....?

или РЛС не знает какой пользователь пытается обратиться к данным ???
26 Lamer1C
 
18.08.15
12:49
(15) rls на изменение
27 Admin_Net_1C
 
18.08.15
13:14
(19)(20) посмотрел, создал свою подписку на событие ОбработкаПолученияФормы, все хорошо...НО как теперь в этой подписке сделать, чтобы форма не открывалась?
Попробовал так:

Процедура ОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт
Перем ДокСсылка;    

Если НЕ РольДоступна("ПолныеПрава") И ВидФормы = "ФормаОбъекта" Тогда
Если Параметры.Свойство("Ключ", ДокСсылка) Тогда
Если ДокСсылка <> Неопределено Тогда
                
Автор = Справочники.Пользователи.ПустаяСсылка();

Попытка
Автор = ДокСсылка.Ответственный;
Исключение
//у данного документа нет реквизита шапки "Ответственный"
Возврат;
КонецПопытки;    
                
Если Автор <> ПараметрыСеанса.ТекущийПользователь Тогда
  СтандартнаяОбработка = Ложь;
  ВыбраннаяФорма = "";
КонецЕсли;    

КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецПроцедуры


но в этом случае возникает ошибка "Неизвестный идентификатор формы"
28 OldMonk
 
18.08.15
13:14
(25) то есть как минимум уравнять в правах ГБ, буха и кладовщика?
одной ролью в любом случае не обойдешься.
29 Admin_Net_1C
 
18.08.15
13:27
(27) получается этот вариант тоже не подходит (((
30 OldMonk
 
18.08.15
13:36
Если Dmitriy_76 внятно объяснит, как в данной ситуации обойтись одной ролью, то может быть так лучше и сделать :)
Но есть еще вариант, хоть он потребует вмешательства в конфигурацию. Любой документ сначала лезет в процедуру ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(,) и вот там-то можно добавить свой код.
31 Stim
 
18.08.15
15:43
(27) не мучайся. лови в подписке форму списка, настраивай отбор ДС по ответственному
Ошибка? Это не ошибка, это системная функция.