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