Анализ расходов по УСН / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
	
#Область ПрограммныйИнтерфейс

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

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

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

#КонецЕсли

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