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