|
|
|
Ограничение на изменение реквизита документа на уровне ролей | ☑ | ||
|---|---|---|---|---|
|
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 закрою возможность открытия внешних обработок/отчетов и некоторых внутренних.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |