Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Проверить права на документ по ссылке

Проверить права на документ по ссылке
Я
   bvb
 
28.12.12 - 14:38
Есть документ - на него права ОК

При проверке проведенности документа по ссылке из табличной части
 
Для каждого Стр Из  Ссылка.РасшифровкаПлатежа Цикл
Если  Стр.ДокументРасчетовСКонтрагентом.Проведен  Тогда    

возникает ошибка права доступа потому что по доступа на этот документ нет

Как программно проверить есть ли доступ к документу ссылке ?
 
 
   Господин ПЖ
 
1 - 28.12.12 - 14:39
жестоким способом? .ПолучитьОбъект()
   Reset
 
2 - 28.12.12 - 14:42
ПравоДоступа() - если RLS нет
Если есть то проверять условия, там указанные
   Господин ПЖ
 
3 - 28.12.12 - 14:43
разрешаю проверять в привелигерованном модуле
   bvb
 
4 - 28.12.12 - 14:44
(2) ПравоДоступа() смотрел .  Метод применим только к обхектам металанных
ПравоДоступа("Чтение", Стр.ДокументРасчетовСКонтрагентом.Метаданные()) возвращает ИСТИНА
   Gesperid
 
5 - 28.12.12 - 14:44
ВЫБРАТЬ РАЗРЕШЕННЫЕ ... ГДЕ Ссылка В (&Ссыли)
   Reset
 
6 - 28.12.12 - 15:01
(5) +1
Если пустой результат, значит нет доступа
   Reset
 
7 - 28.12.12 - 15:03
(4) Я про это написал в (2). Если ПравоДоступа возвращает Истину, значит не пускает RLS
   bvb
 
8 - 28.12.12 - 15:17
(7) Стыдно спрашивать, но можно пояснить что есть RLS ?
   Reset
 
9 - 28.12.12 - 15:29
(8) Динамическая система прав доступа.
Может быть указана для прав на Чтение, Изменение,Удаление.
Описывается как "запрос" (правильнее, наверное, называть это часть запроса) в форме настройки роли
   Reset
 
10 - 28.12.12 - 15:30
(9) +Добавление забыл.

Наиболее известный пример - ограничение доступа по Организации документа
 
 Рекламное место пустует
   bvb
 
11 - 28.12.12 - 15:32
В общем получилось так :

Функция ПраваДоступаНаДокумент  (Ссылка) Экспорт
     
     Запрос = Новый Запрос;
     
     Запрос.Текст = 
     "ВЫБРАТЬ РАЗРЕШЕННЫЕ
     |    Документы.Ссылка,
     |  Документы.Дата,
     |  Документы.Номер,
     |  Документы.Проведен,
     |  Документы.ПометкаУдаления
 
    |
     |ИЗ
     |    Документ." + Ссылка.Метаданные().Имя + " КАК Документы
     |ГДЕ
     |    Документы.Ссылка = &Ссылка";
     
     Запрос.УстановитьПараметр("Ссылка", Ссылка);
     
     Выборка = Запрос.Выполнить().Выбрать();
     
     Если Выборка.Следующий() Тогда
         Возврат ИСТИНА
     Иначе
         Возврат ЛОЖЬ;
     КонецЕсли;
     
 КонецФункции
   Господин ПЖ
 
12 - 28.12.12 - 15:34
|    Документы.Ссылка,
     |  Документы.Дата,
     |  Документы.Номер,

 
эти цацки обычно выведены из-под rls...
   Reset
 
13 - 28.12.12 - 15:36
Возврат Не Запрос.Выполнить().Пустой();

Выбирать его не обязательно
   bvb
 
14 - 28.12.12 - 15:44
(12)  Согласен.
(13)  Спасибо.

Неудобно сделано. Я предполагал если я задаю ССылку , Дату, Номер, Проведен без ограничений то эти поля можно прочитать по ссылке.
Оказывается эти поля можно прочитать только в запросе.

Цитата :
"Выбор поля означает , что в выборке запроса будут присутствовать только данные, в которых по указанному полю будут удовлетворяться условия "

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует