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