6664 lines
387 KiB
XML
6664 lines
387 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
|
||
<setForNewObjects>false</setForNewObjects>
|
||
<setForAttributesByDefault>true</setForAttributesByDefault>
|
||
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
||
<object>
|
||
<name>CommonAttribute.НаименованиеЯзык1</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОбластьДанныхИспользование</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.НаличиеФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ПропуститьПроверкуЗапретаИзменения</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.СчетчикПроблемВеденияУчета</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьПочтовыйКлиент</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьШаблоныСообщений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПараметрыИтоговИАгрегатов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.НаборыДополнительныхРеквизитовИСведений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПроверкаФайлаОбновления</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.Сканирование.Command.СканироватьЛист</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ПериодыНерабочихДнейКалендаря</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ВариантыОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
ВариантыОтчетов ГДЕ (ВариантыОтчетов.Пользовательский = ЛОЖЬ
|
||
ИЛИ ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ
|
||
ИЛИ ВариантыОтчетов.Автор = &АвторизованныйПользователь)
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДатаУведомленияОНовыхЗадачах</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СохранениеПоФорматуВыгрузки</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьЭлектронныеПодписи</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОбновитьВерсиюДатЗапретаИзмененияПослеЗагрузкиДанных</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.ПраваДоступа</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДополнительныеОтчетыИОбработки</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.НомераОтсканированныхФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
#ПоЗначениямРасширенный( "ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения", "", "",
|
||
"",
|
||
"",
|
||
"ДополнительныеСведения","Т.Ссылка","ИЛИ",
|
||
"Условие","НЕ ЭтоДополнительноеСведение","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ВерсияДатЗапретаИзменения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РазблокированиеРеквизитов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ЗапрещатьЗагрузкуФайловПоРасширению</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonAttribute.ОтредактированныеПредопределенныеРеквизиты</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РегиональныеНастройки</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ЗаявленияНаВыпускСертификата</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ВнешниеКомпоненты</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.АдресПубликацииИнформационнойБазыВИнтернете</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СоздаватьПодкаталогиСИменамиВладельцев</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПанельОтчетов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.АутентификацияВСервисе</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.НерекомендуемаяВерсияПлатформы</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.БуферОбмена</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.НастроитьПрава</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СпособХраненияФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ТекущийПользователь</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.СлужебныеАдресныеСведения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаВариантаОтчета</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВопросОбУстановкеРасширения1СПредприятия</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.УровниСокращенийАдресныхСведений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСинхронизациюДанныхВЛокальномРежиме</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИсторияАдминистративнойИерархии</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ВерсияКлассификатораБанков</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ВыполнятьЗамерыПроизводительности</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ВариантыОтчетов.Command.Открыть</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИерархияГруппПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьПризнакРассмотрено</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ПредопределенныеВариантыОтчетовВерсийРасширений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДобавлятьМеткиВремениАвтоматически</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СписокРасширенийФайловOpenDocumentОбластиДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСинхронизациюДанныхВМоделиСервиса</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ЭлектроннаяПодпись</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИспользованиеПоставляемыхДополнительныхОтчетовИОбработокВОбластяхДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РедактированиеДокументаOfficeOpen</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonAttribute.НаименованиеЯзык2</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НастройкиЭлектроннойПодписиИШифрования</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаВыбораЦвета</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.УстановкаВнешнейКомпонентыНевозможна</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВопросОбУстановкеВнешнейКомпоненты</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПраваДоступаУпрощенно</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборУзловПлановОбмена</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ПредопределенныеВариантыОтчетовРасширений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПредупрежденияПриЗавершенииРаботы</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ИдентификаторыОбъектовМетаданных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПредупреждениеБезопасности</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьШифрование</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПараметрыПроксиСервера</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ОбработчикиОбновления</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВходВПрограммуЗапрещен</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ОбщиеВнешниеКомпоненты</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СписокЗапрещенныхРасширенийОбластиДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОтправлятьПисьмаВФорматеHTML</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьПодчиненныеБизнесПроцессы</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.СтатусыСинхронизацииФайловСОблачнымСервисом</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДатыЗапретаЗагрузки</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ДанныеПроизводственногоКалендаря</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьВерсионированиеОбъектов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ВыполняетсяОбновлениеИБ</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ПричиныИзмененияАдресныхСведений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.УправлениеПодключениемDSS</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ЗагрузкаДанныхИзФайла</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.ПредупрежденияПриЗавершенииРаботы</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СписокРасширенийТекстовыхФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВопросОбУстановкеРасширенияРаботыСКриптографией</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборРолиИсполнителя</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ЗагруженныеВерсииАдресныхСведений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ВыполняетсяУдалениеОбъектов</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
|
||
<right>
|
||
<name>MainWindowModeNormal</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>MainWindowModeWorkplace</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>MainWindowModeEmbeddedWorkplace</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>MainWindowModeFullscreenWorkplace</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>MainWindowModeKiosk</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>AnalyticsSystemClient</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ИнформацияПриЗапуске.Command.ИнформацияПриЗапуске</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РедактированиеГиперссылки</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.УсовершенствоватьПодписиАвтоматически</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СписокРасширенийФайловOpenDocument</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВводНаРазныхЯзыках</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НастройкиПравОбъектов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДатаПоследнейВыгрузкиЗамеровПроизводительностиUTC</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.Вопрос</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.Пользователи</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Update</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
ГДЕ Ссылка = &ТекущийПользователь
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборОбъектовМетаданных</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ЗагрузитьСообщениеОбменаДанными</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПроверятьЭлектронныеПодписиНаСервере</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОграничениеДоступаНаУровнеЗаписейУниверсально</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПровайдерSMS</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОсновнойЯзык</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ВводКонтактнойИнформации</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДополнительныйЯзык1</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ПользовательскиеНастройкиОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
ГДЕ Пользователь = &АвторизованныйПользователь
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>Insert</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
ГДЕ Пользователь = &АвторизованныйПользователь
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>Update</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
ГДЕ Пользователь = &АвторизованныйПользователь
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.АвторизованныйПользователь</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ХранитьИсториюРассылкиОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаНастроекОтчета</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаПоиска</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РасширенноеПредставлениеОшибки</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.РазрешенныеНеаккредитованныеУЦ</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ОтчетОСохраненииФайловЭлектронныхПодписей</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОтложенноеОбновлениеЗавершеноУспешно</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ЗаполнениеКалендарныхГрафиков</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДополнительныеРеквизитыИСведения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.Сканирование</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьАнкетирование</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.СдвигГраницыИтогов</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборФорматаВложений</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.МаксимальныйРазмерФайла</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ПолнотекстовыйПоискВДанных</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ВерсияРасширений</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.РасширенныйВводКонтактнойИнформации</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПриоритетОбновленияВОбластяхДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПраваДоступа</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДополнительныйЯзык2</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СменаПароля</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборИсполнителяБизнесПроцесса</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ПроизводственныеКалендари</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ЗаменаИОбъединениеЭлементов</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ВидыКонтактнойИнформации</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.СтраныМира</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СоздаватьЭлектронныеПодписиНаСервере</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьГруппыВнешнихПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДатуИВремяВСрокахЗадач</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СохранениеВместеСЭлектроннойПодписью</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.КлассификаторыМЧД</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьКомандуЗаметки</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ДополнительныеАдресныеСведения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСервисDSS</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.Склонения</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СтатусОбновленияКонфигурации</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьОтправкуSMSВШаблонахСообщений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.КонтрольИзмененияРолейПользователяИБ</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.СоставыГруппПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьКомандуНапоминаний</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ПользовательскиеМакетыПечати</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.МуниципальнаяИерархия</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.УстановитьРасширениеДляРаботыС1СПредприятием</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.АдресаСерверовМетокВремени</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПодготовкаНовогоПисьма</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КоличествоМесяцевХраненияИсторииРассылкиОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КоличествоПотоковДлительныхОпераций</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НапоминаниеПриРедактировании</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonAttribute.КомментарийЯзык1</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборДаты</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОсновнойЯзык</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ПолнотекстовыйПоискВДанных.Command.ПолнотекстовыйПоиск</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СравнениеТабличныхДокументов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИсторияМуниципальнойИерархии</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьПолнотекстовыйПоиск</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДополнительныйЯзык2</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПечатьДокументов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборТиповПользователей</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.НастройкиКомандПечати</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СервисПереводаТекста</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.НеИспользоватьРазделениеПоОбластямДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаОтчета</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПервоеОбновлениеДоступаЗавершилось</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СведенияОБлокируемыхОбъектах</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.РекомендацияПоПовышениюСкоростиРаботы</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ПредопределенныеВариантыОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.СменитьПароль</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьЭлектроннуюПочтуВШаблонахСообщений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВспомогательнаяФормаНастроекОтчета</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Report.ПраваДоступа</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОценкаПроизводительностиПериодЗаписи</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ГлавныйУзел</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ЗаголовокСистемы</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РедактированиеТабличногоДокумента</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьБизнесПроцессыИЗадачи</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ГруппыПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользуютсяПрофилиБезопасности</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Report.СертификатыЭлектроннойПодписи</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НастройкаРабочегоКаталога</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СтандартныеПодсистемыВАвтономномРежиме</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.КонтрольДинамическогоОбновления</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОграничиватьДоступНаУровнеЗаписейУниверсально</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ЗначенияСвойствОбъектовИерархия</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
#ПоЗначениямРасширенный( "Справочник.ЗначенияСвойствОбъектовИерархия", "", "",
|
||
"",
|
||
"",
|
||
"ДополнительныеСведения","Т.Владелец","ИЛИ",
|
||
"Условие","НЕ Т.Владелец.ЭтоДополнительноеСведение","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ФормаВыбораШрифта</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.МаксимальныйРазмерФайлаОбластиДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьВнешнихПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.УчетныеЗаписиСинхронизацииФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НачалоРаботыСЭлектроннойПодписью</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ПрограммыЭлектроннойПодписиИШифрования</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ИдентификаторыОбъектовРасширений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ВыполняетсяЗаписьОбъекта</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.АдминистративнаяИерархия</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьГруппыПользователей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьНесколькоПроизводственныхКалендарей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.НастройкаПодчиненногоУзлаРИБЗавершена</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ЗначенияСвойствОбъектов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляОбъекта("")
|
||
#Иначе
|
||
#ПоЗначениямРасширенный( "Справочник.ЗначенияСвойствОбъектов", "", "",
|
||
"",
|
||
"",
|
||
"ДополнительныеСведения","Т.Владелец","ИЛИ",
|
||
"Условие","НЕ Т.Владелец.ЭтоДополнительноеСведение","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.НастройкиПользователей.Command.НастройкиПользователя</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.Сертификат</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.КлассификаторБанков</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ЗемельныеУчастки</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИсторияАдресныхОбъектов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборДействияПриОбнаруженииОтличийФайла</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СписокЗапрещенныхРасширений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ПараметрыОбработчикаОбновления</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.НастройкиВариантовОтчетов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийНастройкиВариантовОтчетов", "Вариант", "Пользователь", "", "", "")
|
||
#Иначе
|
||
ТекущаяТаблица
|
||
ГДЕ Пользователь = &АвторизованныйПользователь
|
||
ИЛИ Пользователь = НЕОПРЕДЕЛЕНО
|
||
ИЛИ Вариант.Автор = &АвторизованныйПользователь
|
||
ИЛИ ИСТИНА В (
|
||
ВЫБРАТЬ ПЕРВЫЕ 1
|
||
ИСТИНА
|
||
ИЗ
|
||
РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ГДЕ
|
||
СоставыГруппПользователей.ГруппаПользователей = ТекущаяТаблица.Пользователь
|
||
И СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь)
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
<right>
|
||
<name>Update</name>
|
||
<value>true</value>
|
||
<restrictionByCondition>
|
||
<condition>#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
|
||
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийНастройкиВариантовОтчетов", "Вариант", "Пользователь", "", "", "")
|
||
#Иначе
|
||
ТекущаяТаблица
|
||
ГДЕ Пользователь = &АвторизованныйПользователь
|
||
ИЛИ Пользователь = НЕОПРЕДЕЛЕНО
|
||
ИЛИ Вариант.Автор = &АвторизованныйПользователь
|
||
ИЛИ ИСТИНА В (
|
||
ВЫБРАТЬ ПЕРВЫЕ 1
|
||
ИСТИНА
|
||
ИЗ
|
||
РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ГДЕ
|
||
СоставыГруппПользователей.ГруппаПользователей = ТекущаяТаблица.Пользователь
|
||
И СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь)
|
||
#КонецЕсли</condition>
|
||
</restrictionByCondition>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.ПрисоединенныеФайлы</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПоддерживаемыеКлиентскиеПриложения</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.Обсуждения</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ИнтерактивнаяПроверкаЗаполненияСвойств</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Set</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КаталогВременныхФайловДляWindows</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьНапоминанияПользователя</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ТипПодписиКриптографииПоУмолчанию</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПрефиксУзлаРаспределеннойИнформационнойБазы</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СообщениеОбменаДаннымиИзГлавногоУзла</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьЗаметки</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.ЯзыкиПечатныхФорм</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСервисПереводаТекста</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СозданиеНачальногоОбразаСФайлами</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Report.МестаИспользованияСсылок</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПараметрыЦентраМониторинга</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОграничиватьДоступНаУровнеЗаписей</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.АдресныеОбъекты</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РазрешенныеНеаккредитованныеУЦ</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьРазделениеПоОбластямДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ХранитьФайлыВТомахНаДиске</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.КонструкторФормул</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСервисСклоненияMorpher</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СведенияОбОбновленииИБ</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.РедактированиеМеток</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.РегистрироватьИзмененияПравДоступа</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВводЗначенийСпискомСФлажками</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ОбщиеПоставляемыеМакетыПечати</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КоличествоПотоковОбновленияИнформационнойБазы</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ОтложенноеОбновлениеВГлавномУзлеЗавершеноУспешно</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДатыЗапретаИзменения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОтключениеОбновленияКлючейДоступа</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьПрочиеВзаимодействия</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ЭтоАвтономноеРабочееМесто</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ИнформацияПриЗапуске</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ПараметрыКлиентаНаСервере</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonAttribute.КомментарийЯзык2</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>Edit</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КаталогВременныхФайловДляLinux</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Catalog.МакетыПечатныхФорм</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>InputByString</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ИдентификаторыОбъектовВерсийРасширений</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.КоличествоЭлементовВТранзакцииЗагрузкиДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ТекущийВнешнийПользователь</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ГрупповоеИзменениеРеквизитов</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДополнительныйЯзык1</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.УстановленныеРасширения</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПечатьДокументовOfficeOpen</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonCommand.ПерсональнаяНастройкаПроксиСервера</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ДомаЗданияСтроения</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ПустойРабочийСтол</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборОсновнойПечатнойФормы</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.АдресПубликацииИнформационнойБазыВЛокальнойСети</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.КодировкиФайлов</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИсточникДанныхАдресногоКлассификатора</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.СвойстваИсправленийПередОбновлениемИБ</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ДействующиеДатыЗапретаИзменения</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.РаботаСВнешнимиРесурсамиЗаблокирована</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПараметрыХраненияФайловВИБ</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ДлительнаяОперация</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.РезультатыОбновленияПрограммы</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.СохранениеПечатнойФормы</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ПодключенныеРасширения</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.НастройкиПользователей</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ПоискИУдалениеДублей</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьСинхронизациюДанных</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИдентификаторИнформационнойБазы</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>DataProcessor.ПрограммыЭлектроннойПодписиИШифрования</name>
|
||
<right>
|
||
<name>Use</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>InformationRegister.ПоставляемыеМакетыПечати</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИзменятьЗаданияЗаднимЧислом</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.ВыборПутиКАрхивуФайловТомов</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>SessionParameter.ОбластьДанныхЗначение</name>
|
||
<right>
|
||
<name>Get</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.УсовершенствоватьПодписиСДаты</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>Constant.ИспользоватьДатуНачалаЗадач</name>
|
||
<right>
|
||
<name>Read</name>
|
||
<value>true</value>
|
||
</right>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<object>
|
||
<name>CommonForm.НовыйПароль</name>
|
||
<right>
|
||
<name>View</name>
|
||
<value>true</value>
|
||
</right>
|
||
</object>
|
||
<restrictionTemplate>
|
||
<name>ДляОбъекта(ПолеОбъекта)</name>
|
||
<condition>// ДляОбъекта(ПолеОбъекта = "")
|
||
// Шаблон используется для ограничения элементов справочников, документов и
|
||
// других списков объектов по полю Ссылка, а также элементов зависимых списков
|
||
// объектов и записей регистров через поле объекта-владельца.
|
||
//
|
||
// Параметры:
|
||
// ПолеОбъекта - имя поля, содержащего ссылку на объект, от которого зависит элемент списка.
|
||
// Значение "" (по умолчанию) то же, что имя поля "Ссылка".
|
||
//
|
||
|
||
#Если &СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
|
||
// Информационная база заблокирована для обновления.
|
||
ГДЕ ЛОЖЬ
|
||
|
||
#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта9,") #Тогда
|
||
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
|
||
#ИначеЕсли &СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
|
||
// У пользователя отключены все виды доступа или
|
||
// ограничение на уровне записей не используется.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
|
||
// У пользователя отключено ограничение для текущей таблицы.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
|
||
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
|
||
#ИначеЕсли #ИмяТекущегоПраваДоступа <> "Чтение" #Тогда
|
||
// Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
|
||
ГДЕ ЛОЖЬ
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
|
||
Ошибка: Внешние пользователи отключены.
|
||
|
||
#ИначеЕсли Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;")
|
||
И Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
|
||
Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляОбъекта со значением параметра "#ПолеОбъекта". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
#Иначе
|
||
|
||
ТекущаяТаблица ГДЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.КлючиДоступаКОбъектам КАК КлючиДоступаКОбъектам
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
|
||
ПО
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
|
||
#Иначе
|
||
КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
|
||
#КонецЕсли
|
||
И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &РазрешенныйНаборГруппДоступа
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;*") #Тогда
|
||
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
|
||
ПО
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
|
||
#Иначе
|
||
КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
|
||
#КонецЕсли
|
||
И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &РазрешенныйПустойНаборГруппДоступа
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
|
||
ПО
|
||
КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
|
||
И КлючиДоступаПользователей.Пользователь = &РазрешенныйПользователь
|
||
#Иначе
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
|
||
ПО
|
||
КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
|
||
И КлючиДоступаПользователей.ВнешнийПользователь = &РазрешенныйПользователь
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+") #Тогда
|
||
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
|
||
ПО
|
||
КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
|
||
И КлючиДоступаНаборовГруппПользователей.Пользователь = &РазрешенныйНаборГруппПользователей
|
||
#Иначе
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
|
||
ПО
|
||
КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
|
||
И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &РазрешенныйНаборГруппПользователей
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
ГДЕ
|
||
#Если "#ПолеОбъекта" = ""
|
||
Или СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;;-")
|
||
Или СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;*;-")
|
||
Или СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;;-")
|
||
Или СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+;-") #Тогда
|
||
КлючиДоступаКОбъектам.Объект = ТекущаяТаблица.Ссылка
|
||
#Иначе
|
||
КлючиДоступаКОбъектам.Объект = ТекущаяТаблица.#ПолеОбъекта
|
||
#КонецЕсли
|
||
И (
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
|
||
#Иначе
|
||
ЛОЖЬ
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;*") #Тогда
|
||
ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+") #Тогда
|
||
ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
)
|
||
)
|
||
|
||
#Если Не СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
|
||
И ( СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
|
||
Или СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
|
||
|
||
#Если Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
|
||
И ИСТИНА В (ИСТИНА
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
)
|
||
#Иначе
|
||
И ИСТИНА В (ИСТИНА
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
)
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
|
||
#КонецЕсли</condition>
|
||
</restrictionTemplate>
|
||
<restrictionTemplate>
|
||
<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
|
||
<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
|
||
// Шаблон используется для ограничения групп записей регистров.
|
||
//
|
||
// Параметры:
|
||
// Регистр - имя предопределенного элемента справочника Идентификаторы объектов метаданных или справочника
|
||
// Идентификаторы объектов расширений в формате: имя справочника с точкой и полное имя таблицы
|
||
// без точки, например, ИдентификаторыОбъектовМетаданных.РегистрНакопленияОстаткиНаСкладах;
|
||
// - имя отдельного регистра ключей в формате КлючиДоступаКРегистру<ОстатокИмени>,
|
||
// например, КлючиДоступаКРегиструОстаткиНаСкладах.
|
||
// Поле1 - имя первого поля (измерения, ресурса, реквизита), которое будет соединяться с полем Поле1
|
||
// регистра сведений КлючиДоступаКРегистр*
|
||
// Поле2 - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.
|
||
// ...
|
||
// Поле5 - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.
|
||
|
||
#Если &СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
|
||
// Информационная база заблокирована для обновления.
|
||
ГДЕ ЛОЖЬ
|
||
|
||
#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ДляРегистра9,") #Тогда
|
||
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
|
||
#ИначеЕсли &СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
|
||
// У пользователя отключены все виды доступа или
|
||
// ограничение на уровне записей не используется.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
|
||
// У пользователя отключено ограничение для текущей таблицы.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
|
||
Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
|
||
#ИначеЕсли #ИмяТекущегоПраваДоступа <> "Чтение" #Тогда
|
||
// Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
|
||
ГДЕ ИСТИНА
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
|
||
ГДЕ ЛОЖЬ
|
||
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
|
||
Ошибка: Внешние пользователи отключены.
|
||
|
||
#ИначеЕсли Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;")
|
||
И Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
|
||
Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляРегистра со значениями параметров "#Регистр", "#Поле1", "#Поле2", "#Поле3", "#Поле4", "#Поле5". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
#Иначе
|
||
|
||
ТекущаяТаблица ГДЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
#Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
|
||
ИЗ РегистрСведений.КлючиДоступаКРегистрам КАК КлючиДоступаКРегистрам
|
||
#Иначе
|
||
ИЗ РегистрСведений.#Регистр КАК КлючиДоступаКРегистрам
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
|
||
ПО
|
||
КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &РазрешенныйНаборГруппДоступа
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
|
||
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
|
||
ПО
|
||
КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &РазрешенныйПустойНаборГруппДоступа
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
|
||
ПО
|
||
КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаПользователей.Пользователь = &РазрешенныйПользователь
|
||
#Иначе
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
|
||
ПО
|
||
КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаПользователей.ВнешнийПользователь = &РазрешенныйПользователь
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
|
||
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
|
||
ПО
|
||
КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаНаборовГруппПользователей.Пользователь = &РазрешенныйНаборГруппПользователей
|
||
#Иначе
|
||
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
|
||
ПО
|
||
КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
|
||
И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &РазрешенныйНаборГруппПользователей
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
ГДЕ
|
||
#Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
|
||
КлючиДоступаКРегистрам.Регистр = Значение(Справочник.#Регистр)
|
||
#Иначе
|
||
ИСТИНА
|
||
#КонецЕсли
|
||
И
|
||
(
|
||
КлючиДоступаКРегистрам.ВариантДоступа =
|
||
(
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
|
||
#Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Версия1=0") #Тогда
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит0=1") #Тогда + 64 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит1=1") #Тогда + 128 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит2=1") #Тогда + 256 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит3=1") #Тогда + 512 #КонецЕсли
|
||
#КонецЕсли
|
||
)
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле1;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2") #Тогда
|
||
|
||
ИЛИ
|
||
КлючиДоступаКРегистрам.ВариантДоступа =
|
||
(
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
|
||
#Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Версия2=0") #Тогда
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит0=1") #Тогда + 64 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит1=1") #Тогда + 128 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит2=1") #Тогда + 256 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит3=1") #Тогда + 512 #КонецЕсли
|
||
#КонецЕсли
|
||
)
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле1;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3") #Тогда
|
||
|
||
ИЛИ
|
||
КлючиДоступаКРегистрам.ВариантДоступа =
|
||
(
|
||
#Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
|
||
#Если Не СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Версия3=0") #Тогда
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле") #Тогда + 2 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит0=1") #Тогда + 64 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит1=1") #Тогда + 128 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит2=1") #Тогда + 256 #КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит3=1") #Тогда + 512 #КонецЕсли
|
||
#КонецЕсли
|
||
)
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле1;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле2;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле3;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле4;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
|
||
#ИначеЕсли СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#Если СтрСодержит(&СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле5;") #Тогда
|
||
И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
|
||
#КонецЕсли
|
||
|
||
#КонецЕсли
|
||
)
|
||
И (
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
|
||
#Иначе
|
||
ЛОЖЬ
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
|
||
ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
#Если СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
|
||
ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
|
||
#КонецЕсли
|
||
)
|
||
)
|
||
|
||
#Если Не СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
|
||
И ( СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
|
||
Или СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
|
||
|
||
#Если Не СтрСодержит(&СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
|
||
И ИСТИНА В (ИСТИНА
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
)
|
||
#Иначе
|
||
И ИСТИНА В (ИСТИНА
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
#Если СтрСодержит(&ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
|
||
)
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
|
||
#КонецЕсли</condition>
|
||
</restrictionTemplate>
|
||
<restrictionTemplate>
|
||
<name>ПоЗначениямРасширенный</name>
|
||
<condition>// ПоЗначениямРасширенный(Таблица, -, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)).
|
||
// № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3.
|
||
// Читается так: "ограничение доступа по значениям расширенный".
|
||
// Параметры:
|
||
// Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
|
||
// Модификатор - изменяет шаблон.
|
||
// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает
|
||
// безусловно выбирать группы иерархического справочника.
|
||
// Других модификаторов в этой версии шаблона не предусмотрено.
|
||
// ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например,
|
||
// "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1
|
||
// ПО Т.Ссылка = Т1.Ссылка".
|
||
// Присоединение позволяет указать поля таблицы ОплатаПоставщикам, как поля основной таблицы
|
||
// для проверки их значений, как значений основной таблицы.
|
||
// Следует помнить, что при размножении строк в результате соединения, достаточно чтобы
|
||
// всего одна строка прошла условия проверки, т.е. результаты проверки строк объединяются по "ИЛИ".
|
||
// О - Начальные скобки "(".
|
||
// В(n) - Вид доступа - имя вида доступа, например, "Организации". Для полей составного типа, с целью повышения
|
||
// производительности, лучше указать несколько имен, например, "Организации,ГруппыФизическихЛиц",
|
||
// чем использовать несколько блоков параметров, с одним и тем же именем поля.
|
||
// Специальные виды доступа "Условие", "НастройкиПрав", "ПравоЧтения", "ПравоИзменения",
|
||
// "ПравоЧтенияПоИдентификатору", "ПравоИзмененияПоИдентификатору" можно использовать только отдельно.
|
||
// Когда В(n) = "Условие" (или ""), тогда П(n) содержит строку условия на языке запросов, например
|
||
// "Т.Автор = &АвторизованныйПользователь",
|
||
// "ТИПЗНАЧЕНИЯ(Т.Владелец) = ТИП(Справочник.Организации)", где Т - псевдоним текущей таблицы.
|
||
// Когда В(n) = "ПравоЧтения" Или "ПравоИзменения",
|
||
// выполняется проверка наличия права на таблицу значения Т.П(n).
|
||
// Когда В(n) = "ПравоЧтенияПоИдентификатору" или "ПравоИзмененияПоИдентификатору",
|
||
// выполняется проверка наличия права на таблицу по идентификатору в значении Т.П(n).
|
||
// П(n) - Поле проверяемого значения с псевдонимом, например "Т.Организация",
|
||
// кроме случая В(n) = "Условие" (или "").
|
||
// О(n) - Логические операции "И", "ИЛИ" в сочетании с скобками "(", ")".
|
||
// Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
|
||
// необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
|
||
// Шаблон имеет структуру:
|
||
// <Общая часть условий> <Условие по группе параметров 1> И/ИЛИ <Условие по группе параметров 2> И/ИЛИ ... <Условие по группе параметров(n)>
|
||
// Пример:
|
||
// ПоЗначениямРасширенный("Документ.ПеремещениеТоваров", "", "",
|
||
// "",
|
||
// "",
|
||
// "Организации","Т.Организация","И(",
|
||
// "Склады","Т.СкладОтправитель","ИЛИ",
|
||
// "Склады","Т.СкладПолучатель",")", "","","", ...)
|
||
|
||
#Если &ОграничениеДоступаНаУровнеЗаписейИспользуется = "" #Тогда // Информационная база заблокирована для обновления.
|
||
ГДЕ ЛОЖЬ
|
||
|
||
#ИначеЕсли Не СтрСодержит(&ВерсииШаблоновОграниченияДоступа, ",ПоЗначениямРасширенный18,") #Тогда
|
||
Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 18 шаблона ограничения доступа ПоЗначениямРасширенный. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
|
||
|
||
#Иначе
|
||
|
||
// Проверка правильности параметра Право.
|
||
#Если Не ("#Параметр(2)" = "Чтение" Или "#Параметр(2)" = "Добавление" Или
|
||
"#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление" Или "#Параметр(2)" = "")
|
||
Или #ИмяТекущегоПраваДоступа <> "Чтение" И "#Параметр(2)" = "Чтение"
|
||
Или #ИмяТекущегоПраваДоступа = "Чтение" И "#Параметр(2)" <> "Чтение" И "#Параметр(2)" <> "" #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверноеПраво: #Параметр(2)
|
||
#КонецЕсли
|
||
|
||
// Проверка правильности параметра ИмяТаблицы.
|
||
#Если "#Параметр(1)" <> #ИмяТекущейТаблицы #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверноеИмяТекущейТаблицы: "#Параметр(1)"
|
||
#КонецЕсли
|
||
|
||
// Проверка правильности параметра Модификатор.
|
||
#Если Не ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" Или "#Параметр(3)" = "") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйМодификатор: #Параметр(3)
|
||
#КонецЕсли
|
||
|
||
// Общая проверка использования ограничений доступа на уровне записей и
|
||
// проверка использования хотя бы одного ограничения из указанных видов доступа.
|
||
#Если Не
|
||
( Истина
|
||
И ("#Параметр(6)" = "" И "#Параметр(7)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),"))
|
||
И ("#Параметр(9)" = "" И "#Параметр(10)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(9),"))
|
||
И ("#Параметр(12)" = "" И "#Параметр(13)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),"))
|
||
И ("#Параметр(15)" = "" И "#Параметр(16)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(15),"))
|
||
И ("#Параметр(18)" = "" И "#Параметр(19)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),"))
|
||
И ("#Параметр(21)" = "" И "#Параметр(22)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(21),"))
|
||
И ("#Параметр(24)" = "" И "#Параметр(25)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),"))
|
||
И ("#Параметр(27)" = "" И "#Параметр(28)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(27),"))
|
||
И ("#Параметр(30)" = "" И "#Параметр(31)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),"))
|
||
И ("#Параметр(33)" = "" И "#Параметр(34)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(33),"))
|
||
И ("#Параметр(36)" = "" И "#Параметр(37)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(36),"))
|
||
И ("#Параметр(39)" = "" И "#Параметр(40)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(39),"))
|
||
И ("#Параметр(42)" = "" И "#Параметр(43)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(42),"))
|
||
И ("#Параметр(45)" = "" И "#Параметр(46)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(45),"))
|
||
И ("#Параметр(48)" = "" И "#Параметр(49)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(48),"))
|
||
И ("#Параметр(51)" = "" И "#Параметр(52)" = ""
|
||
Или Не &ОграничениеДоступаНаУровнеЗаписейИспользуется
|
||
И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(51),"))
|
||
) #Тогда
|
||
|
||
Т ИЗ Т // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).
|
||
|
||
// Присоединяемые таблицы к проверяемой строке текущей таблицы "Т".
|
||
#Параметр(4)
|
||
|
||
ГДЕ
|
||
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на текущую таблицу в целом.
|
||
// Права на таблицы формируются по составу ролей профиля группы доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ
|
||
#Если СтрСодержит(&ТаблицыРасширенийСОграничениемДоступа, "|#Параметр(1);") #Тогда
|
||
Справочник.ИдентификаторыОбъектовРасширений КАК СвойстваТекущейТаблицы
|
||
#Иначе
|
||
Справочник.ИдентификаторыОбъектовМетаданных КАК СвойстваТекущейТаблицы
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
|
||
ПО
|
||
СвойстваТекущейТаблицы.ПолноеИмя = "#Параметр(1)"
|
||
И ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ
|
||
РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа
|
||
ГДЕ
|
||
ТаблицыГруппДоступа.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
И ТаблицыГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
#Если #ИмяТекущегоПраваДоступа = "Изменение" #Тогда
|
||
И ТаблицыГруппДоступа.ПравоИзменение
|
||
#ИначеЕсли #ИмяТекущегоПраваДоступа = "Добавление" #Тогда
|
||
И ТаблицыГруппДоступа.ПравоДобавление
|
||
#КонецЕсли
|
||
)
|
||
И ГруппыДоступа.Ссылка В
|
||
(
|
||
ВЫБРАТЬ
|
||
ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
|
||
ИЗ
|
||
Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь
|
||
)
|
||
ГДЕ
|
||
|
||
// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
|
||
#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда
|
||
Т.ЭтоГруппа ИЛИ
|
||
#КонецЕсли
|
||
|
||
( // Поиск значений заданных полей в разрешенных значениях групп доступа (пользователей).
|
||
|
||
#Параметр(5) // [([(][(]...] 0-n открывающихся скобок.
|
||
|
||
//// Проверка значения поля группы параметров 1.
|
||
#Если &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(6)" = "Условие" Или "#Параметр(6)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(7) )
|
||
#ИначеЕсли "#Параметр(6)" = "ПравоЧтения" Или "#Параметр(6)" = "ПравоИзменения" #Тогда
|
||
#Параметр(7) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
|
||
#Если Не "#Параметр(6)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(6)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(7)
|
||
#Если Не "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(6)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(7)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(7)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(6),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(6)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(6)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(6)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(6),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(6),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(6),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(7)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(6),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(7)
|
||
#ИначеЕсли "#Параметр(7)" = "Т.Ссылка"
|
||
И "#Параметр(6)" <> "Пользователи"
|
||
И "#Параметр(6)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(6)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(6)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(6),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(7)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(7)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(7))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(8) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 2.
|
||
#Если "#Параметр(9)" = "" И "#Параметр(10)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(9)" = "Условие" Или "#Параметр(9)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(10) )
|
||
#ИначеЕсли "#Параметр(9)" = "ПравоЧтения" Или "#Параметр(9)" = "ПравоИзменения" #Тогда
|
||
#Параметр(10) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
|
||
#Если Не "#Параметр(9)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(9)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(10)
|
||
#Если Не "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(9)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(10)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(10)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(9),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(9)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(9)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(9)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(9),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(9),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(9),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(10)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(9),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(10)
|
||
#ИначеЕсли "#Параметр(10)" = "Т.Ссылка"
|
||
И "#Параметр(9)" <> "Пользователи"
|
||
И "#Параметр(9)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(9)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(9)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(9),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(10)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(10)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(10))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(11) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 3.
|
||
#Если "#Параметр(12)" = "" И "#Параметр(13)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(12)" = "Условие" Или "#Параметр(12)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(13) )
|
||
#ИначеЕсли "#Параметр(12)" = "ПравоЧтения" Или "#Параметр(12)" = "ПравоИзменения" #Тогда
|
||
#Параметр(13) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
|
||
#Если Не "#Параметр(12)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(12)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(13)
|
||
#Если Не "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(12)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(13)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(13)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(12),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(12)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(12)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(12)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(12),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(12),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(12),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(13)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(12),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(13)
|
||
#ИначеЕсли "#Параметр(13)" = "Т.Ссылка"
|
||
И "#Параметр(12)" <> "Пользователи"
|
||
И "#Параметр(12)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(12)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(12)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(12),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(13)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(13)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(13))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(14) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 4.
|
||
#Если "#Параметр(15)" = "" И "#Параметр(16)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(15)" = "Условие" Или "#Параметр(15)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(16) )
|
||
#ИначеЕсли "#Параметр(15)" = "ПравоЧтения" Или "#Параметр(15)" = "ПравоИзменения" #Тогда
|
||
#Параметр(16) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
|
||
#Если Не "#Параметр(15)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(15)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(16)
|
||
#Если Не "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(15)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(16)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(16)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(15),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(15)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(15)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(15)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(15),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(15),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(15),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(16)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(15),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(16)
|
||
#ИначеЕсли "#Параметр(16)" = "Т.Ссылка"
|
||
И "#Параметр(15)" <> "Пользователи"
|
||
И "#Параметр(15)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(15)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(15)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(15),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(16)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(16)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(16))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(17) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 5.
|
||
#Если "#Параметр(18)" = "" И "#Параметр(19)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(18)" = "Условие" Или "#Параметр(18)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(19) )
|
||
#ИначеЕсли "#Параметр(18)" = "ПравоЧтения" Или "#Параметр(18)" = "ПравоИзменения" #Тогда
|
||
#Параметр(19) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
|
||
#Если Не "#Параметр(18)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(18)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(19)
|
||
#Если Не "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(18)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(19)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(19)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(18),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(18)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(18)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(18)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(18),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(18),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(18),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(19)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(18),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(19)
|
||
#ИначеЕсли "#Параметр(19)" = "Т.Ссылка"
|
||
И "#Параметр(18)" <> "Пользователи"
|
||
И "#Параметр(18)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(18)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(18)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(18),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(19)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(19)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(19))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(20) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 6.
|
||
#Если "#Параметр(21)" = "" И "#Параметр(22)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(21)" = "Условие" Или "#Параметр(21)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(22) )
|
||
#ИначеЕсли "#Параметр(21)" = "ПравоЧтения" Или "#Параметр(21)" = "ПравоИзменения" #Тогда
|
||
#Параметр(22) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
|
||
#Если Не "#Параметр(21)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(21)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(22)
|
||
#Если Не "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(21)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(22)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(22)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(21),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(21)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(21)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(21)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(21),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(21),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(21),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(22)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(21),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(22)
|
||
#ИначеЕсли "#Параметр(22)" = "Т.Ссылка"
|
||
И "#Параметр(21)" <> "Пользователи"
|
||
И "#Параметр(21)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(21)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(21)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(21),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(22)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(22)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(22))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(23) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 7.
|
||
#Если "#Параметр(24)" = "" И "#Параметр(25)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(24)" = "Условие" Или "#Параметр(24)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(25) )
|
||
#ИначеЕсли "#Параметр(24)" = "ПравоЧтения" Или "#Параметр(24)" = "ПравоИзменения" #Тогда
|
||
#Параметр(25) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
|
||
#Если Не "#Параметр(24)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(24)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(25)
|
||
#Если Не "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(24)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(25)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(25)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(24),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(24)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(24)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(24)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(24),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(24),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(24),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(25)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(24),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(25)
|
||
#ИначеЕсли "#Параметр(25)" = "Т.Ссылка"
|
||
И "#Параметр(24)" <> "Пользователи"
|
||
И "#Параметр(24)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(24)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(24)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(24),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(25)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(25)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(25))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(26) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 8.
|
||
#Если "#Параметр(27)" = "" И "#Параметр(28)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(27)" = "Условие" Или "#Параметр(27)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(28) )
|
||
#ИначеЕсли "#Параметр(27)" = "ПравоЧтения" Или "#Параметр(27)" = "ПравоИзменения" #Тогда
|
||
#Параметр(28) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
|
||
#Если Не "#Параметр(27)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(27)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(28)
|
||
#Если Не "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(27)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(28)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(28)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(27),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(27)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(27)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(27)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(27),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(27),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(27),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(28)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(27),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(28)
|
||
#ИначеЕсли "#Параметр(28)" = "Т.Ссылка"
|
||
И "#Параметр(27)" <> "Пользователи"
|
||
И "#Параметр(27)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(27)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(27)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(27),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(28)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(28)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(28))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(29) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 9.
|
||
#Если "#Параметр(30)" = "" И "#Параметр(31)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(30)" = "Условие" Или "#Параметр(30)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(31) )
|
||
#ИначеЕсли "#Параметр(30)" = "ПравоЧтения" Или "#Параметр(30)" = "ПравоИзменения" #Тогда
|
||
#Параметр(31) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
|
||
#Если Не "#Параметр(30)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(30)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(31)
|
||
#Если Не "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(30)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(31)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(31)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(30),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(30)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(30)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(30)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(30),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(30),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(30),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(31)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(30),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(31)
|
||
#ИначеЕсли "#Параметр(31)" = "Т.Ссылка"
|
||
И "#Параметр(30)" <> "Пользователи"
|
||
И "#Параметр(30)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(30)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(30)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(30),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(31)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(31)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(31))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(32) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 10.
|
||
#Если "#Параметр(33)" = "" И "#Параметр(34)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(33)" = "Условие" Или "#Параметр(33)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(34) )
|
||
#ИначеЕсли "#Параметр(33)" = "ПравоЧтения" Или "#Параметр(33)" = "ПравоИзменения" #Тогда
|
||
#Параметр(34) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
|
||
#Если Не "#Параметр(33)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(33)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(34)
|
||
#Если Не "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(33)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(34)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(34)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(33),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(33)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(33)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(33)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(33),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(33),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(33),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(34)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(33),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(34)
|
||
#ИначеЕсли "#Параметр(34)" = "Т.Ссылка"
|
||
И "#Параметр(33)" <> "Пользователи"
|
||
И "#Параметр(33)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(33)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(33)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(33),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(34)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(34)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(34))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(35) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 11.
|
||
#Если "#Параметр(36)" = "" И "#Параметр(37)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(36)" = "Условие" Или "#Параметр(36)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(37) )
|
||
#ИначеЕсли "#Параметр(36)" = "ПравоЧтения" Или "#Параметр(36)" = "ПравоИзменения" #Тогда
|
||
#Параметр(37) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
|
||
#Если Не "#Параметр(36)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(36)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(37)
|
||
#Если Не "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(36)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(37)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(37)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(36),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(36)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(36)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(36)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(36),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(36),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(36),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(37)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(36),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(37)
|
||
#ИначеЕсли "#Параметр(37)" = "Т.Ссылка"
|
||
И "#Параметр(36)" <> "Пользователи"
|
||
И "#Параметр(36)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(36)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(36)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(36),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(37)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(37)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(37))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(38) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 12.
|
||
#Если "#Параметр(39)" = "" И "#Параметр(40)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(39)" = "Условие" Или "#Параметр(39)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(40) )
|
||
#ИначеЕсли "#Параметр(39)" = "ПравоЧтения" Или "#Параметр(39)" = "ПравоИзменения" #Тогда
|
||
#Параметр(40) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
|
||
#Если Не "#Параметр(39)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(39)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(40)
|
||
#Если Не "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(39)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(40)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(40)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(39),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(39)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(39)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(39)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(39),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(39),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(39),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(40)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(39),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(40)
|
||
#ИначеЕсли "#Параметр(40)" = "Т.Ссылка"
|
||
И "#Параметр(39)" <> "Пользователи"
|
||
И "#Параметр(39)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(39)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(39)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(39),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(40)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(40)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(40))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(41) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 13.
|
||
#Если "#Параметр(42)" = "" И "#Параметр(43)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(42)" = "Условие" Или "#Параметр(42)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(43) )
|
||
#ИначеЕсли "#Параметр(42)" = "ПравоЧтения" Или "#Параметр(42)" = "ПравоИзменения" #Тогда
|
||
#Параметр(43) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
|
||
#Если Не "#Параметр(42)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(42)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(43)
|
||
#Если Не "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(42)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(43)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(43)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(42),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(42)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(42)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(42)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(42),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(42),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(42),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(43)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(42),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(43)
|
||
#ИначеЕсли "#Параметр(43)" = "Т.Ссылка"
|
||
И "#Параметр(42)" <> "Пользователи"
|
||
И "#Параметр(42)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(42)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(42)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(42),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(43)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(43)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(43))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(44) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 14.
|
||
#Если "#Параметр(45)" = "" И "#Параметр(46)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(45)" = "Условие" Или "#Параметр(45)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(46) )
|
||
#ИначеЕсли "#Параметр(45)" = "ПравоЧтения" Или "#Параметр(45)" = "ПравоИзменения" #Тогда
|
||
#Параметр(46) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
|
||
#Если Не "#Параметр(45)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(45)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(46)
|
||
#Если Не "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(45)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(46)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(46)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(45),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(45)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(45)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(45)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(45),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(45),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(45),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(46)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(45),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(46)
|
||
#ИначеЕсли "#Параметр(46)" = "Т.Ссылка"
|
||
И "#Параметр(45)" <> "Пользователи"
|
||
И "#Параметр(45)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(45)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(45)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(45),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(46)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(46)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(46))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(47) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 15.
|
||
#Если "#Параметр(48)" = "" И "#Параметр(49)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(48)" = "Условие" Или "#Параметр(48)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(49) )
|
||
#ИначеЕсли "#Параметр(48)" = "ПравоЧтения" Или "#Параметр(48)" = "ПравоИзменения" #Тогда
|
||
#Параметр(49) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
|
||
#Если Не "#Параметр(48)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(48)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(49)
|
||
#Если Не "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(48)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(49)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(49)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(48),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(48)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(48)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(48)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(48),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(48),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(48),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(49)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(48),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(49)
|
||
#ИначеЕсли "#Параметр(49)" = "Т.Ссылка"
|
||
И "#Параметр(48)" <> "Пользователи"
|
||
И "#Параметр(48)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(48)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(48)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(48),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(49)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(49)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(49))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(50) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
//// Проверка значения поля группы параметров 16.
|
||
#Если "#Параметр(51)" = "" И "#Параметр(52)" = "" #Тогда
|
||
// Группа параметров не используется.
|
||
#ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(51)" = "Условие" Или "#Параметр(51)" = "") #Тогда
|
||
// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
|
||
( #Параметр(52) )
|
||
#ИначеЕсли "#Параметр(51)" = "ПравоЧтения" Или "#Параметр(51)" = "ПравоИзменения" #Тогда
|
||
#Параметр(52) <> НЕОПРЕДЕЛЕНО
|
||
И ИСТИНА В
|
||
( // Проверка права пользователя на таблицу Значения, установленного в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
|
||
#Если Не "#Параметр(51)" = "ПравоЧтения" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(51)" = "ПравоИзмененияПоИдентификатору" #Тогда
|
||
ИСТИНА В
|
||
( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
|
||
ГДЕ
|
||
ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(52)
|
||
#Если Не "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" #Тогда
|
||
И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
|
||
#КонецЕсли
|
||
)
|
||
#ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
|
||
ИСТИНА // Группа параметров отключена.
|
||
#ИначеЕсли "#Параметр(51)" = "НастройкиПрав" #Тогда
|
||
|
||
(
|
||
ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(52)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
|
||
ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
|
||
ПО
|
||
НаследованиеНастроек.Объект = #Параметр(52)
|
||
И НастройкиПрав.Объект = НаследованиеНастроек.Родитель
|
||
#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения
|
||
#Иначе
|
||
#Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
|
||
И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
|
||
#Иначе
|
||
И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
|
||
#КонецЕсли
|
||
И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения
|
||
#КонецЕсли
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
|
||
ПО
|
||
СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь
|
||
И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
|
||
)
|
||
)
|
||
#ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(51),") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
#Если СтрСодержит("#Параметр(51)", ",") #Тогда
|
||
НеверныйВидДоступа: "#Параметр(51)" - "Список имен видов доступа не найден"
|
||
#Иначе
|
||
НеверныйВидДоступа: "#Параметр(51)" - "Имя вида доступа не найдено"
|
||
#КонецЕсли
|
||
#ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все"
|
||
И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(51),") #Тогда
|
||
|
||
(
|
||
ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
И
|
||
#Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(51),", ",Пользователи,"))
|
||
Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(51),", ",ВнешниеПользователи,")) #Тогда
|
||
НЕ
|
||
(
|
||
НЕ ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
|
||
ГДЕ
|
||
ГруппыЗначенийДоступа.ЗначениеДоступа = #Параметр(52)
|
||
И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь
|
||
)
|
||
И НЕ
|
||
#Иначе
|
||
(
|
||
#КонецЕсли
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
#Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(51),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = #Параметр(52)
|
||
#ИначеЕсли "#Параметр(52)" = "Т.Ссылка"
|
||
И "#Параметр(51)" <> "Пользователи"
|
||
И "#Параметр(51)" <> "ВнешниеПользователи" #Тогда
|
||
#Если СтрСодержит("#Параметр(51)", ",") #Тогда
|
||
// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
|
||
НеверныйВидДоступа: "#Параметр(51)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
|
||
#ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(51),") #Тогда
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ГДЕ
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = Т.ГруппаДоступа
|
||
#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
|
||
И ГруппыЗначений.Ссылка = #Параметр(52)
|
||
#КонецЕсли
|
||
#Иначе
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
|
||
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
|
||
ПО
|
||
Значения.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа
|
||
И ГруппыЗначений.ЗначениеДоступа = #Параметр(52)
|
||
#КонецЕсли
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
=
|
||
ВЫБОР
|
||
КОГДА ИСТИНА В
|
||
(
|
||
ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
|
||
ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
|
||
ГДЕ
|
||
ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
|
||
И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(52))
|
||
И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
|
||
)
|
||
ТОГДА ИСТИНА
|
||
ИНАЧЕ ЛОЖЬ
|
||
КОНЕЦ
|
||
)
|
||
)
|
||
#Иначе
|
||
ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО
|
||
#КонецЕсли
|
||
|
||
#Параметр(53) // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.
|
||
|
||
)
|
||
)
|
||
#КонецЕсли
|
||
|
||
#КонецЕсли // Информационная база заблокирована для обновления.</condition>
|
||
</restrictionTemplate>
|
||
</Rights>
|