|
прверка РольДоступна() на клиенте Бухгалтерия 3.0 | ☑ | ||
---|---|---|---|---|
0
Новый1сник2
14.11.22
✎
12:50
|
Доброго дня!
подскажите, как проверить РольДоступна() на клиенте. выдает ошибку {ОбщийМодуль.ОбщегоНазначенияКлиентСервер.Модуль(2865,8)}: Процедура или функция с указанным именем не определена (РольДоступна) Если <<?>>РольДоступна("АдминистраторСистемы") Тогда (Проверка: Тонкий клиент) |
|||
1
Мимохожий Однако
14.11.22
✎
12:52
|
Ты пытаешься на клиенте получить серверную функцию
|
|||
2
timurhv
14.11.22
✎
12:54
|
Пользователи.РолиДоступны()
|
|||
3
Aleksey
14.11.22
✎
12:56
|
При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи:
Например, без использования БСП: Если РольДоступна(...) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда ... Либо аналогичная проверка с использованием БСП: Если Пользователи.РолиДоступны(...) Тогда ... (с) https://its.1c.ru/db/v8std/content/737/hdoc |
|||
4
ass1c
14.11.22
✎
12:56
|
(2) у модуля "Пользователи" вроде нет флага "ВызовСервера"
|
|||
5
Новый1сник2
14.11.22
✎
13:00
|
(3) Если Пользователи.РолиДоступны(...) Тогда
применяется к текущему пользователю? или пользователя нужно как то указать? |
|||
6
Aleksey
14.11.22
✎
13:01
|
(5) ну это же процедура из БСП, открой конфигуратор и увидишь
|
|||
7
Aleksey
14.11.22
✎
13:02
|
Результат = Пользователи.РолиДоступны(ИменаРолей, Пользователь, УчитыватьПривилегированныйРежим);
РолиДоступны = Пользователи.РолиДоступны("ПолныеПрава, БазовыеПрава"); (с) https://its.1c.ru/db/bsp315doc/content/1676/hdoc |
|||
8
Aleksey
14.11.22
✎
13:04
|
(4) судя по документации
Доступность Сервер, Толстый клиент, Внешнее соединение Т.е. как раз на тонком клиенте не будет работать, а на сервере вполне |
|||
9
Новый1сник2
14.11.22
✎
13:06
|
Результат = Пользователи.РолиДоступны("АдминистраторСистемы", <<?>>ПараметрыСеанса.ТекущийПользователь); (Проверка: Тонкий клиент)
|
|||
10
Новый1сник2
14.11.22
✎
13:07
|
(8) на сервере и просто РольДоступна() работает
|
|||
11
Aleksey
14.11.22
✎
13:11
|
(10) кто бы спорил.
Я тебе просто привел цитату из стандартов разработки + документация БСП Что по стандартам при использовании БСП рекомендуется использовать Пользователи.РолиДоступны(), которые доступны только на сервере А там дальше уже сам думай что тебе делать с этой информацией, или проигнорировать или топать на сервер и там спрашивать. В любом случае у тонкого клиента только форма, нет доступа к объектам, а значит за доступностью к объектам тебе по любому нужно топать на сервер |
|||
12
FIXXXL
14.11.22
✎
13:11
|
(9) сделай в форме функцию &НаСервереБезКонтекста и дергай ее с клиента
|
|||
13
Новый1сник2
14.11.22
✎
13:20
|
(12) там не форма, общий модуль, и &НаСервереБезКонтекста, проверял, не работает
|
|||
14
Новый1сник2
14.11.22
✎
13:25
|
вот так вроде работает
Если М_Общий.ЕстьРоль("АдминистраторСистемы",ПользователиКлиентСервер.ТекущийПользователь()) Тогда Отказ = Ложь; Иначе Отказ = Истина; КонецЕсли; |
|||
15
Новый1сник2
14.11.22
✎
13:26
|
эту функцию добавил в М_Общий
&НаСервере Функция ЕстьРоль(ИмяРоли, Пользователь = Неопределено) Экспорт Если Пользователь = Неопределено Тогда Пользователь = ПользователиКлиентСервер.ТекущийПользователь(); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | 1 |ИЗ | Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли | ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиГруппДоступаРоли.Ссылка |ГДЕ | ПрофилиГруппДоступаРоли.Роль.Имя = &Роль | И ГруппыДоступаПользователи.Пользователь = &Пользователь"; Запрос.УстановитьПараметр("Пользователь", Пользователь); Запрос.УстановитьПараметр("Роль", ИмяРоли); УстановитьПривилегированныйРежим(Истина); РезультатЗапроса = Запрос.Выполнить(); УстановитьПривилегированныйРежим(Ложь); Если РезультатЗапроса.Пустой() Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции |
|||
16
ass1c
14.11.22
✎
13:30
|
(14) как минмиум: Отказ = НЕ М_Общий.ЕстьРоль("АдминистраторСистемы",ПользователиКлиентСервер.ТекущийПользователь())
|
|||
17
ass1c
14.11.22
✎
13:34
|
Для текущего пользователя с проверкой на полные права так вроде будет попроще:
Функция ЕстьПраво(ИмяРоли) Экспорт Возврат РольДоступна(ИмяРоли) ИЛИ ЕстьПравоПолныеПрава(); КонецФункции // ЕстьПраво() Функция ЕстьПравоПолныеПрава() Экспорт Возврат РольДоступна("ПолныеПрава"); КонецФункции // ЕстьПравоПолныеПрава() |
|||
18
FIXXXL
14.11.22
✎
13:39
|
(13) ну сделай свой модуль-прокладку с галкой ВызовСервера
|
|||
19
Новый1сник2
14.11.22
✎
13:43
|
сделал уже как (15), проверил работает
|
|||
20
Новый1сник2
14.11.22
✎
13:44
|
благодарю за подсказки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |