Сравнительный анализ показателей работы менеджеров / Выбор настроек / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	АдресДереваПоказателейВоВременномХранилище = Параметры.ДеревоНастроек;
	
	СформироватьДеревоНастроек(ПолучитьИзВременногоХранилища(АдресДереваПоказателейВоВременномХранилище));
	ВыводитьДиаграммы                = Параметры.ВыводитьДиаграммы;
	ВыводитьЛегенду                  = Параметры.ВыводитьЛегенду;
	ВыводитьТаблицы                  = Параметры.ВыводитьТаблицы;
	ПроцентнаяСтавка                 = Параметры.ПроцентнаяСтавка;
	КомпоновщикОтбораПоПользователям = Параметры.НастройкаКомпоновки;
	УИД_ВызвавшейФормы = Параметры.УИД_ВызывающейФормы;
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоНастроек

&НаКлиенте
Процедура ДеревоНастроекВключатьПриИзменении(Элемент)
	
	ТекущаяСтрока = ДеревоНастроек.НайтиПоИдентификатору(Элементы.ДеревоНастроек.ТекущаяСтрока);
	Если ТекущаяСтрока.Включать = 2 Тогда
		ТекущаяСтрока.Включать = 0;
	КонецЕсли;
	
	Родитель = ТекущаяСтрока.ПолучитьРодителя();
	Если Родитель = Неопределено Тогда
		
		Для каждого ПодчиненныйЭлемент Из ТекущаяСтрока.ПолучитьЭлементы() Цикл
			
			Если ТекущаяСтрока.Включать <> ПодчиненныйЭлемент.Включать Тогда
				ПодчиненныйЭлемент.Включать = ТекущаяСтрока.Включать;
			КонецЕсли;
			
		КонецЦикла;
		
	Иначе
		
		ЗначениеПредыдущегоЭлемента = 2;
		
		Для каждого ПодчиненныйЭлемент Из Родитель.ПолучитьЭлементы() Цикл
			
			Если ЗначениеПредыдущегоЭлемента <> 2 И (ПодчиненныйЭлемент.Включать <> ЗначениеПредыдущегоЭлемента) Тогда
				Родитель.Включать = 2;
				Возврат;
			ИначеЕсли Родитель.Включать <> ПодчиненныйЭлемент.Включать Тогда
				Родитель.Включать = ПодчиненныйЭлемент.Включать;
			КонецЕсли;
			
			ЗначениеПредыдущегоЭлемента =  ПодчиненныйЭлемент.Включать;
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Выбрать(Команда)
	
	Закрыть(СтруктураПараметровВыбора());
	
КонецПроцедуры

&НаКлиенте
Процедура НаборыДанныхВыбратьВсе(Команда)
	
	УстановитьЗначениеФлажкаВключать(Истина,ДеревоНастроек);
	
КонецПроцедуры

&НаКлиенте
Процедура НаборыДанныхИсключитьВсе(Команда)
	
	УстановитьЗначениеФлажкаВключать(Ложь,ДеревоНастроек);
	
КонецПроцедуры

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

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

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

&НаСервере
Функция НоваяСтрокаДереваПоказателей (Родитель,СтрокаДереваПоказателей)

	НоваяСтрока = Родитель.ПолучитьЭлементы().Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаДереваПоказателей);
	Возврат НоваяСтрока;

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

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

&НаСервере
Функция ДеревоПоказателей()
	
	ДеревоЗначенийПоказатели = ПолучитьИзВременногоХранилища(АдресДереваПоказателейВоВременномХранилище);
	
	Для каждого СтрокаДереваГруппы Из ДеревоНастроек.ПолучитьЭлементы() Цикл
		
		НайденнаяСтрока = ДеревоЗначенийПоказатели.Строки.Найти(СтрокаДереваГруппы.Имя,"Имя",Истина);
		Если НайденнаяСтрока <> Неопределено Тогда
			НайденнаяСтрока.Включать = СтрокаДереваГруппы.Включать;
		КонецЕсли;
		
		Для каждого СтрокаДереваПоказатель Из СтрокаДереваГруппы.ПолучитьЭлементы() Цикл
			
			НайденнаяСтрока = ДеревоЗначенийПоказатели.Строки.Найти(СтрокаДереваПоказатель.Имя,"Имя",Истина);
			Если НайденнаяСтрока <> Неопределено Тогда
				НайденнаяСтрока.Включать = СтрокаДереваПоказатель.Включать;
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат ПоместитьВоВременноеХранилище(ДеревоЗначенийПоказатели,УИД_ВызвавшейФормы);
	
КонецФункции

&НаСервере
Функция СтруктураПараметровВыбора()

	ПараметрыВыбора = Новый Структура;
	ПараметрыВыбора.Вставить("ВыводитьДиаграммы",ВыводитьДиаграммы);
	ПараметрыВыбора.Вставить("ВыводитьТаблицы",ВыводитьТаблицы);
	ПараметрыВыбора.Вставить("ВыводитьЛегенду",ВыводитьЛегенду);
	ПараметрыВыбора.Вставить("ПроцентнаяСтавка",ПроцентнаяСтавка);
	ПараметрыВыбора.Вставить("Показатели",ДеревоПоказателей());
	ПараметрыВыбора.Вставить("НастройкиКомпоновки",КомпоновщикОтбораПоПользователям);
	
	Возврат ПараметрыВыбора;

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

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

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