|
Как определить доступна ли роль пользователю через ссылку? | ☑ | ||
---|---|---|---|---|
0
Elf56
02.09.14
✎
10:02
|
Всем доброго времени суток.
Имеется 1с 8.3 УТ 11. Необходимо определять кто создал документ это легко Объект.Автор, но еще нужно делать так если скажем открыл другой пользователь этот же документ не АВтор то нужно выполнять определенные действия если у данного документа автором был пользователей с доступной ролью РОЛЬ1 если же автором этого документа был пользователей с доступностью РОЛЬ2 то выполнять уже другие действия. Вопрос как это определить через ссылку Объект.Автор принадлежит ли роль этому пользователю РОЛЬ1 или РОЛЬ2 как это сделать? Пробовал вот так, Если ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(АвторСобытия.ИдентификаторПользователяИБ).Роли.Содержит("осиОфисМенеджер") Тогда выдает вот такую ошибку Пользователю недостаточно прав для выполнения операции. но это и правильно потому что менеджеру запрещено менять в справочнике Пользователи информацию, а только просмотр Если же сделать по другому Если АвторСобытия.РольДоступна("осиОфисМенеджер") Тогда то выдает ошибку что данного метода не найдено РольДоступна Как это сделать? Всем заранее спасибо |
|||
1
Fish
02.09.14
✎
10:03
|
(0) Чтобы пользователю хватало прав, используй привилегированный режим или привилегированный модуль.
|
|||
2
Elf56
02.09.14
✎
10:03
|
соответственно АвторСобытия это Объект.Автор
|
|||
3
Elf56
02.09.14
✎
10:04
|
(1) а как его установить а затем снять?
|
|||
4
Fish
02.09.14
✎
10:05
|
(3) Это надо СП читать:
"Глобальный контекст (Global context) УстановитьПривилегированныйРежим (SetPrivilegedMode) Синтаксис: УстановитьПривилегированныйРежим(<Включить>) Параметры: <Включить> (обязательный) Тип: Булево. Определяет, будет ли включен привилегированный режим: Истина - включить режим; Ложь - выключить режим. Описание: В файловом варианте информационной базы или на сервере в клиент-серверном варианте информационной базы управляет (включает или выключает) привилегированный режим исполнения кода, аналогичный режиму работы кода привилегированных модулей. В привилегированном режиме никакие проверки прав не выполняются и разрешены любые операции. В клиент-серверном варианте при выполнении на клиенте данный метод не выполняет никаких действий. Первое выполнение метода с параметром Истина в файловом варианте информационной базы или на сервере в клиент-серверном варианте информационной базы включает привилегированный режим. Для явного выключения привилегированного режима необходимо внутри процедуры или функции, в которой он был включен, вызвать метод с параметром Ложь столько же раз, сколько раз в этой же процедуре или функции был вызван метод с параметром Истина. Если этого сделано не было, то при возврате из процедуры/ функции, в которой был включен привилегированный режим, он будет выключен автоматически (неявно). Если в процедуре или функции вызовов метода с параметром Ложь сделано больше, чем вызовов с параметром Истина, то будет вызвано исключение. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: По умолчанию привилегированный режим выключен. См. также: Глобальный контекст, метод ПривилегированныйРежим" |
|||
5
Elf56
02.09.14
✎
10:30
|
спасибо получилось установить но теперь вылезает другая ошибка типо
Значение не является значением объектного типа (Роли) в строке кода Если ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(АвторСобытия.ИдентификаторПользователяИБ).Роли.Содержит("осиОфисМенеджер") Тогда Может быть можно как нибудь по другому решить мою задачу? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |