Имя: Пароль:
1C
 
Исполнение кода в превилегированном режиме
0 kuromanlich
 
25.12.15
15:08
Обнаружил глюк с правами пользователей при изменении параметров самого пользователя в превилегированном режиме (либо модуль, либо принудительно) иногда у пользователя появляются полные права.
"Интересная архитектура" у 1С...
1 Лефмихалыч
 
25.12.15
15:09
в привилегированном режиме ни какие права не проверяются. Он по этому так и называется.
2 Stim
 
25.12.15
15:10
>> в привилегированном режиме иногда у пользователя появляются полные права.

действительно, странно. Обычно прав становится меньше
3 kuromanlich
 
25.12.15
15:10
(1) я плохо описал - видимо не понятно. если изменить допустим интерфейс программно у пользователя в превилегированном режиме, то у него могут из неоткуда появиться полные права
4 kuromanlich
 
25.12.15
15:11
(2) угу, у меня и такое было, полный слет прав, но это на 8.2, при таком же подходе кстати
5 Лефмихалыч
 
25.12.15
15:11
(3) щито?.. понятнее не стало ни на сколько
6 FIXXXL
 
25.12.15
15:11
(3) снимать режим не забыл?
7 kuromanlich
 
25.12.15
15:13
(6) нет конечно. прикол в Пользователь.Записать() внутри превилегированного участка кода или модуля
8 kuromanlich
 
25.12.15
15:14
по идее можно наверное както хакать так 1С )
9 Лефмихалыч
 
25.12.15
15:17
(7) я не верю в это
10 kuromanlich
 
25.12.15
15:18
(9) сам в шоке )
11 Enterprise
 
25.12.15
15:19
А я до сих пор не понял, что в этой ветке происходит...
12 Stim
 
25.12.15
15:19
(8) старый порванный баян

http://catalog.mista.ru/public/182849/
13 kuromanlich
 
25.12.15
15:22
(12) я не об этом, воспроизвести приписывание полных прав пользователю без исполнения кода в 1с
14 Лефмихалыч
 
25.12.15
15:26
(13) полные права - это просто роль. Причем она есть не в каждой конфигурации. Не может платформа выборочно сама принимать решение подставить пользователю роль с именем ПолныеПрава - у нее мозгов нет.
15 Cyberhawk
 
25.12.15
15:28
(7) "прикол в Пользователь.Записать() внутри превилегированного участка кода или модуля"
1. Речь о прикладном пользователе (справочник) или пользователе ИБ?
2. В какой конфигурации и на какой платформе?
16 kuromanlich
 
25.12.15
15:33
(15) 1) пользователь ИБ
2) бух 2.0
17 kuromanlich
 
25.12.15
15:34
(14) может это "основная роль" или первая попавшаяся с административными правами
18 Лефмихалыч
 
25.12.15
15:38
(17) требую нотариально заверенных скриншотов!
19 kuromanlich
 
25.12.15
15:42
(18) заморочусь пошлю скрин из ЖР, 3 записи подряд на изменение пользователя ИБ одним сеансом в одну секунду с разным составом ролей
20 Лефмихалыч
 
25.12.15
15:43
(19) этим ты ни чего не докажешь.
21 kuromanlich
 
25.12.15
15:43
(20) + кусок исполняемого кода
22 Лефмихалыч
 
25.12.15
15:44
короч - сможешь воспроизвести, показывай видео. До тех пор - это всё свистёжь
23 Cyberhawk
 
25.12.15
15:50
Проверил - не воспроизводится
Код покажи
24 ЧеловекДуши
 
25.12.15
15:55
(0) Как это глюк?
Так то При включение привилегированных прав, соизволь при выходе из функции их отменить :)

...
Так что все это от рУк писателя, а не 1С :)
25 aka AMIGO
 
25.12.15
15:55
"Появляются полные права" - бездоказательно.
Если ролей несколько, права по ним взаимодействуют по "ИЛИ", если есть хотя-б один True - будет разрешено, несмотря на запрет в других ролях данного юзера © Миста.
26 ЧеловекДуши
 
25.12.15
15:55
(23) Да он поди навтыкал везде вызов. А у ней как, каждый вызов должен быть завершен :)
27 ЧеловекДуши
 
25.12.15
15:57
(4) Вы пишите внятно...

1. Версия платформы
2. Версия конфигуратора
3. Режим работы, сдается Толстый клиент :)
28 ЧеловекДуши
 
25.12.15
15:57
+ 4. SQL или файловая БД
29 Лефмихалыч
 
25.12.15
15:59
(24) оно само отключается при выходе из области видимости, в которой режим был включен
30 kuromanlich
 
25.12.15
16:00
УстановитьПривилегированныйРежим(Истина);

    ДобавилиПолныеПрава=Ложь;
    Если Не РольДоступна("ПолныеПрава") Тогда
        ПользовательИБТек = ПользователиИнформационнойБазы.НайтиПоИмени(ПараметрыСеанса.ТекущийПользователь);
        ПользовательИБТек.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
        ПользовательИБТек.Записать();
        ДобавилиПолныеПрава=Истина;
    КонецЕсли;
    
    м=ПользователиИнформационнойБазы.ПолучитьПользователей();
    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);

    Если ДобавилиПолныеПрава Тогда
        ПользовательИБТек = ПользователиИнформационнойБазы.НайтиПоИмени(ПараметрыСеанса.ТекущийПользователь);
        ПользовательИБТек.Роли.Удалить(Метаданные.Роли.ПолныеПрава);
        ПользовательИБТек.Записать();
    КонецЕсли;
    
    УстановитьПривилегированныйРежим(Ложь);
    Возврат ПользовательИБ;

код в превилегированном модуле
31 Лефмихалыч
 
25.12.15
16:02
ПользовательИБТек.Роли.Добавить(Метаданные.Роли.ПолныеПрава);

ага... платформа сама, н-но... ясно все с тобой
32 kuromanlich
 
25.12.15
16:02
(31) код до конца дочитай
33 Лефмихалыч
 
25.12.15
16:04
(32) это или кэш, или ты по какой-то иной причине смотришь в один код, запускаешь другой. Полные права ты добавляешь своим копрокодом сам.
34 xxTANATORxx
 
25.12.15
16:04
(30)я стесняюсь спросить, а в чем смысл добавить роль/удалить роль?
35 kuromanlich
 
25.12.15
16:05
(31) + код конечно из рук вон плох, но это "историческое накопление"

функция вызывается и после вызова возвращаемое значение записывается (после изменения интерфейса) ПользовательИБ.Записать()
36 xxTANATORxx
 
25.12.15
16:05
(34)+ у вас ведь весь код обернут привилегированным режимом
37 kuromanlich
 
25.12.15
16:07
(36) этот код не работал, его случайно начали использовать для одной задачи, сочтя его подходящим
38 Cyberhawk
 
25.12.15
16:10
Что-то код неполный, что за "ИмяПользователя" и где используется "м"? Полный код в студию давай уже
39 Cyberhawk
 
25.12.15
16:11
+(38) У тебя воспроизводится это стабильно? Если да, то упрости пример и запости тут способ воспроизведения
40 Бледно Золотистый
 
25.12.15
16:15
(30) Если ИмяПользователя = ПараметрыСеанса.ТекущийПользователь то ничего удивительного не вижу, учитывая (35)
41 hhhh
 
25.12.15
16:41
(37) если модуль привилегированный, зачем еще устанавливать привилегированный режим? Всё равно там всё привилегировано.
42 Stim
 
25.12.15
16:42
чета вы какой-то херней занимаетесь
43 aleks_default
 
25.12.15
17:38
Ошибка? Это не ошибка, это системная функция.