Здравствуйте. (УПП 1.3_1С 8.3)
Стоит задача: Добавить права пользователю программно ↔ провести документы по Регл. учету и → отобрать эти права. Создал общий модуль. Сервер/Привилегированный/ВызовСервера/Повторное использование возвращаемых значений → На время вызова. Пишу пишу в модуле.
УстановитьПривилегированныйРежим(ИСТИНА);
ПользовательБД = ПользователиИнформационнойБазы.ТекущийПользователь();
Если НЕ ПользовательБД.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда
....................................................................................
ПользовательБД.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
.............................................................
// В этот момент РОЛЬ ДОБАВЛЯЕТСЯ
ПользовательБД.Записать();
...........................................................................
Записываю документ (это здесь не важно)
.....................................................................................
Но когда проверяю на Если РольДоступна("ПолныеПрава") → она недоступна!!
.....................................................................................................
Затем удаляю это право
ПользовательБД.Роли.Удалить(Метаданные.Роли.ПолныеПрава);
........................................................................................................................................
Ничего не получается, тк Роль как бы добавилась при Роли. Добавить.. (выводил список) но она недоступна.
---------------------------------------------------------------------------------------------------------------------------
Еще один момент: Если из текста модуля убрать Удаление этого права (строку Удалить(... → то все прекрасно работает, но пользователь остается с полными правами после нужных действий.
Как отобрать у него права??
Стоит задача: Добавить права пользователю программно ↔ провести документы по Регл. учету и → отобрать эти права. Создал общий модуль. Сервер/Привилегированный/ВызовСервера/Повторное использование возвращаемых значений → На время вызова. Пишу пишу в модуле.
УстановитьПривилегированныйРежим(ИСТИНА);
ПользовательБД = ПользователиИнформационнойБазы.ТекущийПользователь();
Если НЕ ПользовательБД.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда
....................................................................................
ПользовательБД.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
.............................................................
// В этот момент РОЛЬ ДОБАВЛЯЕТСЯ
ПользовательБД.Записать();
...........................................................................
Записываю документ (это здесь не важно)
.....................................................................................
Но когда проверяю на Если РольДоступна("ПолныеПрава") → она недоступна!!
.....................................................................................................
Затем удаляю это право
ПользовательБД.Роли.Удалить(Метаданные.Роли.ПолныеПрава);
........................................................................................................................................
Ничего не получается, тк Роль как бы добавилась при Роли. Добавить.. (выводил список) но она недоступна.
---------------------------------------------------------------------------------------------------------------------------
Еще один момент: Если из текста модуля убрать Удаление этого права (строку Удалить(... → то все прекрасно работает, но пользователь остается с полными правами после нужных действий.
Как отобрать у него права??
По теме из базы знаний
- Ошибка расчета остатков в СКД и ее программное исправление на примере Универсального отчета
- Сравнение 1С8 и Navision
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Быстрый фронт в базе размером 8.8 терабайт – наши стандарты при разработке компонентов системы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) а если сделать код типа
1)дать права
2)проверка условия типа "если документ на который не хватало прав провелся" то
забрать права у пользователя
Мне очень интересно как себя поведет 1с в таком случае, сам проверить не могу, нед под рукой конфигуратора
Ну и если эта штука вдруг заработает добавить обработку ошибок в которой тоже надо будет отбирать права
1)дать права
2)проверка условия типа "если документ на который не хватало прав провелся" то
забрать права у пользователя
Мне очень интересно как себя поведет 1с в таком случае, сам проверить не могу, нед под рукой конфигуратора
Ну и если эта штука вдруг заработает добавить обработку ошибок в которой тоже надо будет отбирать права
А как правильно Удалить только-что данные права. Только вводишь слово Удалить -- программа ведет себя неадекватно..
Убираешь Удалить -- все работает как надо.
Я разносил их в разные модули -- помогает только при первом запуске -- потом то же самое.
Убираешь Удалить -- все работает как надо.
Я разносил их в разные модули -- помогает только при первом запуске -- потом то же самое.
После изменения состава ролей нужно действительно перезайти в базу. Но так не делается!
Нужно использовать УстановитьПривилегированныйРежим(Истина). Есть только один момент: он работает как надо только на сервере. Т. е. вам нужно использовать её и тот код что нужно выполнить привилегированно в серверном модуле. При чём, если мы говорим про УПП (обычные формы), то в файловой базе это работать не будет, только в клиент-серверной (я с этим давно сталкивался).
Нужно использовать УстановитьПривилегированныйРежим(Истина). Есть только один момент: он работает как надо только на сервере. Т. е. вам нужно использовать её и тот код что нужно выполнить привилегированно в серверном модуле. При чём, если мы говорим про УПП (обычные формы), то в файловой базе это работать не будет, только в клиент-серверной (я с этим давно сталкивался).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот