&НаКлиенте
Процедура ДатаНачалаПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
ОбновитьОтображениеДанных(Элементы.ГрафикПлатежей);
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
КонецПроцедуры
&НаКлиенте
Процедура ПериодичностьОплатыПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
КонецПроцедуры
&НаКлиенте
Процедура СуммаДолгаПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
КонецПроцедуры
&НаСервере
Процедура ПроверитьРеквизитыДляГрафика()
Если объект.СуммаДолга
= 0 или
объект.ПериодичностьОплаты
= 0 или
объект.ДатаНачала
= Дата("00010101") или
объект.ДатаОкончания
= Дата("00010101") тогда
Иначе
РассчитатьГрафикПлатежей();
Об
= РеквизитФормыВЗначение("Объект");
Об.РассчитатьГрафикПлатежей();
КонецЕсли;
КонецПроцедуры
Процедура РассчитатьГрафикПлатежей()
Объект.ГрафикПлатежей.Очистить();
РазницаВДнях = (НачалоДня(Объект.ДатаОкончания) - НачалоДня(Объект.ДатаНачала)) / (60 * 60 * 24);
КоличествоЦелыхПериодов = Цел(РазницаВДнях/Объект.ПериодичностьОплаты) ;
СуммаПлатежаЗаПериод = (Объект.СуммаДолга
- объект.п50)/КоличествоЦелыхПериодов ;
//Первый
платеж
нов
= Объект.ГрафикПлатежей.Добавить();
нов.Дата = Объект.ДатаНачала;
нов.Сумма = объект.п50;
нов.НадоОплатитьПоГрафику = нов.Сумма;
н = 1;
Если
Объект.ПериодичностьОплаты = 10 Тогда
НоваяДата = Объект.ДатаНачала+
60 * 60 * 24*Объект.ПериодичностьОплаты;
ИначеЕсли Объект.ПериодичностьОплаты
= 30 Тогда//Месяц
НоваяДата = Объект.ДатаНачала +
60*60*24*День(КонецМесяца(Объект.ДатаНачала));
Иначе
КонецЕсли;
Пока
н <= КоличествоЦелыхПериодов
Цикл
нов
= Объект.ГрафикПлатежей.Добавить();
нов.Дата = НоваяДата;
нов.Сумма = СуммаПлатежаЗаПериод;
нов.НадоОплатитьПоГрафику = нов.Сумма;
Если
Объект.ПериодичностьОплаты = 10 Тогда
НоваяДата = нов.Дата +
60*60*24*Объект.ПериодичностьОплаты;
ИначеЕсли Объект.ПериодичностьОплаты
= 30 Тогда//Месяц
НоваяДата = нов.Дата +
60*60*24*День(КонецМесяца(нов.Дата));
Иначе
КонецЕсли;
н = н + 1;
КонецЦикла;
Если
Объект.СуммаДолга < Объект.ГрафикПлатежей.Итог("Сумма")
Тогда
Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].Сумма
= Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].Сумма
- (Объект.ГрафикПлатежей.Итог("Сумма")
- Объект.СуммаДолга) ;
КонецЕсли;
Если
Объект.СуммаДолга > Объект.ГрафикПлатежей.Итог("Сумма")
Тогда
Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].Сумма
= Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].Сумма
+ (Объект.СуммаДолга
- Объект.ГрафикПлатежей.Итог("Сумма")) ;
Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].НадоОплатитьПоГрафику
=
Объект.ГрафикПлатежей[Объект.ГрафикПлатежей.Количество()-1].Сумма;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
этаФорма.Элементы.ОстатокДолгаНадпись.Заголовок =
"Остаток долга: " + Объект.ОстатокДолга;
этаФорма.Элементы.СтатусНадпись.Заголовок = "Статус:
" + Объект.Статус;
КонецПроцедуры
&НаСервере
Процедура ГрафикПлатежейОплаченоПриИзмененииНаСервере()
объект.ОстатокДолга = объект.ГрафикПлатежей.Итог("Сумма")
- объект.ГрафикПлатежей.Итог("Оплачено");
КонецПроцедуры
&НаКлиенте
Процедура ГрафикПлатежейОплаченоПриИзменении(Элемент)
ГрафикПлатежейОплаченоПриИзмененииНаСервере();
этаФорма.Элементы.ОстатокДолгаНадпись.Заголовок =
"Остаток долга: " + Объект.ОстатокДолга;
текДанные = этаФорма.Элементы.ГрафикПлатежей.ТекущиеДанные;
ПЕресчитатьГрафикСУчетомОплаты(текДанные.Оплачено,
текДанные.Сумма, текДанные.НомерСтроки);
КонецПроцедуры
Процедура ПересчитатьГрафикСУчетомОплаты(Оплачено,
Сумма, НомерСтроки)
Для
каждого стр Из Объект.ГрафикПлатежей
Цикл
стр.НадоОплатитьПоГрафику = стр.Сумма;
КонецЦикла;
Долг
= 0;
Переплата
= 0;
Для
каждого стр Из Объект.ГрафикПлатежей
Цикл
Если
Долг <> 0 тогда
стр.НадоОплатитьПоГрафику = долг + стр.НадоОплатитьПоГрафику;
Долг
= 0;
КонецЕсли;
Если
(стр.Оплачено < стр.НадоОплатитьПоГрафику и
стр.Оплачено <> 0) или Долг <> 0
Тогд Долг
= Долг + (стр.НадоОплатитьПоГрафику -
стр.Оплачено);
КонецЕсли;
Если
стр.Оплачено > стр.НадоОплатитьПоГрафику Тогда
сч = объект.ГрафикПлатежей.количество()-1;
Переплата
= стр.Оплачено - стр.НадоОплатитьПоГрафику;
пока
сч > НомерСтроки-1 цикл
НадоОплатить = объект.ГрафикПлатежей[сч].НадоОплатитьПоГрафику;
Если
НадоОплатить
<> 0 и переплата<> 0 тогда
Если
переплата >= НадоОплатить
тогда
объект.ГрафикПлатежей[сч].НадоОплатитьПоГрафику = 0;
Переплата
= переплата - НадоОплатить;
Иначе
объект.ГрафикПлатежей[сч].НадоОплатитьПоГрафику = НадоОплатить - переплата;
переплата
= 0;
КонецЕсли;
КонецЕсли;
сч = сч - 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура п50ПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
этаФорма.Элементы.ОстатокДолгаНадпись.Заголовок =
"Остаток долга: " + Объект.ОстатокДолга;
этаФорма.Элементы.СтатусНадпись.Заголовок = "Статус:
" + Объект.Статус;
КонецПроцедуры
&НаКлиенте
Процедура СуммаПервогоВзносаПриИзменении(Элемент)
ПроверитьРеквизитыДляГрафика();
КонецПроцедуры
|