Договоры аренды (лизинга) / Модуль менеджера

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

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

// Выполняет поиск действующего договора для документа.
// Если найден один действующий договор, возвращает ссылку на него, в противном случае - пустую ссылку.
// 
// Параметры:
// 	Организация - СправочникСсылка.Организации - 
// 	Партнер - СправочникСсылка.Партнеры - 
// 	Контрагент - СправочникСсылка.Контрагенты - 
// 	ТекущийДоговор - СправочникСсылка.ДоговорыАренды -
// 	ТипДоговора - ПеречислениеСсылка.ТипыДоговоровАренды -
// 	
// Возвращаемое значение:
// 	СправочникСсылка.ДоговорыАренды - 
Функция ДоговорПоУмолчанию(Организация, Партнер, Контрагент, ТекущийДоговор, ТипДоговора = Неопределено) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДоговорыАренды.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.ДоговорыАренды КАК ДоговорыАренды
	|ГДЕ
	|	(НЕ ДоговорыАренды.ПометкаУдаления)
	|	И ДоговорыАренды.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
	|	И ДоговорыАренды.Партнер = &Партнер
	|	И ДоговорыАренды.Контрагент = &Контрагент
	|	И ДоговорыАренды.Организация = &Организация
	|	И ДоговорыАренды.Ссылка = &ТекущийДоговор
	|	И (ДоговорыАренды.ТипДоговора = &ТипДоговора
	|		ИЛИ &ТипДоговора = НЕОПРЕДЕЛЕНО)
	|;
	|
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
	|	ДоговорыАренды.Ссылка КАК Ссылка
	|ИЗ
	|	Справочник.ДоговорыАренды КАК ДоговорыАренды
	|ГДЕ
	|	(НЕ ДоговорыАренды.ПометкаУдаления)
	|	И ДоговорыАренды.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
	|	И ДоговорыАренды.Партнер = &Партнер
	|	И ДоговорыАренды.Контрагент = &Контрагент
	|	И ДоговорыАренды.Организация = &Организация
	|	И (ДоговорыАренды.ТипДоговора = &ТипДоговора
	|		ИЛИ &ТипДоговора = НЕОПРЕДЕЛЕНО)
	|";
	Запрос.УстановитьПараметр("ТекущийДоговор", ТекущийДоговор);
	Запрос.УстановитьПараметр("Партнер", Партнер);
	Запрос.УстановитьПараметр("Контрагент", Контрагент);
	Запрос.УстановитьПараметр("Организация", Организация);
	Запрос.УстановитьПараметр("ТипДоговора", ТипДоговора);
	
	МассивРезультатов = Запрос.ВыполнитьПакет();
	
	Если Не МассивРезультатов[0].Пустой() Тогда
		
		Выборка = МассивРезультатов[0].Выбрать();
		Выборка.Следующий();
		
		ДоговорПоУмолчанию = Выборка.Ссылка;
		
	Иначе
		Выборка = МассивРезультатов[1].Выбрать();
	
		Если Не Выборка.Следующий() Тогда
			ДоговорПоУмолчанию = Справочники.ДоговорыАренды.ПустаяСсылка();
		ИначеЕсли Выборка.Количество() = 1 Тогда
			ДоговорПоУмолчанию = Выборка.Ссылка;
		Иначе
			ДоговорПоУмолчанию = Справочники.ДоговорыАренды.ПустаяСсылка();
		КонецЕсли;
	КонецЕсли;
	
	Возврат ДоговорПоУмолчанию;
	
КонецФункции

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

	Возврат Результат;
	
КонецФункции

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

	Если ЗначенияРеквизитов.ЕстьВыкупПредметовАренды Тогда
		Результат.Добавить(Перечисления.ТипыПлатежейПоАренде.ВыкупнаяСтоимость);
	КонецЕсли;
	
	Если ЗначенияРеквизитов.ВестиУчетАвансовПоТекущимАренднымПлатежамВРазрезеПлатежныхДокументов Тогда
		Результат.Добавить(Перечисления.ТипыПлатежейПоАренде.УслугаПоАрендеАванс);
	КонецЕсли;

	Возврат Результат;
	
КонецФункции

// Возвращает документ заключения договора аренды
//
// Параметры:
//	Договор - СправочникСсылка.ДоговорыАренды
//
// Возвращаемое значение:
//	ДокументСсылка.ЗаключениеДоговораАренды
//
Функция ДокументЗаключенияДоговораАренды(Договор) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Договор", Договор);
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
	|	ЗаключениеДоговораАренды.Ссылка
	|ИЗ
	|	Документ.ЗаключениеДоговораАренды КАК ЗаключениеДоговораАренды
	|ГДЕ
	|	ЗаключениеДоговораАренды.Проведен
	|	И ЗаключениеДоговораАренды.Договор = &Договор
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЗаключениеДоговораАренды.Дата УБЫВ";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	Иначе
		Возврат Документы.ЗаключениеДоговораАренды.ПустаяСсылка();
	КонецЕсли;
	
КонецФункции

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

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

#Область Команды

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

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

	ОписаниеКоманды = Документы.ПринятиеКУчетуОС2_4.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 2);
	Если ОписаниеКоманды <> Неопределено Тогда
		ОписаниеКоманды.Важность = "Важное";
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ПометкаУдаления", Ложь);
	КонецЕсли;
	
	ОписаниеКоманды = Документы.ПоступлениеУслугПоАренде.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 3);
	Если ОписаниеКоманды <> Неопределено Тогда
		ОписаниеКоманды.Важность = "Важное";
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ПометкаУдаления", Ложь);
	КонецЕсли;

	ОписаниеКоманды = Документы.ИзменениеУсловийДоговораАренды.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 4);
	Если ОписаниеКоманды <> Неопределено Тогда
		ОписаниеКоманды.Важность = "Важное";
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ПометкаУдаления", Ложь);
	КонецЕсли;
	
	ОписаниеКоманды = Документы.ВыкупАрендованныхОС.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 5);
	Если ОписаниеКоманды <> Неопределено Тогда
		ОписаниеКоманды.Важность = "Важное";
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ЕстьВыкупПредметовАренды", Истина);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ПометкаУдаления", Ложь);
	КонецЕсли;
	
	ОписаниеКоманды = Документы.ПрекращениеДоговораАренды.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 6);
	Если ОписаниеКоманды <> Неопределено Тогда
		ОписаниеКоманды.Важность = "Важное";
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует);
		ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(ОписаниеКоманды, "ПометкаУдаления", Ложь);
	КонецЕсли;
	
	Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 7);
	Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 8);
	Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, 9);
	
	Документы.ЗаявлениеОВвозеТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	УчетАрендованныхОС.ДобавитьКомандуОтчетаВедомостьРасчетовПоДоговоруАренды(КомандыОтчетов);

	Отчеты.ПланФактныйАнализОплатИНачисленийПоАренде.ДобавитьКомандуОтчета(КомандыОтчетов, "ПоДоговоруКонтекст");
	
КонецПроцедуры

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	Если НЕ ПравоДоступа("Чтение", Метаданные.Документы.ЗаключениеДоговораАренды) Тогда
		Возврат;
	КонецЕсли;

	ДобавитьКомандуРасшифровкиРасчетаПроцентов(КомандыПечати);

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

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

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"ПрисоединитьДополнительныеТаблицы
	|ЭтотСписок КАК Т
	|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИерархияПартнеров КАК Т2 
	|	ПО Т2.Родитель = Т.Партнер
	|;
	|РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Т2.Партнер)
	|	И ЗначениеРазрешено(Т.Организация)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// // Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
// Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

#Область Печать

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

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

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

#КонецЕсли

#Область ОбработчикиСобытий

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	Если Параметры.Свойство("ОсновноеСредство") И ЗначениеЗаполнено(Параметры.ОсновноеСредство) Тогда
		Параметры.Отбор.Вставить("НаправлениеДеятельности", ВнеоборотныеАктивыВызовСервера.НаправлениеДеятельности(Параметры.ОсновноеСредство));
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

#Область УчетныеМеханизмы

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

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

#Область Печать

Функция СформироватьРасшифровкуРасчетаПроцентов(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати)
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РасшифровкаРасчетаПроцентовАренды";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.ДоговорыАренды.ПФ_MXL_РасшифровкаРасчетаПроцентов");
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
	ОбластьСтрокаИтогоТаблицы = Макет.ПолучитьОбласть("СтрокаИтогоТаблицы");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

	ДанныеРасшифровкиОбъектов = ДанныеРасшифровкиРасчетаПроцентов(МассивОбъектов);
	
	ПервыйДокумент = Истина;
	
	Для Каждого ДанныеРасшифровки Из ДанныеРасшифровкиОбъектов Цикл
		
		Если НЕ ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		Если ТипЗнч(ДанныеРасшифровки.Ссылка) = Тип("ДокументСсылка.ЗаключениеДоговораАренды")
			ИЛИ ТипЗнч(ДанныеРасшифровки.Ссылка) = Тип("ДокументСсылка.ИзменениеУсловийДоговораАренды")
			ИЛИ ТипЗнч(ДанныеРасшифровки.Ссылка) = Тип("ДокументСсылка.ВводОстатковВзаиморасчетовПоАренде") Тогда
			
			КонтекстРасшифровки = ДанныеРасшифровки.Ссылка;
			КонтекстПредставление = СтрШаблон(НСтр("ru = '(по документу %1)'"), ДанныеРасшифровки.Ссылка);
			
		Иначе
			КонтекстРасшифровки = Неопределено;
			КонтекстПредставление = "";
		КонецЕсли;
		
		ПараметрыОбласти = Новый Структура;
		ПараметрыОбласти.Вставить("Контекст", КонтекстРасшифровки);
		ПараметрыОбласти.Вставить("КонтекстПредставление", КонтекстПредставление);
		ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОбласти);
		ТабличныйДокумент.Вывести(ОбластьЗаголовок);
		
		#Область Шапка
		ОбластьШапка.Параметры.Заполнить(ДанныеРасшифровки.ДанныеШапки);
		ТабличныйДокумент.Вывести(ОбластьШапка);
		#КонецОбласти

		#Область Таблица
		
		ИтогиТаблицы = Новый Структура;
		ИтогиТаблицы.Вставить("СуммаПлатежа", 0);
		ИтогиТаблицы.Вставить("СуммаПлатежаБезНДС", 0);
		ИтогиТаблицы.Вставить("СуммаДолгаБезНДС", 0);
		ИтогиТаблицы.Вставить("Проценты", 0);

		ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
		Для Каждого СтрокаРасшифровки Из ДанныеРасшифровки.РасшифровкаРасчета Цикл
		
			ОбластьСтрокаТаблицы.Параметры.Заполнить(СтрокаРасшифровки);
			ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
		
			ИтогиТаблицы.СуммаПлатежа = ИтогиТаблицы.СуммаПлатежа + СтрокаРасшифровки.СуммаПлатежа;
			ИтогиТаблицы.СуммаПлатежаБезНДС = ИтогиТаблицы.СуммаПлатежаБезНДС + СтрокаРасшифровки.СуммаПлатежаБезНДС; 
			ИтогиТаблицы.Проценты = ИтогиТаблицы.Проценты + СтрокаРасшифровки.Проценты;
			
		КонецЦикла;
		
		ОбластьСтрокаИтогоТаблицы.Параметры.Заполнить(ИтогиТаблицы);
		ТабличныйДокумент.Вывести(ОбластьСтрокаИтогоТаблицы);
		
		#КонецОбласти

		ТабличныйДокумент.Вывести(ОбластьПодвал);

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеРасшифровки.Ссылка);

	КонецЦикла;
	
	Возврат ТабличныйДокумент;
	
КонецФункции

Функция ДанныеРасшифровкиРасчетаПроцентов(МассивОбъектов)

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

	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

	Результат = Запрос.ВыполнитьПакет();

	ГрафикНачисленияПроцентов = Результат[Результат.ВГраница()].Выгрузить();

	Выборка = Результат[Результат.ВГраница() - 1].Выбрать();
	Пока Выборка.Следующий() Цикл

		ДанныеРасшифровки = ДанныеРасшифровкиОбъектов.Добавить();
		ДанныеРасшифровки.Ссылка = Выборка.АктуальныеУсловияДоговора;

		ДанныеШапки = Новый Структура;
		ДанныеРасшифровки.ДанныеШапки = ДанныеШапки;
		ДанныеШапки.Вставить("Контрагент", Выборка.Контрагент);
		ДанныеШапки.Вставить("КонтрагентПредставление", Выборка.КонтрагентПредставление);
		ДанныеШапки.Вставить("Договор", Выборка.Договор);
		ДанныеШапки.Вставить("ДоговорПредставление", Выборка.ДоговорПредставление);
		ДанныеШапки.Вставить("ВалютаВзаиморасчетов", Выборка.ВалютаВзаиморасчетов);
		ДанныеШапки.Вставить("СуммаДоговора", Выборка.СуммаДоговора);
		ДанныеШапки.Вставить("СуммаДоговораБезНДС", Выборка.СуммаДоговораБезНДС);
		ДанныеШапки.Вставить("ПроцентнаяСтавка", Выборка.ПроцентнаяСтавка);
		ДанныеШапки.Вставить("ПриведеннаяСтоимость", Выборка.ПриведеннаяСтоимость);
		ДанныеШапки.Вставить("АвансовыеПлатежи", Выборка.АвансовыеПлатежи);

		РасшифровкаРасчета = Новый ТаблицаЗначений;
		РасшифровкаРасчета.Колонки.Добавить("Дата");
		РасшифровкаРасчета.Колонки.Добавить("СуммаПлатежа");
		РасшифровкаРасчета.Колонки.Добавить("СуммаПлатежаБезНДС");
		РасшифровкаРасчета.Колонки.Добавить("СуммаДолгаБезНДС");
		РасшифровкаРасчета.Колонки.Добавить("ДнейДолга");
		РасшифровкаРасчета.Колонки.Добавить("Проценты");
		ДанныеРасшифровки.РасшифровкаРасчета = РасшифровкаРасчета;

		ПредыдущаяДата = Выборка.ДатаНачалаАренды;

		Если НЕ УчетАрендованныхОСКлиентСервер.ЭтоИзменениеУсловийАренды(Выборка.АктуальныеУсловияДоговора) Тогда
			ПредыдущаяДата = Выборка.ДатаНачалаАренды;
		Иначе
			ПредыдущаяДата = НачалоДня(Выборка.ДатаДокумента) - 86400;
		КонецЕсли;

		СуммаДолгаБезНДС = ДанныеШапки.ПриведеннаяСтоимость;

		Для Каждого СтрокаГрафика Из ГрафикНачисленияПроцентов Цикл

			Если СтрокаГрафика.АктуальныеУсловияДоговора <> Выборка.АктуальныеУсловияДоговора Тогда
				Продолжить;
			КонецЕсли;

			СтрокаРасшифровки = РасшифровкаРасчета.Добавить();
			СтрокаРасшифровки.Дата = СтрокаГрафика.Дата;
			СтрокаРасшифровки.СуммаПлатежа = СтрокаГрафика.СуммаПлатежа;
			СтрокаРасшифровки.СуммаПлатежаБезНДС = СтрокаГрафика.СуммаПлатежаБезНДС;
			СтрокаРасшифровки.СуммаДолгаБезНДС = СуммаДолгаБезНДС;
			СтрокаРасшифровки.Проценты = СтрокаГрафика.Проценты;

			СтрокаРасшифровки.ДнейДолга = Окр((СтрокаРасшифровки.Дата - ПредыдущаяДата) / 86400, 0);

			ПредыдущаяДата = СтрокаРасшифровки.Дата;
			СуммаДолгаБезНДС = Макс(СуммаДолгаБезНДС - СтрокаРасшифровки.СуммаПлатежаБезНДС
			+ СтрокаРасшифровки.Проценты, 0);

		КонецЦикла;

	КонецЦикла;

	Возврат ДанныеРасшифровкиОбъектов;
КонецФункции

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

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

#КонецЕсли

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