Имя: Пароль:
1C
1С v8
Нарушение прав в привилегированном режиме
0 cmex
 
25.03.14
11:28
Доброго времени суток.
Вот кусок кода:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
    УстановитьПривилегированныйРежим(Истина);
    
    Возврат ?(ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь),
              ПараметрыСеанса.ТекущийПользователь,
              ПараметрыСеанса.ТекущийВнешнийПользователь);
#Иначе
    Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске().АвторизованныйПользователь;
#КонецЕсли


Захожу через отладчик под пользователем. Открываю внешнюю печатную форму. В данный кусок кода падает несколько раз и все проходит нормально, а перед открытием выдает "Нарушение прав доступа". Как такое возможно если стоит УстановитьПривилегированныйРежим(Истина)?
1 ДенисЧ
 
25.03.14
11:40
"В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий.
"
(с)
2 cmex
 
25.03.14
11:49
(1) точка останова срабатывает на сервере и позиционируется на  УстановитьПривилегированныйРежим(Истина)
3 shuhard
 
25.03.14
12:21
(0)[а перед открытием выдает "Нарушение прав доступа".]
ну и при чем здесь общий модуль ?
4 cmex
 
25.03.14
12:24
(3) имеется в виду не непосредственно перед открытием, а очередной вызов данной функции
5 cmex
 
25.03.14
12:25
(3) грубо говоря 10 раз вызывается, 9 норм, 10 не робит
6 cw014
 
25.03.14
12:32
Если в процедуре или функции вызовов метода с параметром Ложь сделано больше, чем вызовов с параметром Истина, то будет вызвано исключение.

Может это поможет?
7 Зойч
 
25.03.14
12:33
УстановитьПривилегированныйРежим(Истина) перед открытием не означает, что все что форма потянет неявно будет в привилегированном режиме, только тот код что далее следует
8 cmex
 
25.03.14
12:39
(6) кусок кода в начале это вся функция. никаких других вызовов метод этого нет.
9 Maxus43
 
25.03.14
12:40
общие модуля надо использовать с привелигированным режимом, в клиент-серверном варинате остальное - просто не красиво и не по понятиями
10 cmex
 
25.03.14
12:43
(9) типовая БП 3,0,30,16
11 cw014
 
25.03.14
12:43
Значит скорее всего срабатывает "Или ТолстыйКлиентОбычноеПриложение"
12 Maxus43
 
25.03.14
12:44
(10) ну передай в 1с, они быдлокодеры
13 VikingKosmo
 
25.03.14
12:45
(12) а то они в 1С не в курсе :)
14 cmex
 
25.03.14
12:47
может все таки я чего не допонимаю? сейчас через стек вызова гляну от куда чего и напишу
15 Maxus43
 
25.03.14
12:53
(14) читай (1) до просветления. Если отладчик встанет на эту строку - это не значит что что-то произойдёт
16 cmex
 
25.03.14
13:00
17 cmex
 
25.03.14
13:01
при нажатии F10 вылетает ошибка
18 Maxus43
 
25.03.14
13:14
(17) что от нас то хочешь? я чото не пойму...
19 cw014
 
25.03.14
13:15
(17) Говорит - "нарушение прав доступа". А журнал регистрации что говорит? Доступа к чему?
20 cmex
 
25.03.14
13:24
21 cmex
 
25.03.14
13:24
(18) как победить это?
22 Maxus43
 
25.03.14
13:26
попробуй дать права на справочник Пользователи.
А тип у ПараметрыСеанса.ТекущийВнешнийПользователь какой?
23 cmex
 
25.03.14
13:30
(22) есть права на справочники "Пользователи" и "ВнешниеПользователи", нет прав на ПараметрыСеанса, но ведь УстановитьПривилегированныйРежим(Истина) должны по идее всем все разрешить
24 cmex
 
25.03.14
13:31
а есть возможность после исполнения кода УстановитьПривилегированныйРежим(Истина) проверить - включен ли привилегированный режим или нет для следующей строчки кода?
25 Maxus43
 
25.03.14
13:31
(23) читай до просветления (1), сколько раз повторять? Контекст выполнения не тот, в итоге пшик вместо прав. На параметры сеанса давай права тоже, либо переписывай их получение
26 cmex
 
25.03.14
13:33
(25) то есть #Если Сервер Тогда не работает?
27 cmex
 
25.03.14
13:35
в общем не отработала "УстановитьПривилегированныйРежим(Истина)" ПривилегированныйРежим() = ложь пишет
28 Maxus43
 
25.03.14
13:37
хм... странно, обратил внимание таки на скрин с контекстом вызова, в СП про это нет. На файловом варианте должно работать кстати.

Ну таки склоняюсь к (9) всё равно, это быдлокод
29 cmex
 
25.03.14
13:45
решено
30 Maxus43
 
25.03.14
13:47
(29) что?
31 cmex
 
25.03.14
13:50
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина) - в безопасном режиме не работает УстановитьПривилегированныйРежим()
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс