План-фактный анализ оплат и начислений по аренде / Модуль объекта

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

#Область СлужебныйПрограммныйИнтерфейс

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

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

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

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

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

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

Процедура СформироватьПараметрыОтчета(ПараметрКоманды, ПараметрыФормы, Параметры)
	
	Если ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда
		Если ПараметрКоманды.Количество() > 0 Тогда
			ПервыйЭлемент = ПараметрКоманды[0];
		Иначе
			ПервыйЭлемент = Неопределено;
		КонецЕсли;
	Иначе
		ПервыйЭлемент = ПараметрКоманды;
	КонецЕсли;
	
	Если ТипЗнч(ПервыйЭлемент) = Тип("СправочникСсылка.ДоговорыАренды") Тогда
		
		ПараметрыФормы.Отбор = Новый Структура("Договор", ПараметрКоманды);
		ПараметрыФормы.КлючНазначенияИспользования = ПараметрКоманды;
		Параметры.КлючНазначенияИспользования = ПараметрКоманды;
		
	КонецЕсли;
	
КонецПроцедуры

Процедура НастроитьОтчетПоДоговору(Форма, КомпоновщикНастроекФормы)
	
	Если НЕ Форма.Параметры.Свойство("КлючВарианта")
		ИЛИ Форма.Параметры.КлючВарианта <> "ПоДоговоруКонтекст" Тогда
		Возврат;
	КонецЕсли;
	
	ПараметрКоманды = Форма.Параметры.ПараметрКоманды;
	
	Если ТипЗнч(ПараметрКоманды) = Тип("Массив") Тогда
		СписокДоговоров = ПараметрКоманды;
	Иначе
		СписокДоговоров = Новый Массив;
		СписокДоговоров.Добавить(ПараметрКоманды);
	КонецЕсли;
		
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ЕСТЬNULL(МАКСИМУМ(ДоговорыАренды.ЕстьОбеспечительныйПлатеж), ЛОЖЬ) КАК ЕстьОбеспечительныйПлатеж,
	|	ЕСТЬNULL(МАКСИМУМ(ДоговорыАренды.ЕстьВыкупПредметовАренды), ЛОЖЬ) КАК ЕстьВыкупПредметовАренды
	|ИЗ
	|	Справочник.ДоговорыАренды КАК ДоговорыАренды
	|ГДЕ
	|	ДоговорыАренды.Ссылка В (&СписокДоговоров)";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("СписокДоговоров", СписокДоговоров);
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	ЕстьОбеспечительныйПлатеж = Ложь;
	ЕстьВыкупПредметовАренды = Ложь;

	Если Выборка.Следующий() Тогда
		ЕстьОбеспечительныйПлатеж = Выборка.ЕстьОбеспечительныйПлатеж;
		ЕстьВыкупПредметовАренды = Выборка.ЕстьВыкупПредметовАренды;
	КонецЕсли;
	
	ИменаЭлементов = Новый Массив;
	
	Если НЕ ЕстьОбеспечительныйПлатеж Тогда
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.НачисленияПлан");
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.НачисленияФакт");
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.НачисленияОтклонение");
		
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.ОплатаПлан");
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.ОплатаФакт");
		ИменаЭлементов.Добавить("ОбеспечительныйПлатеж.ОплатаОтклонение");
	КонецЕсли;

	Если НЕ ЕстьВыкупПредметовАренды Тогда
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.НачисленияПлан");
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.НачисленияФакт");
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.НачисленияОтклонение");
		
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.ОплатаПлан");
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.ОплатаФакт");
		ИменаЭлементов.Добавить("ВыкупнаяСтоимость.ОплатаОтклонение");
	КонецЕсли;
	
	Если НЕ УчетАрендованныхОС.ИспользуетсяУчетАрендыПоФСБУ25_2018() Тогда
		ИменаЭлементов.Добавить("Проценты.НачисленияПлан");
		ИменаЭлементов.Добавить("Проценты.НачисленияФакт");
		ИменаЭлементов.Добавить("Проценты.НачисленияОтклонение");
	КонецЕсли;
	
	Если ИменаЭлементов.Количество() <> 0 Тогда
		КомпоновкаДанныхСервер.УдалитьВыбранноеПолеИзВсехНастроекОтчета(КомпоновщикНастроекФормы, ИменаЭлементов, Истина);
	КонецЕсли;

КонецПроцедуры

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

#КонецЕсли

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