13.10.2004, 20:19 | #1 |
Участник
|
Разграничение прав доступа на складские операции
Добрый день!
Подскажите пожалуйста как можно ограничить права доступа кладовщиков в переносах только на свой склад. Ситуация такая: кладовщик должен иметь возможность создавать и разносить переносы со своего склада на другие, и наоборот, а проводить Регистрацию/Комплектацию только по своему складу. (надо чтобы без ведома кладовщика никто не мог оформить приход или расход товара по его складу) |
|
13.10.2004, 23:22 | #2 |
Участник
|
1 уровень: rls
2 уровень: программировать проверки. validateWrite для этого и создан других вариантов, к сожалению, нет. |
|
14.10.2004, 14:20 | #3 |
Участник
|
Спасибо за ответ!
1-й метод не подходит, т.к. rls во первых не запрещает писать, а во вторых видеть как раз надо все.
есть правда еще вариан закрывать везде на формах соответствующие кнопки программно - но это вообще непонятный объем работы. Спасибо, похоже вариант с перекрытием validateWrite в моем случае самый подходящий |
|
14.10.2004, 14:23 | #4 |
Участник
|
А ограничить доступ на уровне записей не пробывали?
__________________
Юля |
|
14.10.2004, 14:32 | #5 |
Участник
|
Спасибо за совет, но:
ограничить доступ на уровне записей не подходит по нескольким причинам: - ограничение доступа на уровне записей не запрещает писать вообще, - видеть надо все, здесь ограничения не нужны. |
|
14.10.2004, 15:14 | #6 |
Участник
|
Re: Спасибо за ответ!
Цитата:
Изначально опубликовано mav
1-й метод не подходит... Для "быстрого" решения достаточно применить 1й уровень. Для "полного" надо бы применять оба уровня. В зависимости от того, сколько уровней реализуется, будут оцениваться затраты времени, сил и денег. |
|
14.10.2004, 15:18 | #7 |
Участник
|
Цитата:
Изначально опубликовано Hamster
в классе InventUpd_Registered в методе updateNow или updateRegister* делать проверку на кладовщика / склад. Я бы начал с validateWrite на таблице InventTrans. Все равно все складские проводки так или иначе попадают туда. Затраты программистов будут меньше. Но пользователи получат сообщение об ошибке очень поздно. Им будет не очень удобно. Но зато решение будет быстрым. После того, как будет запущено и отлажено быстрое решение (если останутся силы, время и деньги) можно будет улучшать эргономику, создавая validateWrite на других таблицах/классах. |
|
14.10.2004, 16:18 | #8 |
Участник
|
а для того, чтобы этот самый validateWrite проверялся, его вызов надо еще повставлять куда-то?
|
|
14.10.2004, 17:00 | #9 |
Модератор
|
Автоматом вызывается не таблице, если не был принудительно перекрыт на форме (дурной тон), или не был вызван doUpdate (совсем уж отвратительный тон).
Я еще перекрывал lookup (что бы не видели лишнего) и validate на контроле (что бы вводили только значения из списка, предоставляемого lookup). Но это позволит решить трабл только на форма. Если же подправить VW на таблице - тогда глобально. С Уважением, Георгий |
|
14.10.2004, 17:11 | #10 |
NavAx
|
А лучше всего и lookup (для удобства юзера) и validateWrite (на всякий случай).
__________________
Isn't it nice when things just work? |
|
14.10.2004, 17:15 | #11 |
Участник
|
странно.
перекрыл этот validateWrite на таблице InventTrans. тыкаюсь в разных формах проводить регистрации/комплектациии. validateWrite не срабатывает (функционал стандартный, никто ничего не менял еще) в чем может быть причина? |
|
14.10.2004, 17:20 | #12 |
NavAx
|
продемонстрируйте код, пожалуйста
__________________
Isn't it nice when things just work? |
|
14.10.2004, 17:32 | #13 |
Модератор
|
1) Перекрывайте на validateWrite ТАБЛИЦЕ!
2) Хм... а, случаем, та нигде doInsert/Update нету? Что-то мне такое попадалось в коде.. С Уважением, Георгий |
|
14.10.2004, 17:41 | #14 |
Участник
|
Цитата:
Изначально опубликовано macklakov
А лучше всего и lookup (для удобства юзера) и validateWrite (на всякий случай). lookup лучше как раз оставить RLSу. |
|
14.10.2004, 17:43 | #15 |
Участник
|
насчет doinsert/doUpdate.
Такие места сейчас в коде есть. Но сейчас этим методы не влияют на работу юзера. Эти методы вызываются глубоко внутри и служат целям оптимизации. Если же вы сами используете doinsert/doUpdate... Ну... вы себе сильно осложняете жизнь. И не только в деле ограничения прав доступа. Если вы сами используете doinsert/doUpdate, то должны понимать, что все заботы о целостности базы ложатся на вас. |
|
14.10.2004, 17:43 | #16 |
Модератор
|
Я имел в виду, если не использовать RLS.
У себя я сделал именно так, что позволило отказаться от RLS. Пока - все работает. К тому же, RLS не работает на запись, так что учтите! Все равно перекрывать vw на таблице придеться. Не то пользователь впишет руками - и проведет-таки на ненужный склад. С Уважением, Георгий. |
|
14.10.2004, 17:47 | #17 |
Модератор
|
2All: да побойтесь бога - validateWrite() на таблице не вызывается, если INSERT/UPDATE делается из кода. А много вы знаете форм, в которых InventTrans руками редактируется?
|
|
14.10.2004, 17:47 | #18 |
Модератор
|
Цитата:
Изначально опубликовано mazzy
Если вы сами используете doinsert/doUpdate, то должны понимать, что все заботы о целостности базы ложатся на вас. С Уважением, Георгий. |
|
14.10.2004, 17:51 | #19 |
Модератор
|
Цитата:
Изначально опубликовано Vadik
validateWrite() на таблице не вызывается, если INSERT/UPDATE делается из кода. А много вы знаете форм, в которых InventTrans руками редактируется? С Уважением, Георгий. |
|
14.10.2004, 17:53 | #20 |
Участник
|
вот теперь понятно, всем спасибо!
|
|