Имя: Пароль:
1C
1С v8
RLS. Шаблоны ограничений доступа.
, ,
0 МОРЖ
 
18.12.12
14:38
Имеется шаблон. Например
#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда
   // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
   НеверныйМодификатор: #Параметр(3)
#КонецЕсли
// Проверка правильности параметра Право.
#Если НЕ ("#Параметр(2)" = "Чтение"    ИЛИ "#Параметр(2)" = "Добавление" ИЛИ
         "#Параметр(2)" = "Изменение" ИЛИ "#Параметр(2)" = "Удаление") #Тогда
   // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
   НеверноеПраво: #Параметр(2)
#КонецЕсли

// Общая проверка использования ограничений доступа на уровне записей.
#Если НЕ &ОграничиватьДоступПоВиду = "" #Тогда

Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).

// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда
   Т.ЭтоГруппа ИЛИ
#КонецЕсли

Истина

Шаблон большой, тяжело читать. Существует отладчик шаблонов либо чудо-функция, которая при определении параметров шаблона выдавала бы результат - результирующий текст запроса.

Ну или как вариант, когда сеанс уже запущен, запрос RLS уже по идее существует. Можно ли его как-нибудь прочитать?
1 МихаилМ
 
18.12.12
14:40
"как вариант, когда сеанс уже запущен"
технологический журнал Вам в помощь.
2 narayanan
 
18.12.12
14:40
(0) Платформа 1С в явном виде не предоставляет возможность отладки работы механизма RLS, но тем ни менее сделать это вполне реально. Для этого можно воспользоваться универсальной консолью отчетов (версия не ниже 2.6.9.2), на закладке «Данные» у которой есть функция «Выполнить от имени». Обработка создаст COM-соединение с помощью указанного имени пользователя и пароля, и выдаст результат выполнения запроса в консоль.
3 МОРЖ
 
18.12.12
14:58
(2) Задача не "узнать результат запроса", а "узнать результирующий текст запроса". Типа обработка где в текстовое поле вводишь:


#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда

   // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.

   НеверныйМодификатор: #Параметр(3)

#КонецЕсли

// Проверка правильности параметра Право.

#Если НЕ ("#Параметр(2)" = "Чтение"    ИЛИ "#Параметр(2)" = "Добавление" ИЛИ

         "#Параметр(2)" = "Изменение" ИЛИ "#Параметр(2)" = "Удаление") #Тогда

   // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.

   НеверноеПраво: #Параметр(2)

#КонецЕсли


// Общая проверка использования ограничений доступа на уровне записей.

#Если НЕ &ОграничиватьДоступПоВиду = "" #Тогда


Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).


// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).

#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда

   Т.ЭтоГруппа ИЛИ
#КонецЕсли


Истина


затем задать параметры и на выходе получить:

Т где Т.ЭтоГруппа ИЛИ Истина
4 МОРЖ
 
18.12.12
14:59
(1) ринулся изучать, в логах пусто, а в дампе не тхт. От туда получится вытащить результирующий запрос RLS?
5 narayanan
 
18.12.12
15:04
(4) Может эта обработка http://sevg14.narod2.ru/
6 МихаилМ
 
18.12.12
15:50
(4)
кончно получится. покрайней мере для субд.
для файловой должнобыть аналогично.
7 МОРЖ
 
18.12.12
16:03
(5) вижу заголовок "Обработка шаблонов ограничений(RLS) 1С 8.2" вижу ссылку на инструкцию работы с библиотекой (управление доступа оттуда скора наизусть буду знать:))/
Обработки самой не вижу!)
8 narayanan
 
18.12.12
16:12
(7) хм, он помоему ее продает,вот так вот
9 МОРЖ
 
18.12.12
16:17
да, 500 рублей)
10 Мыш
 
18.12.12
16:19
(9) Не ведись! Напиши сам и продавай на соседнем сайте за 400 рублей! Пусть этот буржуй утрется )
11 МОРЖ
 
18.12.12
16:22
ну я тоже решил что несерьезно. но правда крайне интересно, как она работает
12 Мыш
 
18.12.12
16:28
(11) СтрЗаменить() - вот главный движитель )))
13 Мыш
 
18.12.12
16:29
Жду 200 рублей на водку за наводку )
14 МОРЖ
 
18.12.12
16:34
А что с директивы препроцессора будешь делать?
15 МОРЖ
 
18.12.12
16:36
за стрЗаменить() 200 рублей много)))
16 pessok
 
18.12.12
16:36
(14) там из директор вроде только параметры да получение констант, не?
17 pessok
 
18.12.12
16:36
*из директив
18 МОРЖ
 
18.12.12
16:39
(16) не очень понял. Там из них весь шаблон состоит.
Из

#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда
  А
#Иначе
  Б
#КонецЕсли
  С


"АС" или "БС" с помощью СтрЗаменить() не получишь
19 pessok
 
18.12.12
16:43
ВЫБРАТЬ ВЫБОР КОГДА &пар3 = Значение(Константы.НеОграничиватьДоступКГруппам) ТОГДА А ИНАЧЕ Б КОНЕЦ КАК Ы, С ИЗ ИТД
20 МОРЖ
 
18.12.12
16:44
Это как раз преобразовывать не надо. Это текст запроса - это то что нужно получить.
21 Мыш
 
18.12.12
16:52
(15) Если Найти(Стр, "#Если")>0 Тогда Пока Найти(Стр, "#Иначе")=0 Или Найти(Стр, "#КонецЕсли")=0 Цикл КонецЕсли

Это уже на 250 рублей. А если за тебя весь алгоритм написать, то это уже на все 500 потянет! )))
22 Мыш
 
18.12.12
16:54
Совсем народ обленился. )))
23 МОРЖ
 
19.12.12
14:01
о да, ты гениален)
24 Мыш
 
26.12.12
09:56
(23) Слова - пустое сотрясение воздуха. И они не булькают! Всё ещё надеюсь на более вещественное признание заслуг )