Имя: Пароль:
1C
1С v8
Роли пользователей
, ,
0 Hunteraf
 
04.05.12
10:58
Добрый день!
На сколько снизится производительность системы если для каждого (почти для каждого) пользователя создать собственную роль?
16 Hunteraf
 
04.05.12
11:30
(15) РЛС пока не пользуем, кроме типовых ограничений которые есть.
17 Hunteraf
 
04.05.12
11:34
Сначала был вариант деления объектов на более мелкие группы, но получается тогда что все равно придется создавать достаточно много мелких ролей и вдобавок для у каждого пользователя тоже будет много ролей, что однозначно приведет к тормозам
18 unregistered
 
04.05.12
11:50
Без конкретных примеров обсуждать или тем более что-то рекомендовать сложно.

Но, ИМХО, ролями должны быть определены общие (укрупненные) права доступа, а все остальные мелкие частности следует решать либо на уровне интерфейса, либо с помощью РЛС при помощи какого-нибудь регистра сведений, позволяющего описать те или иные права для каждого пользователя/группы на каждый объект/группу объектов. Например, как в типовых - НастройкиПравДоступаПользователей (хотя он работает только для справочников Организации и ВнешниеОбработки).
19 Hunteraf
 
04.05.12
12:02
(18) спасибо))
20 ILM
 
гуру
04.05.12
12:05
(0) Что то в вашей консерватории менять надо.
Разбивайте не роли на пользователей, а пользователей на роли. Глядишь и народу меньше будет и скорость ввода данных повысится.
Я бы не лазил в роли и не добавлял бы их понапрасну.
Лучше выведите интерфейсы людям и в нем ограничьте возможность вызова документов и функций.
При запуске вызываете обработку, а в ней уже готовое меню с тремя кнопками: "РКО", "ПКО" и "Выход".
21 Hunteraf
 
04.05.12
12:12
(20) согласен что так не должно быть, но с руководством не поспоришь "нужно четкое распределение", а потом люди приходят с бумажкой на доступ к документу, добавляешь в роли доступ, в результате получаем что вместе с этим человеком получили доступ куча других пользователей, которым бы туда лазить не нужно. Как в данном случае бороться??
насчет интерфейсов немного не согласен, ведь если посмотреть то доступ к объекту можно получить и через другие разрешенные объекты, а тут уже цепочку нельзя отследить (например оставить в интерфейсе только отчет, но к документам и справочникам пользователь может добраться и открыв например регистратор в отчете, а там еще дальше...)
22 Hunteraf
 
04.05.12
12:17
ко всему этому добавляется еще разделение кому то "чтение" нужно, кому то еще на запись, и так чуть ли не с каждым пользователем...
23 unregistered
 
04.05.12
12:42
(21) >> люди приходят с бумажкой на доступ к документу, добавляешь в роли доступ

маразм.
Должно быть: люди приходят с бумажкой на доступ к документу, меняешь роль пользователю на ту, где есть доступ к нужному документу.

То есть не роль должна меняться, набор ролей у пользователя.

PS У меня всё вообще сделано через регистр сведений. Просто добавляю/удаляю/изменяю запись в нём и всё.
24 ИС-2
 
naïve
04.05.12
12:44
(16) РЛС это как раз и в типовых используется. Конфа какая? Интересно как автор решает проблема прав на регистр
25 КМ155
 
04.05.12
12:44
(23) аналогично
Рг сведений + группы + подписка перед записью

смена прав на лету на глазах окуевшей публики
26 Эмбеддер
 
04.05.12
12:45
по логике роли будут тормозить только из-за использования RLS
27 Shurjk
 
04.05.12
12:47
Вот так и становятся люди незаменимыми
28 Hunteraf
 
04.05.12
12:51
(23) ну если добавлять пользователю роль дополнительную, то у него естественно в доступе окажется куча других объектов, что тоже не есть хорошо.
наверна эту проблему реально решить только через РЛС, которым я не владею.
29 Hunteraf
 
04.05.12
12:53
(24) УПП 1.3.23
РЛС в типовых используется по минимуму на мой взгляд.
30 Hunteraf
 
04.05.12
12:56
(23) могли бы поделиться структурой регистра?
31 ИС-2
 
naïve
04.05.12
12:59
(29) но используется же. При чем для каждой записи для определения прав идет обращение к регистру. Интересно как он на транзакциях не валится
32 Hunteraf
 
04.05.12
13:02
(31) так никто и не отрицал)
33 Эмбеддер
 
04.05.12
13:03
а вообще использование РЛС включено? по организациям, клиентам, подразделениям и т.п. - что из этого списка?
34 Hunteraf
 
04.05.12
13:09
(33) включено по организациям и физлицам
35 rcs
 
04.05.12
13:43
(18) делал примерно так же, 3 основные роли ПолныеПрава, Пользователь, ТолькоПросмотр. У роли пользователь права на все что нужно пользователю + ограничение прав на уровне записей по регистру сведений ПраваДоступа, в котором "на лету" регулируется доступ к документам/справочникам/регистрам сведений. В регистре ПраваДоступа задавать доступ как по группам пользователей, так и индивидуально по каждому пользователю.
36 Hunteraf
 
04.05.12
13:59
(35) система не тормозит после такого обильного использования РЛС?
37 rcs
 
05.05.12
06:52
(36) нет, тормозов замечено не было.
38 be-may
 
05.05.12
09:12
(3) небось еще и название роли по фамилии пользователя?
39 1С_Дурик
 
05.05.12
09:59
Штрафовать за использование других документов предлагали?
40 Hunteraf
 
05.05.12
11:25
(39) А за что штрафовать, обычно до исправления не доходит, а вот факт просмотра сложно зафиксировать
41 Hunteraf
 
05.05.12
11:27
попутный вопрос по этой теме, начал изучать РЛС и пробую вариант с регистром сведений, почему условие на запись срабатывает а такое же условие на чтение не срабатывает, т.е. записать я не могу а вот открыть документ пожалуйста
42 Hunteraf
 
05.05.12
11:28
ОтчетПроизводстваЗаСмену ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1
   1
ИЗ
   РегистрСведений.ПраваДоступа КАК ПраваДоступа
ГДЕ
   ПраваДоступа.Пользователь = &ТекущийПользователь
   И ПраваДоступа.Чтение)
43 rcs
 
05.05.12
11:32
(42) Так то надо ещё измерение в регистре, где будет записан строковое представление объекта метаданных
44 Hunteraf
 
05.05.12
11:33
до этого я пока не дошел, начал с малого есть тока пользователь и ограничение на чтение и на запись
45 Hunteraf
 
05.05.12
13:25
Кто нибудь знает ответ на (42)?
46 Hunteraf
 
10.05.12
14:06
А кто нибудь может подсказать как в условии ограничения доступа получить тип текущей таблицы (что то типа Документ.ОтчетПроизводстваЗаСмену) для дальнейшего соединения с регистром сведений ?
47 rcs
 
12.05.12
06:58
(46) Насколько я понял, это невозможно. Я делал шаблон и передавал имя текущей таблицы в него параметром.
48 5 Элемент
 
12.05.12
09:52
Количество ролей не влияет на производительность.
Если используете РЛС то разные РЛС складываются по ИЛИ и будут тормоза.
Одинаковые не складываются - тормозов не будет.
49 dmpl
 
12.05.12
09:54
(0) Чем меньше у пользователя ролей - тем быстрее работает 1С.
50 5 Элемент
 
12.05.12
09:58
(49) и чем меньше пользователей - тем быстрее работает 1С
51 Hunteraf
 
14.05.12
10:42
(47) я тоже не нашел нигде как это делается и сделал так же, передавал текущую таблицу в качестве параметра.
52 Hunteraf
 
14.05.12
10:46
(48) что значит "одинаковые", если у меня есть шаблон и на все объекты я использую этот шаблон ограничений, то это считается "одинаковыми"?
53 ptrtss
 
14.05.12
10:47
(0) Лучше наделайте мелких ролей (например - "Авансовый отчет: чтение") и раздавайте пользователям их комбинации
54 Hunteraf
 
14.05.12
10:49
(53) тогда у каждого пользователя будет очень много ролей, что точно приведет к тормозам системы.
55 ptrtss
 
14.05.12
10:49
+(53) у-у... дата первого поста-то какая
56 ptrtss
 
14.05.12
10:49
(54) Откуда инфа?
57 dmpl
 
14.05.12
10:50
(47)(51) Штатные программисты 1С тоже ничего другого не придумали...
58 dmpl
 
14.05.12
10:52
(56) Проверено на рабочей базе - если много ролей у пользователя, да еще в каждой есть ограничение на уровне записей - начинает жутко тормозить даже в клиент-серверном варианте. Видимо, сервер 1С общий запрос к ролям делает, и выбирает все доступные пользователю роли.
59 Hunteraf
 
14.05.12
11:01
(56) в этой ветке уже говорилось про это и сам я читал не помню уже где
60 ptrtss
 
14.05.12
11:04
(58) >> если много ролей у пользователя, да еще в каждой есть ограничение на уровне записей

если много ролей у пользователя, и в каждой есть ограничение на уровне записей

Вот в это охотно верю
61 ptrtss
 
14.05.12
11:05
+(60) Но только если сделать микро роли, то РЛС-ок на одни и те же объекты от разных ролей не будет
62 Hunteraf
 
14.05.12
11:07
(61) тогда представь скока будет ролей, если объектов в УППшке порядка 1000 наверна наберется + для каждого объекта есть как минимум чтение и запись + для некоторых добавление и изменение
63 Hunteraf
 
14.05.12
11:09
(61) я не уверен что 150 пользователей (у каждого из которых будет по 30-50 ролей) будут комфортно одновременно работать
64 ptrtss
 
14.05.12
11:13
(62) У вас на предприятии используется 1000 объектов?
65 dmpl
 
14.05.12
11:14
(61) А цеплять всю таблицу (со всеми ограничениями) для каждой роли все равно будет. Более перспективным выглядит 1 роль, которая по регистру сведений определяет доступность объектов для данного пользователя. Да и удобнее таким образом доступ раздавать.
66 Hunteraf
 
14.05.12
11:17
(64) нет, ролей будет предостаточно все равно
67 Hunteraf
 
14.05.12
11:21
(65) я так сейчас и пробую реализовать с регистром сведений. Еще столкнулся с проблемой что например при проведении документа он может например записать данные в половину регистров, а в другие регистры в которые нет прав записать ничего не пишет и самое главное не выдает сообщений при этом, может как то можно сделать чтобы выдавалось сообщение что все таки прав недостаточно?
68 dmpl
 
14.05.12
11:32
(67) Может где попытка/исключение стоит, которое молча проглатывает ошибку?
69 Hunteraf
 
14.05.12
11:53
(68) да, видимо где то стоит исключение, попробовал записать напрямую, выдает ошибку
70 Hunteraf
 
14.05.12
11:58
а вообще существует какой нибудь анализатор куда объект пишет и откуда читает данные (какие объекты он использует при своей работе)?
71 Hunteraf
 
14.05.12
13:11
и еще вопрос, можно ли как то ограничить доступ на интерфейсы, потому что получается одна общая роль которая имеет доступ ко всем интерфейсам, а хочется еще запретить доступ на просмотр некоторых отчетов и регистров.
72 Hunteraf
 
14.05.12
13:11
+ (71) пока только идея создать роли для доступа к интерфейсам.
73 dmpl
 
14.05.12
13:33
(71) Можно убрать панельку смены интерфейса и назначать нужный. Либо перехватывать событие переключения интерфейса и отказывать при необходимости.
74 Hunteraf
 
14.05.12
13:45
(73) а какое событие перехватывать?? что нигде не могу найти подобного
75 rcs
 
14.05.12
14:17
(67) На регистры накопления, бухгалтерии и зависимые регистры сведений я РЛС на запись не делал, считая что достаточно РЛС на документы, которые будут делать движения по ним.
(71) Доступ на просмотр регистров решается РЛС на чтение в этих регистрах, так как отсутствие в интерфейсе не означает невозможности просмотра данных.
С доступом к отчетам/обработкам можно поступить так:
1. Во всех отчетах/обработках в процедуре ПриОткрытии() в самом начале вставляем вызов глобальной процедуры из общего модуля (это можно сделать автоматизированно, выгрузив тексты модулей, обработав их программно обработкой, а потом загрузив обратно).
2. В регистр сведений где уже хранятся права на доступ к справочникам/документам запихиваем ещё и права на доступ к отчетам/обработкам.
3. В процедуре общего модуля проверяем по регистру сведений право доступа к отчету/обработке, если прав нет, Отказ=Истина
76 dmpl
 
14.05.12
15:42
(74) Надо в панельке переключения интерфейса выбрать конкретный интерфейс и в его свойствах изменить действие на вызов своей экспортной процедуры из общего модуля, которая проверит права, а затем программно переключит интерфейс, если права есть.
77 155153144627
 
16.05.12
14:26
Тоже поставили аналогичную задачу, по правам доступа к документам, доступа к документам по признакам контрагентов и др.

Насколько правильно будет создать регистр сведений ПраваДоступаКДокументам с измерениями:
- Пользователь (спр.пользователи);
- Объект (перечисление)
Ресурсы:
- Чтение (булево)
- Запись (булево).
Объект как перечисление с наименованиями всех документов.

Почему перечисление? Думается будет легче в запросах органичения доступа сравнивать, например:
РегистрСведений.ПраваДоступаКДокументам.Объект = Значение(Перечисление.ДокументРеализацияТоваровУслуг).

Может я не прав?
78 155153144627
 
16.05.12
14:31
Документов 355 и все внести в перечисление, чтобы в будущем не править. Или же внести основные виды документов, которых около 20.
79 rcs
 
16.05.12
14:56
(77) В каких запросах? Если в тексте ограничений РЛС, то в случае перечисления нельзя будет воспользоваться шаблонами, придется у каждого объекта полностью писать текст запроса. Если в запросах модулей, то как вы будете например ограничивать чтение в журнале документов?
80 155153144627
 
16.05.12
15:02
(79)
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
Где
   (Выбрать первые 1
      РегистрПрав.Чтение
    Из                            
      РегистрСведений.ПраваДоступа Как РегистрПрав
    Где
      РегистрПрав.Пользователь = &ТекущийПользователь
      РегистрПрав.Объект = Значение(Перечисление.СписокОбъектовМД.ДокументABCКлассификацияПокупателей)

Вот такой не будет работать?
81 155153144627
 
16.05.12
15:04
Вот так вернее:

Где
   (Выбрать первые 1
      РегистрПрав.Чтение
    Из                            
      РегистрСведений.ПраваДоступа Как РегистрПрав
    Где
      РегистрПрав.Пользователь = &ТекущийПользователь
      РегистрПрав.Объект = Значение(Перечисление.СписокОбъектовМД.ДокументABCКлассификацияПокупателей)


Ну да собрался во всех прописать.
Про шаблоны почитаю.
82 155153144627
 
16.05.12
17:15
(79) Вопрос такой, а как в общих журналах, например, Документы Контрагентов, ты определял что этот тип документов пользователь имеет право видеть?
Имя метаданных в ТекущейТаблице не получить же...
Если не ставить ограничения будут строки с "Объект не найден".
83 rcs
 
17.05.12
08:04
(81)(82) Придумал способ как поступить с журналами, а попутно как обойтись без передачи имени текущей таблицы в шаблон.
В регистре сведений делаем реквизит ОбъектДоступаПустаяСсылка с составным типом нужных ссылок или с "Любая ссылка". Заполняем этот реквизит соответствующими пустыми ссылками.
Делаем такой шаблон ограничения доступа на чтение:

ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица        
ГДЕ 1 В
       (ВЫБРАТЬ ПЕРВЫЕ 1
           1
       ИЗ
           РегистрСведений.ПраваПользователей КАК ПраваПользователей
       ГДЕ
           ПраваПользователей.Пользователь = &ТекущийПользователь
           И ТИПЗНАЧЕНИЯ(ТекущаяТаблица.Ссылка) = ТИПЗНАЧЕНИЯ(ПраваПользователей.ОбъектДоступаПустаяСсылка)
           И ПраваПользователей.Чтение)

Все работает без передачи имени текущий таблицы в шаблон! Для журналов тоже работает, если есть права на чтение только определенных видов документов, то только эти документы и будут показаны.
Единственный вопрос - производительность, тут надо проверять, не будет ли ТИПЗНАЧЕНИЯ тормозить.
84 rcs
 
17.05.12
08:09
(83) Я делал ещё в 8.1, там нет ТИПЗНАЧЕНИЯ() в запросах.
85 155153144627
 
17.05.12
15:38
(83) По твоему варианту РЛС отрабатывает как-то странно, то покажет, то не покажет документы.

ТекущаяТаблица ИЗ Документ.ЗаказПокупателя КАК ТекущаяТаблица
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваПользователей
   ПО ТИПЗНАЧЕНИЯ(ТекущаяТаблица.Ссылка) = ТИПЗНАЧЕНИЯ(ПраваПользователей.ОбъектМетаданных.ТипМетаданных)
ГДЕ (ПраваПользователей.Пользователь = &ТекущийПользователь) И (ПраваПользователей.Чтение)


Вот этот запрос работает на ура в доках и журналах.
Но все равно тебе большое спасибо, что подсказал как сравнивать типы документов.

Сейчас пропишу для записи, удаления и создания и вроде все :-)
Останется только обработку сделать для заполнения начальных прав и копирования прав другого пользователя.
86 155153144627
 
17.05.12
16:42
А нет никаких способов прописать шаблон сразу во все документы?
87 155153144627
 
17.05.12
19:43
Почти 4 часа втыкал 4 шаблона в документы. Все работает.

Тут же появлились новые хотелки, отображение контрагентов по организации и по признаку :-)
88 Hunteraf
 
18.05.12
08:26
(87) зачем 4 шаблона, одного вполне хватает, просто нужно чтение, добавление, изменение, удаление передать как параметр в шаблон
89 dmpl
 
18.05.12
08:29
(88) 1С так не делает почему-то, на чтение и на запись у них разные шаблоны.
90 Hunteraf
 
18.05.12
08:32
(89) а логика в чем?
91 Hunteraf
 
18.05.12
09:14
(89) я вижу различия только в том что, на запись у них в ограничении указано дополнительное условие
НастройкиПравДоступаПользователей.Запись = ИСТИНА
92 155153144627
 
18.05.12
09:38
(91) Чтение - это что пользователь увидит информацию, и если нет других ограничений может делать с ней что хочет, шаблоном на запись я разрешаю-запрещяю сохранять изменения. Удаление и создание соответственно. Надо думаю еще и проведение добавить, для случая когда в док добавляют справочную информацию, типа номер транспортной накладной.
93 Hunteraf
 
18.05.12
09:47
(92) вы действуете по принципу "что не запрещено то разрешено"??
94 155153144627
 
18.05.12
10:10
Только вот когда пользователю запрещена запись, система выдает неудобоваримое: "У пользователя недостаточно прав на исполнение операции над базой данных."

(93) Наоборот, если не разрешено, то запрещено.
95 155153144627
 
18.05.12
10:13
(93) Если пользователю в регистре ничего не разрешить, он не видить ни одного документа.
96 Hunteraf
 
18.05.12
10:21
(95) такой подход считается более правильным
97 155153144627
 
18.05.12
10:26
(96) Ну и легче назначать права, если пользователю разрешить 1 док, то досточно добавить 1 запись в регистр сведений, а на 350 запретительных :-)
98 Hunteraf
 
18.05.12
10:34
(87) я еще сделал справочник с шаблонами ограничений, где прописываю шаблон например документ и зависимые объекты от этого документа и есть возможность заполнять регистр сведений по шаблону
99 Hunteraf
 
18.05.12
10:39
+(98) пока только проблема в том, как выловить все эти зависимые объекты (к примеру документ в процессе расчета берет данные из РС.ЦеныНоменклатуры) и давать права не только на документ но и попутно на чтение РС
100 155153144627
 
18.05.12
11:04
(99) А не проще дать полный доступ, на галочку просмотр назначить РЛС у всех регистров сведений-накоплений-бухгалтерии-расчета, программа будет с регистрами работать, а пользователь просмотреть содержимое не сможет.
А на просмотр выдавать разрешение тем кому надо или можно.
101 155153144627
 
18.05.12
11:07
(99) С твоим подходом "давать права на зависимые" ты только проблем поимеешь, если что-то пропустишь. Или же дотошно штудировать все модули на предмет использования регистров...
102 155153144627
 
18.05.12
11:09
Опять же как получать имя таблицы регистра сведений?...
103 155153144627
 
18.05.12
11:11
Только щас заметил Ограничение на просмотр не устанавливается :-) Так что мой способ не подойдет...
104 Hunteraf
 
18.05.12
11:12
(100) вот весь прикол в том что на просмотр РЛС нельзя сделать, РЛС работает для операций над базой данный, т.е. на чтение, добавление, изменение, удаление... на интерактивные РЛС не подходит
105 Hunteraf
 
18.05.12
11:14
+(104) если только прописать ограничение на просмотр по принципу ограничений на отчеты как предлагали в (75)
106 Hunteraf
 
18.05.12
11:16
но читать данные документ может не только из РС но и из других документов, справочников, так что вылавливать зависимые объекты все равно как то придется
107 rcs
 
18.05.12
12:26
В 8.2 можно у документа установить флажок "Привилегированный режим при проведении" и не надо отслеживать зависимости.
108 Hunteraf
 
18.05.12
13:37
(107) не совсем спасет наверное, не все же выполняется в привилегированных модулях
109 155153144627
 
18.05.12
14:16
Я решил на все РС и РН дать права на чтение-изменение, без просмотра.
110 155153144627
 
18.05.12
14:17
Блин, ну почему ж в 1С решили на просмотр не делать РЛС?...
111 Hunteraf
 
18.05.12
14:21
(110) потому что в принципе нельзя такого сделать
112 rcs
 
21.05.12
08:04
(108) Вроде бы то что вызвано из привилегированного модуля, тоже выполняется в привилегированном режиме. По крайней море с общими модулями так.
113 155153144627
 
28.05.12
13:23
(111) Привет.
С документами я разобрался, по признакам у пользователя отбираются доступные пользователю значения в параметр сеанса и по этому параметру показываются или нет элементы справоничка контрагенты и документы с их участием.
А вот как сделать что-то подобное с отчетами? Ты этим занимался?
114 Hunteraf
 
29.05.12
12:53
(113) В общем на доступ к отчету нужно переделывать событие ПриОткрытии в форме как предлагали в (75), а чтобы в отчет попадали только разрешенные данные то в запросе нужно указывать "ВЫБРАТЬ РАЗРЕШЕННЫЕ", иначе вылетит в ошибку.
115 155153144627
 
29.05.12
13:03
(114) Ясно, спасибо.

В докумнентах так и сделал, РЛС только на показать или нет документ, а разрешения в ПередОткрытием(), ПередЗаписью(), ОбработкаПроведения() прописал.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший