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