Документооборот с контролирующими органами / Помощник МЧД полномочия / Модуль формы

файл

#Область ОписаниеПеременных

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ИнициализироватьЗначения(Параметры);
	ИнициализироватьПолномочия();
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура НеОграниченыПриИзменении(Элемент)
	
	УстановитьФлагУДанныеФормыДерево(Ложь);
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ТолькоДляОтчетностиПриИзменении(Элемент)

	МЧДБРОКлиентСервер.ВыделитьПолномочияДляОтчетностиРекурсивно(ЭтотОбъект, Полномочия);
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ОграниченПриИзменении(Элемент)
	ИзменитьОформлениеФормы();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы
// Код процедур и функций
#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура УдалитьВсе(Команда)
	
	УстановитьФлагУДанныеФормыДерево(Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьВсе(Команда)
	
	УстановитьФлагУДанныеФормыДерево(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура Сохранить(Команда)
	
	ВыбранаКорректно = ЗаполненоКорректно();
	Если НЕ ВыбранаКорректно Тогда
		Возврат;
	КонецЕсли;
	
	АдресДереваПолномочий = АдресДерева(ВладелецФормы.УникальныйИдентификатор);
	
	ДополнительныеПараметры = Новый Структура(ПараметрыФормы);
	ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект, ПараметрыФормы); 
	ДополнительныеПараметры.Вставить("ПараметрыФормы",     ПараметрыФормы);
	ДополнительныеПараметры.Вставить("Модифицированность", Модифицированность);
	
	Модифицированность = Ложь;
	
	Закрыть(ДополнительныеПараметры);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция АдресДерева(GUID)

	Возврат МЧДБРО.АдресДерева(ЭтотОбъект, GUID);

КонецФункции

&НаСервере
Процедура ИнициализироватьЗначения(Параметры)
	
	ПараметрыФормы = Параметры.ПараметрыФормы;
	ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, ПараметрыФормы);

КонецПроцедуры

&НаСервере
Процедура ИнициализироватьПолномочия()
	
	МЧДБРО.ИнициализироватьПолномочия(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Функция ЗаполненоКорректно() 
	
	Если ВидПолномочий = МЧДБРОКлиентСервер.ВсеПолномочия() Тогда
		Возврат Истина;
	КонецЕсли;
	
	Для Каждого Строка Из Полномочия.ПолучитьЭлементы() Цикл
		
		Результат = 
			ПроверитьПолномочияОргана(Строка, МЧДБРОКлиентСервер.МЧД_ФНС(), СоздатьМЧДФНС)
			И ПроверитьПолномочияОргана(Строка, МЧДБРОКлиентСервер.МЧД_СФР(), СоздатьМЧДСФР)
			И ПроверитьПолномочияОргана(Строка, МЧДБРОКлиентСервер.МЧД_ЦБ(), СоздатьМЧДЦБ)
			И ПроверитьПолномочияОргана(Строка, МЧДБРОКлиентСервер.МЧД_ЕФ(), СоздатьМЧДФТС ИЛИ СоздатьМЧДФСРАР ИЛИ СоздатьМЧДРосстат ИЛИ СоздатьМЧДРПН);
			
		Если Результат = Ложь Тогда
			Возврат Ложь;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Истина;
	
КонецФункции

&НаСервере
Функция ПроверитьПолномочияОргана(Строка, Наименование, СоздатьМЧД) 

	Если Строка.Наименование = Наименование И СоздатьМЧД И НЕ Строка.Пометка Тогда
		ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Добавьте полномочия для '") + Наименование);
		Возврат Ложь;
	Иначе
		Возврат Истина;
	КонецЕсли;
	
КонецФункции

&НаСервере
Процедура ИзменитьОформлениеФормы()
	
	ВсеПолномочия = ВидПолномочий = "Не ограничены";
	
	Элементы.Полномочия.Доступность = НЕ ВсеПолномочия;
	Элементы.ПанельТаблицы.Доступность = НЕ ВсеПолномочия;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьФлагРекурсивно(Корень, Пометка)
	
	Для Каждого Строка Из Корень.Строки Цикл
		
		Строка.Пометка = Пометка;
		
		Если Строка.Строки.Количество() > 0 Тогда
			УстановитьФлагРекурсивно(Строка, Пометка);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьФлагУДанныеФормыДерево(Пометка)
	
	ДеревоПолномочия = РеквизитФормыВЗначение("Полномочия");
	УстановитьФлагРекурсивно(ДеревоПолномочия, Пометка);
	ЗначениеВРеквизитФормы(ДеревоПолномочия, "Полномочия");
	
КонецПроцедуры

&НаКлиенте
Процедура ПолномочияПометкаПриИзменении(Элемент)
	
	ТребованияФНСКлиент.ДеревоПометкаПриИзменении(Элементы.Полномочия);
	
	Если ВидПолномочий = МЧДБРОКлиентСервер.ТолькоДляОтчетности() Тогда
		ВидПолномочий = МЧДБРОКлиентСервер.ПроизвольныйНабор();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы