|
Поясните как RLS справляется с датой запрета редактирования | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
24.03.06
✎
16:32
|
Пусть в переменной ДокументСсылка у меня лежит документ "Приходная накладная" от 01.01.2004 года, я пишу:
Об=Документ.ПолучитьОбъект(); Об.Дата='20050101'; //01.01.2005 Об.Записать(); Дата запрета редактирования 01.07.2004 года. Как RLS сможет проконтролировать, что документ изменять нельзя, ведь хотя новая дата и разрешена к редактированию, старая версия объекта лежит за пределеами. И есть ли разница с тем, что пользователь так же перенесет документ из закрытого периода в новый, поменяв дату. Смутные сомнения меня терзают, можно ли такое сделать? |
|||
1
ТелепатБот
гуру
24.03.06
✎
16:32
|
||||
2
tsr
24.03.06
✎
16:43
|
А ты не пробовал открыть документ в типовой и посмотреть, как там это реализованно? Если нет, даю наводку. В RLS условие ставиться на изменение документа, добавление, удаление и просмотр. Значит изменить ранее записанный документ не даст
|
|||
3
Квери Аналайзер
24.03.06
✎
16:53
|
(0) Мда... все ж ты далеко не Гений 1С...
|
|||
4
Гений 1С
гуру
24.03.06
✎
16:55
|
а когда срабатывает RLS на изменение - при вызове ПолучитьОбъект или при вызове Записать? И RLS отрабатывает по старой версии или по новой версии?
|
|||
5
Гений 1С
гуру
24.03.06
✎
16:56
|
(2) В типовую лень лезть, интересует принцип
|
|||
6
Гений 1С
гуру
24.03.06
✎
16:57
|
(2) другая ситуация - у меня документ от 01.01.2005 года, а я его записываю на 01.01.2004. RLS сработает или нет?
|
|||
7
Гений 1С
гуру
24.03.06
✎
16:57
|
(3) А ты далеко не Квери Аналайзер, гыыгы
|
|||
8
Гений 1С
гуру
24.03.06
✎
17:36
|
(8) ну че, никто типовые не юзал что ли?
|
|||
9
Vozhd
24.03.06
✎
17:39
|
(6) А потратить 5-10 минут и проверить не судьба?
|
|||
10
Гений 1С
гуру
24.03.06
✎
17:41
|
(10) Здесь важен принцип - можно такое сделать или нет через RLS и сделали ли это в типовых. Ну если никого умного не найдется, кто УПП юзает, придется конечно самому лезть. Просто я "ненавижу" RLS и не люблю его юзать.
|
|||
11
Vozhd
24.03.06
✎
17:42
|
(10) Не любите - не "юзайте". Как будто Вас кто силой заставляет его использовать...
|
|||
12
Гений 1С
гуру
24.03.06
✎
17:46
|
(11) ну я и за проезд платить не люблю, гыгыыгы.. :)
|
|||
13
Vozhd
24.03.06
✎
17:52
|
(10) А как бы Вы организовали на уровне платформы ограничение на изменение данных?
|
|||
14
Гений 1С
гуру
24.03.06
✎
18:01
|
(13)
Почему на уровне платформы? В процедуре ПередЗаписью(): Дата1=Объект.Ссылка.ПолучитьОбъект().Дата; Дата2=Объект.Дата; Если Дата1<>Неопределено и Дата1<=ДатаЗапретаРедактирования ИЛИ Дата2<>Неопределено и Дата2<=ДатаЗапретаРедактирования Тогда Отказ=истина; Возврат; КонецЕсли; Неопределено - на случай нового документа. :) |
|||
15
Гений 1С
гуру
24.03.06
✎
18:02
|
(13) сдается мне, что RLS не обрабатывает одну из этих ситуаций
|
|||
16
Гений 1С
гуру
27.03.06
✎
17:02
|
Не поленился, проверил, работает одинаково и для случая А и для случая Б.
Блин, никак не могу понять, получается что RLS на изменение срабатывает и с объектом в базе данных, а потом и с объектом, который записывается, т.е. дважды? А вот скажем если бы я хотел разрешить одну из ситуаций, то кранты? То бишь я не смог бы различить объект из БД и объект записываемый. Вот RLS на изменение, RLS на чтение пустой: ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО ПоступлениеТоваровУслуг.Организация = ПраваДоступаПользователей.ОбъектДоступа И (ПраваДоступаПользователей.ОбластьДанных = &ОбластьДанныхБухгалтера) И (ПраваДоступаПользователей.Пользователь В (&ГруппыТекущегоПользователя)) И (ПраваДоступаПользователей.Запись = ИСТИНА) ГДЕ ВЫБОР КОГДА ПоступлениеТоваровУслуг.ОтражатьВБухгалтерскомУчете И ПоступлениеТоваровУслуг.ОтражатьВУправленческомУчете И ПоступлениеТоваровУслуг.Проведен ТОГДА (НЕ 1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ 1 ИЗ РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных ГДЕ ГраницыЗапретаИзмененияДанных.Организация = ПоступлениеТоваровУслуг.Организация И ГраницыЗапретаИзмененияДанных.Роль = &ОбластьДанныхБухгалтера И ПоступлениеТоваровУслуг.Дата < ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений)) И (НЕ 1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ 1 ИЗ РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных ГДЕ ГраницыЗапретаИзмененияДанных.Организация = &ПустаяОрганизация И ГраницыЗапретаИзмененияДанных.Роль = &ОбластьДанныхБухгалтера И ПоступлениеТоваровУслуг.Дата < ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений)) КОГДА ПоступлениеТоваровУслуг.ОтражатьВБухгалтерскомУчете И ПоступлениеТоваровУслуг.Проведен ТОГДА (НЕ 1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ 1 ИЗ РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных ГДЕ ГраницыЗапретаИзмененияДанных.Организация = ПоступлениеТоваровУслуг.Организация И ГраницыЗапретаИзмененияДанных.Роль = &ОбластьДанныхБухгалтера И ПоступлениеТоваровУслуг.Дата < ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений)) КОГДА ПоступлениеТоваровУслуг.ОтражатьВУправленческомУчете И ПоступлениеТоваровУслуг.Проведен ТОГДА (НЕ 1 В (ВЫБРАТЬ РАЗЛИЧНЫЕ 1 ИЗ РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных ГДЕ ГраницыЗапретаИзмененияДанных.Организация = &ПустаяОрганизация И ГраницыЗапретаИзмененияДанных.Роль = &ОбластьДанныхБухгалтера И ПоступлениеТоваровУслуг.Дата < ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений)) ИНАЧЕ ИСТИНА КОНЕЦ |
|||
17
Vozhd
27.03.06
✎
17:50
|
(16) Да, RLS на изменение срабатывает два раза.
|
|||
18
Гений 1С
гуру
27.03.06
✎
17:53
|
(17) то бишь получается, разрешить переносить пользователю документы я не смогу сделать (чисто теоретически) :)
|
|||
19
Гений 1С
гуру
27.03.06
✎
17:53
|
(17) т.е. в RLS я не могу отличить хранимый объект от его новой версии, так?
|
|||
20
Vozhd
27.03.06
✎
17:55
|
(19) Отличить версии друг от друга нельзя.
(18) Разрешить переносить можно. Но для этого придется делать отдельную процедуру в привилегированном модуле. |
|||
21
Гений 1С
гуру
27.03.06
✎
18:10
|
(20) гыгыгы... Мораль: в модуле я могу сделать более широкую проверку на права доступа, чем в RLS. :)
|
|||
22
Конь в пальто
27.03.06
✎
18:11
|
(21) мораль: если у человека понос мысли, ему ничего не поможет!)
|
|||
23
Гений 1С
гуру
27.03.06
✎
18:17
|
(22) мораль - если чего-то не любишь, нужно искать все его недостатки, гыгыгы...
|
|||
24
Гений 1С
гуру
27.03.06
✎
18:18
|
Ну я не буду напоминать, что в RLS нельзя определить ситуацию, например, когда сбрасывается/устанавливается флажок (реквизит объекта), поэтому для себя я давно решил - лучше использовать проверку на запись в модуле, чем RLS
|
|||
25
Гений 1С
гуру
27.03.06
✎
18:18
|
(22) вот ты конь в пальто, любишь RLS?
|
|||
26
mikecool
27.03.06
✎
18:19
|
а что такое RLS?
|
|||
27
Конь в пальто
27.03.06
✎
18:20
|
(25) я равнодушен к RLS
|
|||
28
Vozhd
27.03.06
✎
18:22
|
(21) Так вроде никто и не обещал безграничных возможностей. Надо лишь искать варианты наиболее полно использовать то, что есть и не особо углубляться в извраты.
|
|||
29
Гений 1С
гуру
27.03.06
✎
18:31
|
(28) гыгыгы. Не пойму, чем RLS на измение лучше кода на языке 1С?
Ну не считая того, что он выполняется на сервере (разница между клиентом и сервером 1%), то где выгода? Может быть в RLS на изменение нужно было позволить писать сразу код на языке 1С, как вариант и все было бы пучком. :) Вот RLS на чтение другое дело - там обрабатывается массив записей, а не одна запись. |
|||
30
PR
27.03.06
✎
19:03
|
(21) Есть ситуации, когда только RLS может красиво решить проблему
|
|||
31
Vozhd
27.03.06
✎
20:02
|
(29) Как без RLS-а реализовать ограничение доступа к данным, чтобы подключаемые обработки не могли прочитать секретные данные?
|
|||
34
Гений 1С
гуру
28.03.06
✎
12:40
|
(31)
гыгыгы... подключать обработки только администратором. :) К тому же в (31) речь идет об RLS на чтение, а не на изменение RLS на чтение имеет место жить по причине быстродействия. (30) например? (31) кстати в движке форума PHPBB и мисты RLS не используются (имеется ввиду ограничение на конкретные таблицы, есть только ограничение на функции, которые может запускать пользователь). И ничего, секретные данные не теряются. :) |
|||
35
Гений 1С
гуру
28.03.06
✎
12:43
|
(31) интересно, как бы выживали интернет-порталы, если бы любой юзер мог бы прийти туда со своей внешней обработкой, запустить ее и делать что хошь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |