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