Имя: Пароль:
1C
1С v8
как в 1С написать ограничение по правам
, ,
0 Егор123
 
21.03.17
11:41
Добрый день, подскажите как в 1С написать ограничение по правам, т.е. например, если у текущего юзера есть доступ к бизнес процессу на исполнение, то исполнить следующий код.

Пробовал так:
                                    Если ПравоДоступа("Чтение", БизнесПроцессы.Исполнение, &ТекущийПользователь,) ТОГДА
                                    ОбластьОставшиесяЗадачиФИОДаты.Параметры.ДатаПлановая = ?(ЗначениеЗаполнено(СтрокаДетальныеЗаписи.ДатаНачала),
                                        Формат(СтрокаДетальныеЗаписи.ДатаНачала, "ДФ=dd.MM.yyyy"),                                        
                                        "Не определено");
                                    КонецЕсли;
1 DrShad
 
21.03.17
11:45
RLS
2 Жан Пердежон
 
21.03.17
11:46
Получай только те бизнес-процессы только на которые есть права.
3 Егор123
 
21.03.17
11:52
(1) мне не в РЛС надо, а во внешней обработке. Чтобы на Печатной форме не отображалась та информация, на которую у юзеров нет доступа.
4 FIXXXL
 
21.03.17
11:55
(0) этот код смысла не имеет
если у пользователя нет Роли с галкой Чтение - он не получит доступ к объекту никак, без использования привелегерованного доступа
а если доступ есть, в чем смысл проверки? заполняй сразу
5 Егор123
 
21.03.17
11:56
(4) тут не доступ к объекту, а отображение на Печатной форме. мне нужно, чтобы у юзера, не имеющего доступ к объекту не отображалось слово "Не определено".
6 FIXXXL
 
21.03.17
11:57
(5) как без доступа к объекту откроется форма?
7 RomanYS
 
21.03.17
11:58
ПравоДоступа("Чтение", Метаданные.БизнесПроцессы.БизнесПроцесс1)
8 FIXXXL
 
21.03.17
11:58
или ты не в форме объекта право которого проверяешь?
9 Егор123
 
21.03.17
12:08
(7) не сработало
10 Егор123
 
21.03.17
12:09
(8) я не в форме объекта.
11 YFedor
 
21.03.17
12:28
Если ПравоДоступа("Чтение", Метаданные.БизнесПроцессы.Исполнение, &ТекущийПользователь,) ТОГДА
                                    ОбластьОставшиесяЗадачиФИОДаты.Параметры.ДатаПлановая = "ЕСТЬ ДОСТУП";
Иначе
"НЕТ ДОСТУПА"
                                    КонецЕсли;

дарю, отлаживай
12 YFedor
 
21.03.17
12:29
Если ПравоДоступа("Чтение", Метаданные.БизнесПроцессы.Исполнение, &ТекущийПользователь,) ТОГДА
                                    ОбластьОставшиесяЗадачиФИОДаты.Параметры.ДатаПлановая = "ЕСТЬ ДОСТУП";
Иначе
ОбластьОставшиесяЗадачиФИОДаты.Параметры.ДатаПлановая = "НЕТ ДОСТУПА"
                                    КонецЕсли;
13 mistеr
 
21.03.17
12:31
(3) Кто тебе мешает во внешней обработке сделать запрос ВЫБРАТЬ РАЗРЕШЕННЫЕ?
14 Егор123
 
21.03.17
12:33
(12) спасибо за столь щедрый, но ошибка вылетает всё та же )
{ВнешняяОбработка.КарточкаМероприятияЭЛМ.МодульОбъекта(823,75)}: Ожидается выражение
                                    Если ПравоДоступа("Чтение", Метаданные.БизнесПроцессы.Исполнение,<<?>> &ТекущийПользователь,) ТОГДА (Проверка: Сервер)
15 Егор123
 
21.03.17
12:35
(13) в запросе итак это есть:

|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|ЕСТЬNULL(втЗадачи.ДатаНачала, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаНачала,
16 mistеr
 
21.03.17
13:09
(15) А зачем лишний код тогда?
17 Егор123
 
21.03.17
13:19
(16) в запросе можно вывести слово "неопределено" для разрешённых? и как тогда?
18 mistеr
 
21.03.17
13:35
(17) Можно. Выводи для всех, не ошибешься.

> и как тогда?

Сделай так, чтобы юзер вообще не видел объектов, на которые у него нет доступа.
19 FIXXXL
 
21.03.17
13:35
чуть выше
ОбластьОставшиесяЗадачиФИОДаты.Параметры.ДатаПлановая = "";

и &ТекущийПользователь - это что? что отладчик говорит?
20 Егор123
 
21.03.17
14:03
(19) ошибка вот (14). Текущий пользователь системы. В РЛС так прописывается.
21 FIXXXL
 
21.03.17
14:33
(20) ну то РЛС, он пользователя из параметров сеанса берет
тебе же самому придется указать
22 FIXXXL
 
21.03.17
14:36
ТекущийПользователь()  к примеру
23 RomanYS
 
21.03.17
14:54
(21) СП говорит, что указывать текущего не обязательно.
"Вызов метода всегда требует административных прав, если явно указан третий параметр - <Пользователь/Роль>, права которого проверяются. Если пользователь не указан, то проверяются права текущего пользователя, и для этого наличие административных прав не требуется."