|
Привилегированный режим в общем модуле (управляемое приложение) | ☑ | ||
---|---|---|---|---|
0
qwep
16.11.23
✎
14:32
|
Добрый день!
Платформа: 8.3+ ИБ может быть как на сервере, так и в файловом варианте. Прилетела задача выполнять некоторый код без проверки прав из внешней обработки. На обычно приложении сделал без проблем, вынеся эти функции в общий модуль с флажками "Глобальный", "Сервер", "Вызов сервера" и "Привилегированный" и сделав их экспортными, код выполняется без проблем без проверки прав. Перешел к реализации в управляемом приложении. Сделал все то же самое, но это не сработало, при проверке из общего модуля через ПривилегированныйРежим() возвращается Ложь. Функции вызываются с сервера. Пробовал принудительно установить привилегированный режим и отключить безопасный режим, без результатов. Подскажите, кто знает, пожалуйста, в чем подвох? Уверен, ларчик просто открывается. Пример функции общего модуля, на которой в управляемом приложении ругается на отсутствие прав: Функция ПолучитьПользователейИБПривилегированный() Экспорт Возврат ПользователиИнформационнойБазы.ПолучитьПользователей(); КонецФункции |
|||
1
MMB
16.11.23
✎
14:40
|
Как именно пробовал принудительно установить привилегированный режим? Обычно просто перед кодом который должен быть выполнен в привилегированном режиме пишешь "УстановитьПривилегированныйРежим(Истина);". Привилегированный режим работает до конца текущего серверного вызова, если нужен привилегированный режим в нескольких разных серверных функциях, то в каждой нужно в начале устанавливать привилегированный режим. Ну и если это все во внешней обработке или расширении то небезопасный режим нужен. Точно отключал безопасный? Как именно?
|
|||
2
asady
16.11.23
✎
14:49
|
(0) толстый клиент видимо
|
|||
3
qwep
16.11.23
✎
14:51
|
Функция ПолучитьПользователейИБПривилегированный() Экспорт
УстановитьБезопасныйРежим(Истина); УстановитьБезопасныйРежим(Ложь); УстановитьПривилегированныйРежим(Истина); Возврат ПользователиИнформационнойБазы.ПолучитьПользователей(); КонецФункции Делал так, т.к. если не поставить безопасный режим, ругается с ошибкой "{CommonModule.ПривилегированныйQWEP.Module(4)}: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим): В данной процедуре/ функции не был установлен безопасный режим" Но после УстановитьПривилегированныйРежим(Истина); ПривилегированныйРежим() возвращает Ложь |
|||
4
qwep
16.11.23
✎
14:52
|
(2) Платформа: 1С:Предприятие 8.3 (8.3.19.1150)
Конфигурация: Розница, редакция 2.3 (2.3.6.27) (http://v8.1c.ru/retail/) Copyright © ООО "1С-Софт", 2009-2020. Все права защищены (http://www.1c.ru) Режим: Файловый (без сжатия) Приложение: Тонкий клиент Локализация: Информационная база: русский (Россия), Сеанс: русский Вариант интерфейса: Такси |
|||
5
qwep
16.11.23
✎
14:54
|
(1) сначала не понял, как реплай здесь делать, листинг выше привел
|
|||
6
Смотрящий
16.11.23
✎
14:55
|
Функция ПолучитьПользователейИБПривилегированный() Экспорт
УстановитьПривелегированныйРежим(Истина); Возврат ПользователиИнформационнойБазы.ПолучитьПользователей(); КонецФункции |
|||
7
asady
16.11.23
✎
14:59
|
(0) Проверяй право "Администрирование" пользователя под которым запускаешь внешнюю обработку.
Если нет такого права, то обработка запускается в безопасном режиме. В безопасном режиме не работает отключение контроля прав |
|||
8
qwep
16.11.23
✎
14:59
|
(6) такая функция валится с ошибкой {CommonModule.ПривилегированныйQWEP.Module(4)}: Ошибка при вызове метода контекста (ПолучитьПользователей): Пользователю недостаточно прав для выполнения операции.
|
|||
9
qwep
16.11.23
✎
15:02
|
(7) идея в том, что пользователь без административных прав должен иметь возможность получать список пользователей ИБ, читать и изменять их настройки, в обычном приложении с этим отлично справляется привилегированный общий модуль, а в управляемом чего-то не хватает
|
|||
10
MMB
16.11.23
✎
15:03
|
А саму обработку как запускаешь? Если например обработка подключена через БСП в безопасном режиме, то на сколько я помню код "УстановитьПривилегированныйРежим(Истина)" просто игнорируется и на сколько я понимаю то отключить кодом безопасный режим в этом случае тоже нельзя.
|
|||
11
qwep
16.11.23
✎
15:04
|
(10) файл > открыть
|
|||
12
MMB
16.11.23
✎
15:07
|
Вот тут в этих ваших интернетах что пишут:
Если по какой-то причине вы используете внешние файлы обработок/отчетов (через меню файл — открыть…), то наверняка столкнулись с проблемой невозможности выполнения элементарных операций записи данных. Помогут профили безопасности кластера сервера 1С. Дело в том что при использовании клиент-серверного варианта работы 1С внешние обработки/отчеты открываются в безопасном режиме, в котором запрещено использование привилегированного режима. А привилегированный режим используется очень часто в типовых конфигурациях: формирование печатных форм, различные служебные проверки (регистрация обменов) и т.д. В результате, даже используя обычный отчет на СКД без формы (по умолчанию используется общая форма «ФормаОтчета») и сохраняя пользовательские настройки отчета (в соответствующий справочник), вы получите ошибку о недостаточности прав доступа на различные константы и параметры сеанса, используемые в служебных целях после строки УстановитьПривилегированныйРежим(Истина); «Правильным» решением будет подключение внешних обработок и отчетов через механизмы БСП «Дополнительные отчеты и обработки» с отключением безопасного режима либо добавлением разрешений (по-моему, с версии БСП 2.2.2.1). Но если по каким-то причинам необходимо использование именно внешних файлов отчетов/обработок, то можно настроить профиль безопасности кластера, используемого в качестве профиля безопасности безопасного режима для конкретной информационной базы. |
|||
13
MMB
16.11.23
✎
15:08
|
Может проще подключить через БСП в небезопасном режиме?
|
|||
14
qwep
16.11.23
✎
15:12
|
(13) так и придется делать, видимо, из БСП привилегированный режим включается, думал, я что-то не докопал, спасибо)
|
|||
15
MMB
16.11.23
✎
15:25
|
При подключении обработки через БСП в функции СведенияОВнешнейОбработке() нужно явно прописать что нужен небезопасный режим: РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |