Сотрудники / Доходы с предыдущего места работы / Модуль формы

файл

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

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

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

&НаСервере
Процедура ЗаписатьНаСервере()
	
	ДоходСНарастающимИтогом = 0;
	
	НаборЗаписей = РегистрыСведений.ДоходыПредыдущегоМестаРаботыНДФЛ.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.ФизическоеЛицо.Значение      = ФизическоеЛицо;
	НаборЗаписей.Отбор.ФизическоеЛицо.ВидСравнения  = ВидСравнения.Равно;
	НаборЗаписей.Отбор.ФизическоеЛицо.Использование = Истина;
	НаборЗаписей.Отбор.ГоловнаяОрганизация.Значение     = ГоловнаяОрганизация;
	НаборЗаписей.Отбор.ГоловнаяОрганизация.ВидСравнения = ВидСравнения.Равно;
	НаборЗаписей.Отбор.ГоловнаяОрганизация.Использование = Истина;
	
	Для Каждого СтрокаДохода Из Доходы Цикл
		
		ДоходСНарастающимИтогом = ДоходСНарастающимИтогом + СтрокаДохода.Сумма;
		ЗаписьОДоходах  = НаборЗаписей.Добавить();
		ЗаписьОДоходах.ФизическоеЛицо         = ФизическоеЛицо;
		ЗаписьОДоходах.ГоловнаяОрганизация    = ГоловнаяОрганизация;
		ЗаписьОДоходах.МесяцНалоговогоПериода = СтрокаДохода.Месяц;
		ЗаписьОДоходах.Размер                 = ДоходСНарастающимИтогом;
		
	КонецЦикла;
	
	НаборЗаписей.Записать(истина);
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ГодПриИзменении(Элемент)
	ПрочитатьДанные();
КонецПроцедуры
	
#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	ЗаписатьНаСервере();
	Закрыть();
КонецПроцедуры

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

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