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