Имя: Пароль:
1C
1С v8
Как разграничить доступы на записи в одном справочнике?
,
0 Lavr
 
12.05.16
13:07
Имеется справочник, на который имеют полные права все пользователи конфигурации, требуется только чтобы все пользователи не могли изменять/удалять записи друг друга, но видеть. Это можно реализовать только через код?

Если да, то подскажите пожалуйста в какую сторону смотреть?

Благодарю
1 ДенисЧ
 
12.05.16
13:10
В форме элемента
Если ПользовательНеИмеетПраваИзменятьЭлемент(глТекущийПользователь) Тогда
  Форма.ТолькоПросмотр = Истина;
КонецЕсли;
2 КМ155
 
12.05.16
13:11
(0) RLS
подписка перед записью
блокировка контрола
3 lodger
 
12.05.16
13:12
(1) зато юзер может где-то инициировать код способный к изменению реквизитов.
(0) по старой доброй традиции я бы нагородил RLS с доступом через реквизит Автор :D
4 ДенисЧ
 
12.05.16
13:13
(3) Ну можно код вставить в ПриЗаписи...
5 ДенисЧ
 
12.05.16
13:14
РЛС уж слишком сильно тормоза добавляет...
6 КМ155
 
12.05.16
13:16
(4) перед записью
7 ДенисЧ
 
12.05.16
13:19
(6) Убедил.
8 Lavr
 
13.05.16
09:53
Простите забыл указать - у меня Управляемое приложение, 1С 8.2
В форме элемента
НаКлиенте
Процедура ЗаписьСПриИзменении(Элемент)
Если ПользовательНеИмеетПраваИзменятьЭлемент(глТекущийПользователь) Тогда
  Форма.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры

Как то так?
9 lxs
 
13.05.16
10:08
(8) Убил))
10 Карупян
 
13.05.16
10:13
RLS на запись - это ЗЛО
11 Тролль главный
 
13.05.16
10:22
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ТолькоПросмотр = ПользовательНеИмеетПраваИзменятьЭлемент(ПараметрыСеанса.ТекущийПользователь);
    
КонецПроцедуры
12 Lavr
 
13.05.16
13:24
процедура или функция с указанным именем не определена.
13 Nuobu
 
13.05.16
13:25
(12) Сам эту функцию напиши.
14 КМ155
 
13.05.16
13:33
(10) +100500
подписка перед записью наше всё
15 Lavr
 
16.05.16
13:48
В форме элемента сделал так:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Объект.Сотрудник = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;

ЭтаФорма.ТолькоПросмотр=(Объект.Сотрудник <> ПараметрыСеанса.ТекущийПользователь);

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

Все работает, подскажите пожалуйста как сделать для формы списка этого же справочника?
16 Lavr
 
23.05.16
15:33
Необходимо чтобы текущий пользователь имел полные права на свои записи в справочнике в форме списка, но чужие записи мог только просматривать.

В форме элемента все получилось, как написано выше, но в форме списка любую запись любой пользователь может удалить.
17 ДенисЧ
 
23.05.16
15:35
(16) Ты разрешил пользователям непосредственное удаление? blame on you!
18 RomanYS
 
23.05.16
15:40
(15)
Если НЕ ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Объект.Сотрудник = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;

Забавно: кто первый встал того и тапки?
19 YFedor
 
23.05.16
15:48
(16) Так в модуле объекта проверяй
20 Lavr
 
25.05.16
14:26
Может так как то:
&НаСервере
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
    Если Элементы.Сотрудник <> ПараметрыСеанса.ТекущийПользователь Тогда
    ЭтаФорма.ТолькоПросмотр=Истина;
    КонецЕсли;
КонецПроцедуры
21 Lavr
 
03.06.16
11:10
В модуле объекта:

Процедура ПередЗаписью ()
Сотр=Справочники.ЛёвинВА.НайтиПоРеквизиту(Сотрудник);
Если Сотр <> ПараметрыСеанса.ТекущийПользователь Тогда
ТолькоПросмотр=Истина;
КонецЕсли;
КонецПроцедуры
?
Управляемое приложение, через веб-интерфейс не работает.


Помогите пожалуйста как правильно сделать?
22 aleks_default
 
03.06.16
11:18
"Справочники.ЛёвинВА."

жги еще
23 senior
 
03.06.16
11:34
(10) че так?
24 Lavr
 
08.06.16
12:31
Вопрос закрыт. ДенисЧ, lodger,  КМ155, Тролль главный и YFedor благодарю вас.

Модуль Объекта:

Процедура ПередЗаписью(Отказ)
    Если НЕ ПараметрыСеанса.ТекущийПользователь = Сотрудник Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Процедура ПередУдалением(Отказ)
    Если НЕ ПараметрыСеанса.ТекущийПользователь = Сотрудник Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Процедура ПриЗаписи(Отказ)

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


ФормаЭлемента:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Сотрудник) Тогда
    Объект.Сотрудник = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;

ЭтаФорма.ТолькоПросмотр=(Объект.Сотрудник <> ПараметрыСеанса.ТекущийПользователь);

КонецПроцедуры
Ошибка? Это не ошибка, это системная функция.