Имя: Пароль:
1C
 
Ограничение на изменение реквизита документа на уровне ролей
0 drdroid
 
14.02.11
19:54
Создаю новую роль, в ней необходимо установить ограничение на редактирование документа - пользователь с этой ролью должен иметь право изменять в этом документе только один конкретный реквизит, для остальных реквизитов доступ только на чтение. Т.е. он может сохранить/провести документ только если не пытался изменить любой реквизит документа, кроме одного разрешенного.
В книге знаний статья этого не описывает.
1 poligraf
 
14.02.11
19:59
(0) Может я и не прав... Но RLS, например, тебе не поможет. Поскольку он отрабатывает в момент чтения данных, т.е. при открытии. А тебе надо при записи документа - пилить и пилить.
2 drdroid
 
14.02.11
20:05
В RLS есть право "Изменение", думаю можно наложить ограничение на него и запросом сравнить реквизиты до изменения и после, если все реквизиты, кроме указанного, остались без изменений то разрешить изменение иначе запретить, вот только как получить значения реквизитов до изменения и после изменения.
Да и топорный это способ.
3 Defender aka LINN
 
14.02.11
20:30
(2) Ну, расскажи, как ты получишь "реквизиты до изменения и после" в запросе RLS.
4 drdroid
 
14.02.11
21:13
О если б я знал как это сделать, в SQLPlus это сделать легко, а вот в запросе RLS... наверно надо дополнительный регистр с неким подобием версионирования - но это тот еще изврат... Наверно таки ПриЗаписи() или доступность на форме менять...
5 AlexNew
 
14.02.11
21:15
(4) Наверно таки ПередЗаписью()
6 Mitriy
 
14.02.11
21:16
(0) переходи на 8.2...
7 DmitrO
 
14.02.11
21:18
наверно таки ПриОткрытии :)
8 AlexNew
 
14.02.11
21:20
(7) Проверку ПриОткрытии(), или доступность реквизитов?
9 DmitrO
 
14.02.11
21:26
(8)проверку роли или права и управление доступностью реквизитов и поведением стандартных кнопок
(6)а там что, разьве легче?
10 Mitriy
 
14.02.11
21:29
(9) ну там как бы вплоть до реквизитов можно права устанавливать...
11 DmitrO
 
14.02.11
21:35
(10)тока на просмотр ведь, пишется-то все равно весь объект.
12 Mitriy
 
14.02.11
21:38
(11) "пользователь с этой ролью должен иметь право изменять в этом документе только один конкретный реквизит, для остальных реквизитов доступ только на чтение"

я как-то неправильно понял эту фразу из сабжа?
13 Mily
 
14.02.11
21:44
Все реквизиты документа из однго месте? А если наложить запрет на регистр, в котором хранятся этот самый реквизит, например?
14 ILM
 
гуру
14.02.11
21:46
Эх, почему наши доблестные молодые коллеги любят решать всё шашкой, на козе, в валенках, по уши в г...не?

Какую роль вы создаете? Для одного реквизита? А для другого другую роль? Вы случайно не функцию согласования или утверждения реализуете?
Пилите БП и задачи пользователя. На Задачу делайте форму - пусть правит реквизит, и толкает процесс дальше.

Господи, ну когда они наконец-то изучат 1С?
15 ILM
 
гуру
14.02.11
21:49
На краяйняк, добавьте этот реквизит в форме, как переменную нужного типа. И перед закрытием пишите в свой объект.
16 DmitrO
 
14.02.11
21:55
господи, сколько же болтунов на мисте
17 drdroid
 
14.02.11
23:39
(14) Нет, не функция согласования и нет, роль не на один реквизит, и еще раз нет - тут БП городить нецелесообразно.
Роль существенно ограничивает права, по сути для большинства объектов доступ только на чтение, но есть документ в котором необходимо менять статус, при этом надо исключить возможность умышленного/неумышленного изменения других реквизитов. Да, я думаю было бы удобно (и логично) реализовать это ограничениями RLS, но так как RLS не позволяет это сделать без костылей, то останавливаюсь на изменении доступности полей.
18 Jackman
 
15.02.11
01:38
Если РольДоступна(Метаданные.Роли.НужныеПрава) Тогда

   Для каждого тек из  ЭлементыФормы Цикл
       
       Если (ТипЗнч(тек)= Тип("ПолеВвода")) Тогда
           тек.ТолькоПросмотр = Истина;
       КонецЕсли;
       
       Если (ТипЗнч(тек)= Тип("Флажок"))или(ТипЗнч(тек)= Тип("ТабличноеПоле")) Тогда
           тек.Доступность = Ложь;
       КонецЕсли;
   КонецЦикла;

ЭлементыФормы.НужныйРеквизит.ТолькоПросмотр = Ложь;

КонецЕсли;
19 drdroid
 
15.02.11
10:17
(18) Спасибо, примерно так и думал.
20 Kerk
 
15.02.11
10:27
(18) Как я понял это только на форме ограничение...
Остается дырка программного изменения, так же обработка группового изменения (Геморно, но если "вредителю" нужно, он это сделает)...
21 drdroid
 
15.02.11
12:38
(19) Это уже через RLS закрою возможность открытия внешних обработок/отчетов и некоторых внутренних.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший