Проверка шаблонов ограничений (RLS для 1С 8.2-8.3)

Программирование - Инструментарий

RLS ограничение доступа шаблоны ограничений на уровне записей 1С программирование

69
Теперь, чтобы получить конечный запрос на таблицу, которую пользователь сможет получить после отработки RLS ограничений, вам ничего не надо придумывать.

Все вы, наверное знакомы с RLS (ограничения на уровне записей), но не многие смогут с лёгкостью написать свой шаблон и ограничения по нему, а тем более разобраться в чужих.

Эта обработка позволяет ввести текст шаблона ограничения и текст ограничения доступа для определённой таблицы и на выходе получить готовый запрос и его параметры, который в последствии легко отладить в такой обработке, как "Консоль запросов".

Эта обработка будет полезна как для программистов, для отладки собственных ограничений, так и администраторам, которым может понадобится для определения причины недоступности тех или иных данных у конкретных пользователей.

 

Исправлено:

  • Указывается #ИмяТекущейТаблицы, #ИмяТекущегоПраваДоступа
  • Выполняется инструкция СтрСодержит()

Выявленные ошибки:

  • Пока таковых нет
69

Скачать файлы

Наименование Файл Версия Размер
Проверка шаблонов ограничений RLS
.epf 10,63Kb
04.06.14
490
.epf 1.0 10,63Kb 490 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. ivanov660 892 16.03.14 12:30 Сейчас в теме
Скачал обработку. Запустил в демо базе бухгалтерии. И НЕ РАБОТАЕТ.
Посмотрел код, на мой взгляд можно было найти решение и получше. К примеру, один из правильных вариантов использование варианта алгоритма конечных автоматов.
К недостаткам могу отнести отсутствие в примере хотя бы краткой инструкции, и возможно добавления некого упрощенного варианта консоли запросов для проверки результата на месте.

upd. Решил попробовать на другой конфигурации (УТ) - вроде отработало. Поэтому делаю вывод, что данная обработка работоспособна не для всех версий и конфигураций. Предлагаю автору, все же доработать ее, либо описать ограничения, чтобы не вводить в заблуждение пользователей.
2. frutty 82 16.03.14 13:27 Сейчас в теме
Подскажите в какой именно конфигурации вы запускали и под каким пользователем, а также что именно вводили.
Я не претендую на ультра правильное решение этой задачи, делал обработку для себя и она мне помогла в моих проблемах. Развивать дальше планирую по мере потребностей, с консолью конечно удобнее, но проще совместить её с более продвинутой версией.
3. bird21 38 19.03.14 09:08 Сейчас в теме
Возьмем обработку на заметку, сейчас не актуально, но бывало нужно было.
4. DAnry 6 19.03.14 15:01 Сейчас в теме
На мой взгляд такие вещи не стоит доверять автоматике. Занимался этим вопросом, сам писал шаблоны ограничений RLS. Тут как говорится "Семь раз отмерь, один - отрежь". Очень аккуратно надо. Поэтому совет: САМОМУ разобраться в механизме RLS и запросах ограничений (можно воспользоваться готовыми шаблонами, но обязательно разобрать их по косточкам), на основе готовых написать свои, и тестировать, тестировать, тестировать (под разными пользователями и с разными настройками)
victorkim64; +1 Ответить
5. frutty 82 19.03.14 15:30 Сейчас в теме
(4) DAnry, Собственно тут и нет никакой автоматики, это всего лишь свёртываение шаблона до обыкновенного запроса, чтобы легче было видеть ошибки.
6. kser87 1669 20.03.14 15:09 Сейчас в теме
Было бы неплохо сделать обратное преобразование: из запроса 1С в текст ограничения.

Ну и результат запроса можно прямо в обработку выводить.


инструкции предпроцессору обрабатываются? если да, то как? имею в виду такую конструкцию #Если #Иначе #КонецЕсли
8. frutty 82 20.03.14 15:48 Сейчас в теме
(6) kser87, #ЕСЛИ #ТОГДА #ИНАЧЕЕСЛИ #ИНАЧЕ #КОНЕЦЕСЛИ - обрабатываются, именно для этого и делал.
12. nixel 515 10.06.14 11:48 Сейчас в теме
(6) kser87, что в этом сложного?
Текст ограничения - это и есть текст запроса. Просто без "ВЫБРАТЬ", без явного указания одной таблицы и без кучи возможностей обычного запроса.
Каким образом вы захотите это инструкциями препроцессору разбавить, ни одна обработка не знает. А отсутствующие возможности - ну будет она ругаться, что у вас "ПОМЕСТИТЬ" в запросе. Толку-то от этого? все равно руками разбирать.
7. kser87 1669 20.03.14 15:14 Сейчас в теме
Конечно, обработка очень далека от совершенства
9. AllexSoft 07.04.14 12:38 Сейчас в теме
хорошая штука, а то со стороны платформы для RLS ни сделано ничего ( даже отбора метаданных по ролям нету, не говоря уж об отладке RLS или конструкторе шаблонов
10. nixel 515 30.05.14 18:27 Сейчас в теме
Надеюсь, будет доработано под свежие версии БСП. Подписался.
11. Gendalf_beliy 30.05.14 18:43 Сейчас в теме
Возьму обработку на заметку, сейчас не актуально, но бывало нужно было.
Спасибо.
13. o.nikolaev 228 22.07.14 14:26 Сейчас в теме
1. Хотелось бы видеть более подробную инструкцию и простой пример
2. Нет возможности сохранять настройки, идеально - навигация по сохраненным настройкам - это видимо уже следующий уровень - среда разработки для RLS.
3. Возможность выполнения сформированного запроса с заданными параметрами
14. vital1c 89 27.08.14 10:42 Сейчас в теме
спасибо, обработка помогла разобраться с некоторыми шаблонами ут11
15. DISAoner 1 04.09.14 13:20 Сейчас в теме
Под УПП (обычное приложение) не запустилась...
16. EvilDoc 154 04.09.14 13:10 Сейчас в теме
я для этих целей просто консоль запросов использую. Не понимаю пользы этой обработки
17. EvilDoc 154 04.09.14 13:11 Сейчас в теме
Ручками несколько буквочек тыкнуть - превратить шаблон в запрос - если человек этого не может то ему ни какая обработка не поможет
18. artbear 1084 04.09.14 14:29 Сейчас в теме
Очень полезная обработка.
Без нее слишком много буковок в обычных консолях придется переделывать.
(17) Попробуй запрос БСП получить в консоли запросов и засеки время.
19. DISAoner 1 05.09.14 11:51 Сейчас в теме
(17) EvilDoc, пытаюсь разобрать в уже существующей базе(УПП) настройки RLS и частенько встречаю шаблоны с несколькими буковками...

#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоПроекты #Тогда
ТекущаяТаблица
ИЗ
	#ТекущаяТаблица КАК ТекущаяТаблица
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
			СоставГруппы.Ссылка КАК ГруппаПользователей
		ИЗ
			Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
		ГДЕ
			СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
		ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
	(НЕ 1 В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					1
				ИЗ
					РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
											
					#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
					ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
					ПО Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1)
					#КонецЕсли						   														  
					
					ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
						ПО
							НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
									
									#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
									КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
										ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
									#КонецЕсли
									
									#Если &ИспользоватьОграничениеПоОрганизации #Тогда
									КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
										ТОГДА ТекущаяТаблица.#Параметр(2)
									#КонецЕсли
									
									#Если &ИспользоватьОграничениеПоПроекты #Тогда
									КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Проекты)
										ТОГДА ТекущаяТаблица.#Параметр(3)
									#КонецЕсли
							
								КОНЕЦ
								И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
								И 								
								НастройкиПравДоступаПользователей.ОбластьДанных =
								#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
									ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
										ТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
									ИНАЧЕ
										ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
									КОНЕЦ
								#Иначе									
									ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
								#КонецЕсли
																								
								И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
				ГДЕ					
					 НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
						   И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
						   														  ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
						   														  
						   														  #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
						   														  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
						   														  #КонецЕсли
						   														  
						   														  #Если &ИспользоватьОграничениеПоОрганизации #Тогда
						   														  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
						   														  #КонецЕсли
						   														  
						   														  #Если &ИспользоватьОграничениеПоПроекты #Тогда
						   														  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Проекты)
						   														  #КонецЕсли
						   														  
						   														  )
				
					И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли
Показать


Все же с обработкой было бы легче.
20. frutty 82 05.09.14 11:18 Сейчас в теме
(19)DISAoner, какой-то маленький у вас шаблон =)

Хотел вставить шаблон из УТ11, но нарвался на это:
Прикрепленные файлы:
21. EvilDoc 154 05.09.14 12:13 Сейчас в теме
(20) Да, в новых конфах РЛС вообще клевый))
22. DISAoner 1 08.09.14 12:04 Сейчас в теме
(20) дело в том, что он не мой и я хотел бы его разобрать при помощи данной обработки, но она не открывается. При попытке открыть файл ничего не происходит((
23. frutty 82 08.09.14 12:05 Сейчас в теме
(22) DISAoner, Создайте пустую конфигурацию с управляемым интерфейсом и откройте мою обработку, должно сработать.
25. Makushimo 152 08.12.14 18:04 Сейчас в теме
на УТ 11 не работает

СтрСодержит() в выражении для Вычислить() под УФ(толстый клиент) идет по ветке Исключение
то есть не отрабатывает

запускаю туже конфу под обычными формами (толстый клиент) вычисляет без проблем

почему так?
26. frutty 82 09.12.14 10:15 Сейчас в теме
(25) Makushimo, Что-то я вас совсем не понял, подробнее пожалуйста и желательно с примерами.
27. herfis 261 29.12.14 18:37 Сейчас в теме
Не работает (результат пустой).
Тексты шаблона и ограничения прилагаю файлом.
Прикрепленные файлы:
RLS.txt
28. igor7702 03.06.15 07:23 Сейчас в теме
Запустил под Бухгалтерия 2.0 на обычных формах - обработка не открывается, проверил на БГУ 1.0 также.
На Бухгалтерии 3.0 управляемые формы открывается.
Как запустить в Бухгалтерии 2.0?
29. frutty 82 03.06.15 19:39 Сейчас в теме
(28) igor7702, Попробуйте в конфигураторе выставить "Использовать управляемые формы в обычном приложении"
30. Rioneri 54 24.08.15 22:51 Сейчас в теме
условие препроцессора вычисляется передачей в запрос в конструкцию "ВЫБОР...КОГДА...ТОГДА...КОНЕЦ", что неправильно так как в запросе нельзя сравнивать поля несовместимых типов, а в инструкции препроцессора можно - в ряде случаев вычисление инструкции свалится
31. Rioneri 54 24.08.15 22:52 Сейчас в теме
не разбирается возможность наличия в шаблоне именованных параметров (правда в типовых конфигурациях таких шаблонов вроде пока не видел) при наличии таковых обработка свалится
32. alekckuc 03.06.16 07:54 Сейчас в теме
Приветствую, скачал обработку возможно бага возможно я что то недопонял строка 350
Текст = СтрЗаменить(Текст,"#ИмяТекущейТаблицы",""""+ИмяТекущейТаблицы+"""");
У меня в шаблоне текст #ТекущаяТаблица соответсвенно замена не выполнилась.


Заменил руками получил такую строку ТекущаяТаблица ИЗ Контрагенты КАК ТекущаяТаблица
В консоли она понятно дело не сработала, консоль хочет слово Выбрать, как тут быть ?
33. frutty 82 03.06.16 11:35 Сейчас в теме
(32) alekckuc, приведите весь текст шаблона и ограничения.
34. Чародей 17 12.10.16 14:48 Сейчас в теме
(33) обработка не открывается в конфигурации 1С ТОиР. 8,2, галка "Использовать управляемые формы в обычном приложении" стоит.
35. babys 83 06.11.16 17:15 Сейчас в теме
Косяк в Управлении холдингом 1.1 / 8.3.7.2008
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка SDBL:
Поле ",ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеСведения,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеСведения,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеСведения,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеСведения,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеОтчетыИОбработки,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ДополнительныеСведения,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ДополнительныеСведения,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеСведения,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеСведения,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ПодразделенияОрганизаций,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ГруппыФизическихЛиц,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеОтчетыИОбработки,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ДополнительныеСведения,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,ПодразделенияОрганизаций,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,Пользователи,УчетныеЗаписиЭлектроннойПочты,
,ВнешниеПользователи,УчетныеЗаписиЭлектроннойПочты,
" имеет неограниченную длину и не может участвовать в сравнении.
Показать

И Завершить или Перезапустить
openmind; +1 Ответить
36. openmind 20.04.17 14:05 Сейчас в теме
Не работает.
1С:ERP Управление предприятием 2.0.10.145
1С:Предприятие 8.3 (8.3.9.1818)
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка SDBL:
Поле ",ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,Кассы,КассыККМ,Подразделения,ПодразделенияОрганизаций,Пользователи,СоглашенияСКлиентамиИзменение,СоглашенияСКлиентамиЧтение,УчетныеЗаписиЭлектроннойПочты,ЭквайринговыеТерминалы,
,ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,ЭквайринговыеТерминалы,
* * * * * *
(много чего про ВидыЦен)
* * * * * *
" имеет неограниченную длину и не может участвовать в сравнении.

И - вылетает платформа.
37. ilya005 118 15.01.18 04:14 Сейчас в теме
не работает
УТ 11.2 (11.2.3.108)

#ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","","РасширенноеИЛИ","")

{ВнешняяОбработка.ПроверкаШаблоновОграниченийRLS.Форма.Форма.Форма(341)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Выполнить("РезультатВыполнения = "+НРег(СтрокаВыполнения));
по причине:
{(1,29)}: Ожидается выражение
РезультатВыполнения = найти(<<?>>&видыдоступасотключеннымиспользованием, ",пользователи,")
Оставьте свое сообщение