1. den17 19.04.19 17:03 Сейчас в теме

Программно Не добавляются Роли

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

ПользовательБД.Роли.Удалить(Метаданные.Роли.ПолныеПрава);
........................................................................................................................................
Ничего не получается, тк Роль как бы добавилась при Роли. Добавить.. (выводил список) но она недоступна.

---------------------------------------------------------------------------------------------------------------------------
Еще один момент: Если из текста модуля убрать Удаление этого права (строку Удалить(... → то все прекрасно работает, но пользователь остается с полными правами после нужных действий.
Как отобрать у него права??
Вознаграждение за ответ
Показать полностью
Ответы
Избранное Подписка Сортировка: Древо
7. DJDUH 17 19.04.19 17:20 Сейчас в теме
(1) Уберите повторное использование и добавление ролей пользователю у/в модуля и попробуйте те-же действия.
11. ksen 22.04.19 09:21 Сейчас в теме
(1) а если сделать код типа
1)дать права
2)проверка условия типа "если документ на который не хватало прав провелся" то
забрать права у пользователя
Мне очень интересно как себя поведет 1с в таком случае, сам проверить не могу, нед под рукой конфигуратора

Ну и если эта штука вдруг заработает добавить обработку ошибок в которой тоже надо будет отбирать права
2. palsergeich 19.04.19 17:12 Сейчас в теме
Так как вы проверяете в этом же сеансе - надо перезайти в базу. Роли пользователя кешируются при входе. И при изменении состава ролей - необходим повторный вход.
3. palsergeich 19.04.19 17:14 Сейчас в теме
А вообще - такое себе решение решение проблемы на самом деле.
В Вашем случае не надо играть с ролями, используйте УстановитьПривелегированныйРежим().
user614822; +1 Ответить
4. den17 19.04.19 17:17 Сейчас в теме
(3) УстановитьПривилегированныйРежим(ИСТИНА) в самом начале устанавливается. Если без ролей -- не дает проводить по Регл. учету все равно
5. palsergeich 19.04.19 17:19 Сейчас в теме
Проверьте - не выполняется ли код в безопасном режиме.
Если да - то установка привелегированного режима - игнорируется
12. ksen 22.04.19 09:24 Сейчас в теме
(5)а разве изменение прав пользователей не означает что можно УстановитьПривилегированныйРежим(ИСТИНА) по умолчанию?
13. palsergeich 22.04.19 11:59 Сейчас в теме
6. palsergeich 19.04.19 17:20 Сейчас в теме
БезопасныйРежим() Функция проверки
8. den17 19.04.19 18:28 Сейчас в теме
А как правильно Удалить только-что данные права. Только вводишь слово Удалить -- программа ведет себя неадекватно..
Убираешь Удалить -- все работает как надо.
Я разносил их в разные модули -- помогает только при первом запуске -- потом то же самое.
9. sashocq 192 19.04.19 22:12 Сейчас в теме
После изменения состава ролей нужно действительно перезайти в базу. Но так не делается!
Нужно использовать УстановитьПривилегированныйРежим(Истина). Есть только один момент: он работает как надо только на сервере. Т. е. вам нужно использовать её и тот код что нужно выполнить привилегированно в серверном модуле. При чём, если мы говорим про УПП (обычные формы), то в файловой базе это работать не будет, только в клиент-серверной (я с этим давно сталкивался).
10. dimon_tb 20.04.19 22:34 Сейчас в теме
а если подойти к решению задачи по другому:
При проведение поставить
<Объект>.ОбменДанными.Загрузка = истина;
14. user681528_sbscomp 24.04.19 12:15 Сейчас в теме
(10) ОбменДанными отключит только проверки на корректность проведения, прав он не добавит.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день