bdd2

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

Опубликовал Максим Лёвочкин (frutty) в раздел Программирование - Инструментарий

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

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

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

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

 

Исправлено:

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

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

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

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

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

См. также

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

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

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


инструкции предпроцессору обрабатываются? если да, то как? имею в виду такую конструкцию #Если #Иначе #КонецЕсли
7. Андрей Волин (kser87) 1245 20.03.14 15:14 Сейчас в теме
Конечно, обработка очень далека от совершенства
8. Максим Лёвочкин (frutty) 92 20.03.14 15:48 Сейчас в теме
(6) kser87, #ЕСЛИ #ТОГДА #ИНАЧЕЕСЛИ #ИНАЧЕ #КОНЕЦЕСЛИ - обрабатываются, именно для этого и делал.
9. Алексей Белоусов (AllexSoft) 07.04.14 12:38 Сейчас в теме
хорошая штука, а то со стороны платформы для RLS ни сделано ничего ( даже отбора метаданных по ролям нету, не говоря уж об отладке RLS или конструкторе шаблонов
10. Никита Грызлов (nixel) 71 30.05.14 18:27 Сейчас в теме
Надеюсь, будет доработано под свежие версии БСП. Подписался.
11. Viacheslav Bilous (Gendalf_beliy) 30.05.14 18:43 Сейчас в теме
Возьму обработку на заметку, сейчас не актуально, но бывало нужно было.
Спасибо.
12. Никита Грызлов (nixel) 71 10.06.14 11:48 Сейчас в теме
(6) kser87, что в этом сложного?
Текст ограничения - это и есть текст запроса. Просто без "ВЫБРАТЬ", без явного указания одной таблицы и без кучи возможностей обычного запроса.
Каким образом вы захотите это инструкциями препроцессору разбавить, ни одна обработка не знает. А отсутствующие возможности - ну будет она ругаться, что у вас "ПОМЕСТИТЬ" в запросе. Толку-то от этого? все равно руками разбирать.
13. Олег Николаев (o.nikolaev) 160 22.07.14 14:26 Сейчас в теме
1. Хотелось бы видеть более подробную инструкцию и простой пример
2. Нет возможности сохранять настройки, идеально - навигация по сохраненным настройкам - это видимо уже следующий уровень - среда разработки для RLS.
3. Возможность выполнения сформированного запроса с заданными параметрами
14. Виталий Гуляев (vital1c) 80 27.08.14 10:42 Сейчас в теме
спасибо, обработка помогла разобраться с некоторыми шаблонами ут11
15. Дмитрий Гладун (DISAoner) 1 04.09.14 13:20 Сейчас в теме
Под УПП (обычное приложение) не запустилась...
16. Денис Vvv (EvilDoc) 119 04.09.14 13:10 Сейчас в теме
я для этих целей просто консоль запросов использую. Не понимаю пользы этой обработки
17. Денис Vvv (EvilDoc) 119 04.09.14 13:11 Сейчас в теме
Ручками несколько буквочек тыкнуть - превратить шаблон в запрос - если человек этого не может то ему ни какая обработка не поможет
18. Артур Аюханов (artbear) 840 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) 92 05.09.14 11:18 Сейчас в теме
(19)DISAoner, какой-то маленький у вас шаблон =)

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

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

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

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


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

И Завершить или Перезапустить