Имя: Пароль:
1C
1С v8
Помогите получить роль
,
0 katerinaUniv
 
05.02.18
12:10
Добрый день!
Есть процедура УстановитьДоступность() на управляемом приложении, написана в &НаКлиентеНаСервереБезКонтекста. Она проставляет видимость всех элементов формы документа (запрещено редактировать проведенный и обработанный документ). Мне нужно пользователю с особым набором прав (сделала отдельную роль) можно было редактировать даже проведенный и обработанный документ.
В месте "Если объект.ПРоведени и ЗаявкаЗАкрыта Тогда" я добавляю условие РольДоступна("СуперРоль"). Метод не обнаружен. Пишу функцию &НаСервере и вызываю ее в том условии, все равно функция не обнаружена. Как правильно это сделать?
1 GGDots
 
05.02.18
12:33
Значит каким то чудным образом она выполняется не на сервере.


В общем модуле с галочкой СЕРВЕР пишешь:

Функция ПроверитьНаличиеРоли(п_ТекстРоль) Экспорт
    
    РольДоступна = Ложь;

    Если РольДоступна(п_ТекстРоль) тогда
         РольДоступна  = Истина;  
    КонецЕсли;

    Возврат РольДоступна;

КонецФункции

2 Lexey_
 
05.02.18
12:40
(0) полный текст ошибки какой?
3 Lexey_
 
05.02.18
12:43
+(2) либо ошибка не связана с РольДоступна(), лио РольДоступна() вызываешь не как метод глобального контекста, а как метод объекта
4 al_zzz
 
05.02.18
12:48
"Я получил эту роль!
Мне выпал счастливый билет!
Я получил эту роль!
Мне выпал счастливый билет!"©ДДТ
Извините, название темы навеяло...
5 El_Duke
 
гуру
05.02.18
13:02
(0) С этой просьбой к тов.Вайнштейну :)
6 Dmitry1c
 
05.02.18
13:06
(4) +
7 katerinaUniv
 
05.02.18
15:23
(1) в общем модуле с галочкой сервер не сработало
8 katerinaUniv
 
05.02.18
15:24
(2), (3) процедура или функция не обнаружена. Как вызвать правильно?
9 AlexTim03
 
05.02.18
15:30
При таком контексте "НаКлиентеНаСервереБезКонтекста" видны только другие такие же (с таким же контекстом) процедуры/функции
10 Lexey_
 
05.02.18
15:34
(8) нужен точный текст ошибки, а не изложение своими словами
11 FIXXXL
 
05.02.18
18:12
(0) >Она проставляет видимость всех элементов формы документа (запрещено редактировать проведенный и обработанный документ).

сними галку "Интерактивное изменение проведенных" у ограниченных ролей
заведи на док-т отдельную СуперРоль с такой галкой
12 katerinaUniv
 
05.02.18
18:16
(11) Там программно ограничение по конкретным реквизитам. Мне не всю форму открыть надо, а часть реквизитов.
13 Вафель
 
05.02.18
18:24
рольдоступна работает только на серевер
14 katerinaUniv
 
05.02.18
18:35
(13) это я знаю. почему процедуру на сервере не видно в процедуре наклиентенасерверебезконтекста?
15 Вафель
 
05.02.18
18:35
(14) потому что НаКлиенте и еще где-то
16 katerinaUniv
 
05.02.18
18:37
как тогда правильно сделать?
17 katerinaUniv
 
05.02.18
18:37
я же из клиента могу вызвать сервеную процедуру
18 Вафель
 
05.02.18
19:00
добавить еще 1 функцию чисто серверную, тип такой

Функция РольДоступнаСервер(Парам)
   Возврат РольДоступна(Парам)
19 katerinaUniv
 
05.02.18
19:08
(18) вот именно так не работает
20 katerinaUniv
 
05.02.18
19:09
поэтому и написала здесь
21 Lexey_
 
05.02.18
19:18
(20) текст ошибки-то увидим?
23 FIXXXL
 
06.02.18
11:11
(14) потому что функция БезКонтекста должна только "отдавать" результат
взаимодействовать с остальным кодом формы безконтекстная функция не может
видимо надо разобраться "кто на ком стоял" :)
Ну и в функции с &НаКлиентеНаСервереБезКонтекста не получится использовать РольДоступна, потому как эта функция доступна только НаСервере

если написать
&НаСервереБезКонтекста
Функция ЕстьРоль(ИмяРоли)
   Возврат РольДоступна(ИмяРоли);
КонецФункции

должно нормально заработать
24 katerinaUniv
 
09.02.18
10:45
(23) заработало, но не в общем модуле, а только рядом с функцией
Программист всегда исправляет последнюю ошибку.