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