Вход | Регистрация



ПривилегированныйРежим() то истина, то ложь

ПривилегированныйРежим() то истина, то ложь
Я
   iceman2112
 
03.07.18 - 10:10
Доброе утро, граждане.

В коде есть строчка, код вызывается из формы списка документа и формы документа
УстановитьПривилегированныйРежим(Истина)

Так вот сразу после этой строчки в табло пишу ПривилегированныйРежим() и при вызове из Формы списка, всегда ПривилегированныйРежим() = Истина, при открытие первый раз из формы документа ПривилегированныйРежим() = Истина, а потом = Ложь.

В результате чего у пользователя не открывается форма документа с ошибкой прав доступа, потому что
Если НЕ Пользователи.ЭтоПолноправныйПользователь(, ПроверятьПраваАдминистрированияСистемы) Тогда
        ВызватьИсключение НСтр("ru = 'Нарушение прав доступа.'");
    КонецЕсли;

Почему ПривилегированныйРежим() = Ложь, сразу после установки УстановитьПривилегированныйРежим(Истина)
 
 
   Вафель
 
1 - 03.07.18 - 10:19
Этот метод действует в пределах вызова 1 процедуры
   vde69
 
2 - 03.07.18 - 10:26
(1) и только в контексте &НаСервере
   iceman2112
 
3 - 03.07.18 - 10:40
(1) Это тут причем?
(2) Все на сервере.

Нетронутая
УНФ 1.6 (1.6.14.81) при открытие заказ покупателя ищет регламентную процедура для обмена ЭДО, и вызывается исключение если нет прав Админа или не стоит ПривилегированныйРежим
   Tonik992
 
4 - 03.07.18 - 11:10
ПривилегированныйРежим() не дает права Администрирования
   Tonik992
 
5 - 03.07.18 - 11:11
Посмотрите как работает Пользователи.ЭтоПолноправныйПользователь()
   iceman2112
 
6 - 03.07.18 - 11:24
(4) Я это и не утверждал, Вопрос не в этом стоит.

Он заходит в Пользователи.ЭтоПолноправныйПользователь() в одном случае у него проскакивает, а в другом случае нет. Потому что УстановитьПривилегированныйРежим(Истина) дает Ложь.
Это код в Пользователи.ЭтоПолноправныйПользователь(), перед вызовом этой процедуры УстановитьПривилегированныйРежим(Истина)

 
Если УчитыватьПривилегированныйРежим И ПривилегированныйРежимУстановлен Тогда
        Возврат Истина;
    КонецЕсли;
   iceman2112
 
7 - 03.07.18 - 11:33
// Проверяет наличие используемого регламентного задания "ПроверкаНовыхЭлектронныхДокументов"

// Возвращаемое значение:
//  Булево - используется задание или нет.

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


В этой строчке он через раз падает

РегламентныеЗаданияСервер.РегламентноеЗаданиеИспользуется(ЗаданиеПроверкаНовыхЭлектронныхДокументов);

А если глубже копнуть, то внутри

Если НЕ Пользователи.ЭтоПолноправныйПользователь(, ПроверятьПраваАдминистрированияСистемы) Тогда
        ВызватьИсключение НСтр("ru = 'Нарушение прав доступа.'");
    КонецЕсли;



Идем в нее 

Функция ЭтоПолноправныйПользователь(Пользователь = Неопределено,
                                    ПроверятьПраваАдминистрированияСистемы = Ложь,
                                    УчитыватьПривилегированныйРежим = Истина) Экспорт
    
    ПривилегированныйРежимУстановлен = ПривилегированныйРежим();// ВОТ ТУТ ТО ИСТИНА, ТО ЛОЖЬ, хотя выше вызывается УстановитьПривилегированныйРежим(Истина)

    
    УстановитьПривилегированныйРежим(Истина);


   Tonik992
 
8 - 03.07.18 - 14:23
"То истина, то ложь" - как наблюдается, запускаете со своего компьютера в режиме отладки периодически?

В каком режиме запускаете? (тонкий/толстый клиент, обычное приложение)
   iceman2112
 
9 - 03.07.18 - 14:35
(8) Тонкий клиент, один и тот же компьютер, один пользователь 1с.

Запускаешь список заказов клиента = Истина, Открываешь Форму заказ или создаешь истина (первый раз), дальнейшие открытие или создание заказа = ложь = ошибка.

На копию 2 месячной давности этой ошибки не наблюдается.

Я думаю тестирование и иправление провести
   Buster007
 
10 - 03.07.18 - 14:45
Расширения кажись подключил?
 
 Рекламное место пустует
   iceman2112
 
11 - 03.07.18 - 14:49
(10) было дело, была проблема с моим расширением при обновление. из конфигуратора не обновлялся. пришлось в предприятие удалить и добавить.
   RomaH
 
12 - 03.07.18 - 14:50
(0) ИМХО баг платформы
в БСП есть код

УстановитьПривилегированныйРежим(Истина);

куча кода

Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КОнецесли;


и иногда выпадает в исключение, ибо если нет ПР - то попытка  снять его дает исключение

пришлось вообще отказаться от УстановитьПривилегированныйРежим(Ложь);

ибо она работает в рамках одной процедуры - нафига его отключать практически на выходе из неё
   iceman2112
 
13 - 03.07.18 - 14:52
(12)  (8.3.12.1412)
   Tonik992
 
14 - 03.07.18 - 14:56
(12) не факт, процедура может вызываться на клиенте. И тогда УстановитьПривилегированныйРежим(Истина) в клиент-серверном варианте не даст эффекта никакого
   RomaH
 
15 - 03.07.18 - 15:30
(14)
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КОнецесли;
   Buster007
 
16 - 03.07.18 - 15:33
(11) у расширения выключил безопасный режим?
   Tonik992
 
17 - 03.07.18 - 15:51
(15) все верно, поэтому если УстановитьПривилегированныйРежим(Истина) не дает никакого эффекта, то проверка
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КОнецесли;

просто необходима
   RomaH
 
18 - 03.07.18 - 15:54
(17) чукча не читатель?
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КОнецесли;

просто необходима 
но она дает истину и УстановитьПривилегированныйРежим(Ложь); вываливает исключение
   iceman2112
 
19 - 03.07.18 - 16:32
(16) Неа, нужно выкл.?
   iceman2112
 
20 - 03.07.18 - 16:39
(16) Ты телепат?))) все заработало. Можешь пояснить?
   Buster007
 
21 - 03.07.18 - 17:31
(20) Почитай на ИТС как работает безопасный режим ))
   iceman2112
 
22 - 03.07.18 - 17:56
(21) Понял, спасибо всем
   Mankubus
 
23 - 03.07.18 - 18:29
(22) а можно подробнее?
   Вафель
 
24 - 03.07.18 - 18:41
Безопасный режим не позволяет включать Привелигерованный
   iceman2112
 
25 - 03.07.18 - 18:42
(23) Отключение безопасного режима у расширения решило проблему, хотя код выше в конфигурации находиться.
А почему это решило проблему, я пока не понял, позже почитаю
   Вафель
 
26 - 03.07.18 - 18:44
(25) это не важно где код находится
   iceman2112
 
27 - 03.07.18 - 18:52
(26) и примерно понял, после вашего сообщения, что происходит.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует