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