Ведомость расчетов по аренде / Модуль объекта

файл

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

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

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

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

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

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

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

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

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

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

	СхемаКомпоновкиДанных.НаборыДанных.РасчетыПоАренде.Запрос = ТекстЗапросаРасчетыПоАренде(ВалютаОтчета);
	СхемаКомпоновкиДанных.НаборыДанных.ПредметыАренды.Запрос = ТекстЗапросаПредметыАренды(СтоимостьАмортизацияВалюта);

	ПериодОтчета = ОтчетыУТСервер.ЗначениеПараметра(НастройкиОтчета, "Период");
	КомпоновкаДанныхКлиентСервер.УстановитьПараметр(НастройкиОтчета, "ПериодГраница", Новый Граница(КонецДня(ПериодОтчета), ВидГраницы.Включая));

	УстановитьПривилегированныйРежим(Истина);
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

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

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

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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

Функция ТекстЗапросаПредметыАренды(СтоимостьАмортизацияВалюта)
	
	ТекстЗапроса =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	АрендованныеОС.Партнер КАК Партнер,
	|	АрендованныеОС.Контрагент КАК Контрагент,
	|	АрендованныеОС.Договор КАК Договор,
	|	АрендованныеОС.ОсновноеСредство КАК ОсновноеСредство
	|ПОМЕСТИТЬ втАрендованныеОС
	|ИЗ
	|	РегистрСведений.АрендованныеОС.СрезПоследних(&Период {&Период} ) КАК АрендованныеОС
	|{ГДЕ
	|	АрендованныеОС.Партнер.* КАК Партнер,
	|	АрендованныеОС.Контрагент.* КАК Контрагент,
	|	АрендованныеОС.Договор.* КАК Договор}
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ОсновноеСредство
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	МестоНахождениеОС.Организация КАК Организация,
	|	МестоНахождениеОС.Местонахождение КАК Подразделение,
	|	МестоНахождениеОС.ОсновноеСредство КАК ОсновноеСредство
	|ПОМЕСТИТЬ втМестоНахождениеОС
	|ИЗ
	|	РегистрСведений.МестоНахождениеОС.СрезПоследних(
	|		&Период {&Период},
	|		ДатаИсправления = ДАТАВРЕМЯ(1,1,1)
	|			И ОсновноеСредство В (
	|				ВЫБРАТЬ 
	|					АрендованныеОС.ОсновноеСредство 
	|				ИЗ 
	|					втАрендованныеОС КАК АрендованныеОС)) КАК МестоНахождениеОС
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Организация,
	|	ОсновноеСредство,
	|	Подразделение
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	АрендованныеОС.Договор КАК Договор,
	|	СУММА(ЕСТЬNULL(СтоимостьОС.СтоимостьРеглОстаток, 0)) КАК ПредметыАренды_Стоимость,
	|	СУММА(ЕСТЬNULL(-АмортизацияОС.АмортизацияРеглОстаток, 0)) КАК ПредметыАренды_НачисленнаяАмортизация,
	|	СУММА(ЕСТЬNULL(СтоимостьОС.СтоимостьРеглОстаток, 0)) + СУММА(ЕСТЬNULL(АмортизацияОС.АмортизацияРеглОстаток, 0)) КАК ПредметыАренды_ОстаточнаяСтоимость
	|ИЗ
	|	втАрендованныеОС КАК АрендованныеОС
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ втМестоНахождениеОС КАК МестоНахождениеОС
	|		ПО МестоНахождениеОС.ОсновноеСредство = АрендованныеОС.ОсновноеСредство
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьОС.Остатки(
	|			&ПериодГраница {&ПериодГраница},
	|			(Организация, ОсновноеСредство, Подразделение) В (
	|				ВЫБРАТЬ 
	|					МестоНахождениеОС.Организация, 
	|					МестоНахождениеОС.ОсновноеСредство, 
	|					МестоНахождениеОС.Подразделение 
	|				ИЗ 
	|					втМестоНахождениеОС КАК МестоНахождениеОС)) КАК СтоимостьОС
	|		ПО СтоимостьОС.Организация = МестоНахождениеОС.Организация
	|			И СтоимостьОС.ОсновноеСредство = МестоНахождениеОС.ОсновноеСредство
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.АмортизацияОС.Остатки(
	|			&ПериодГраница {&ПериодГраница},
	|			(Организация, ОсновноеСредство, Подразделение) В (
	|				ВЫБРАТЬ 
	|					МестоНахождениеОС.Организация, 
	|					МестоНахождениеОС.ОсновноеСредство, 
	|					МестоНахождениеОС.Подразделение 
	|				ИЗ 
	|					втМестоНахождениеОС КАК МестоНахождениеОС)) КАК АмортизацияОС
	|		ПО АмортизацияОС.Организация = МестоНахождениеОС.Организация
	|			И АмортизацияОС.ОсновноеСредство = МестоНахождениеОС.ОсновноеСредство
	|
	|СГРУППИРОВАТЬ ПО
	|	АрендованныеОС.Договор";
	
	Если СтоимостьАмортизацияВалюта = 2 Тогда
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,".СтоимостьРегл",".Стоимость");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,".АмортизацияРегл",".Амортизация");
	КонецЕсли;
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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

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

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

Функция ПолучитьЗначенияОтбораДанных(НастройкиОсновнойСхемы)

	ЭлементыОтбора = НастройкиОсновнойСхемы.Отбор.Элементы;
	
	ЗначенияОтбораДанных = Новый Структура;
	
	ЗначенияОтбораДанных.Вставить("СписокОрганизаций", ОтчетыУТСервер.ЗначениеОтбора("Организация", ЭлементыОтбора));
	Если ЗначенияОтбораДанных.СписокОрганизаций.Количество() = 0 Тогда
		ЗначенияОтбораДанных.СписокОрганизаций = ВнеоборотныеАктивыСлужебный.СписокРазрешенныхОрганизаций();
	КонецЕсли;
	
	Период = ОтчетыУТСервер.ЗначениеПараметра(НастройкиОсновнойСхемы, "Период");
	ЗначенияОтбораДанных.Вставить("Период", ?(Период <> Неопределено, Период.Дата, '000101010000'));
	
	Возврат ЗначенияОтбораДанных;
	
КонецФункции

Процедура ДобавитьИнформационноеСообщениеВШапку(ТабДок, ЗначенияОтбораДанных)

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

	ТабДок.Область("R1C1").Текст = ТекстСообщения;
	ТабДок.Область("R1C1").ЦветТекста = Метаданные.ЭлементыСтиля.ЦветТекстаПроблема.Значение;
	ТабДок.Область(1, 1, 1, ).ВысотаСтроки = 0;
	
КонецПроцедуры

Процедура ПроверитьАктуальностьОтчета(ЗначенияОтбораДанных, СписокПроблем)

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

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

#КонецЕсли

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