Заявление на вычеты по НДФЛ / Форма документа / Модуль формы

файл

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

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// СтандартныеПодсистемы.Свойства
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	// СтандартныеПодсистемы.ДатыЗапретаИзменения
	ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.ДатыЗапретаИзменения
	
	ПриПолученииДанныхНаСервере();
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
		МодульПроцессыОбработкиДокументовЗарплата.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	КонецЕсли;	
	// Конец ПроцессыОбработкиДокументов
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Сообщения = ПолучитьСообщенияПользователю(Ложь);
	Для Каждого Сообщение Из Сообщения Цикл
		Если СтрНайти(Сообщение.Поле, "ВычетыНаДетей") <> 0 И СтрНайти(Сообщение.Поле, "ДействуетДо") <> 0 Тогда
			Сообщение.Поле			= Сообщение.Поле + "Строкой";
			
		ИначеЕсли Сообщение.Поле = "Месяц" Тогда
			Сообщение.ПутьКДанным	= Сообщение.Поле + "Строкой";
			Сообщение.Поле			= "";
			
		КонецЕсли;
		
		Отказ = Истина;
	КонецЦикла;
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
		МодульПроцессыОбработкиДокументовЗарплата.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи, Отказ);
	КонецЕсли;		
	// Конец ПроцессыОбработкиДокументов
	
	// ИнтеграцияС1СДокументооборотом
	Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
		МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
			"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
		МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
			ЭтотОбъект,
			ТекущийОбъект,
			ПараметрыЗаписи);
	КонецЕсли;
	// Конец ИнтеграцияС1СДокументооборотом
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ОбновитьОписаниеВычетовНаДетей();
	
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
		МодульПроцессыОбработкиДокументовЗарплата.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	КонецЕсли;	
	// Конец ПроцессыОбработкиДокументов
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
		МодульПроцессыОбработкиДокументовЗарплата.ПередЗакрытием(ЭтотОбъект, Объект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	КонецЕсли;	
	// Конец ПроцессыОбработкиДокументов
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	Оповестить("ИзмененыВычеты", Объект.Сотрудник, ЭтаФорма);
	Оповестить("Запись_ЗаявлениеНаПредоставлениеСтандартныхВычетовПоНДФЛ", ПараметрыЗаписи, Объект.Ссылка);
	Оповестить("ЗаявкиСотрудниковЗаписанДокумент", Объект.Ссылка, ВладелецФормы);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ИзменитьВычетыНаДетейПриИзменении(Элемент)
	
	Элементы.ВычетыНаДетей.Доступность		= Объект.ИзменитьВычетыНаДетей;
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейКодВычетаПриИзменении(Элемент)
	
	Элементы.ВычетыНаДетей.ТекущиеДанные.КодВычетаИнфо = УчетНДФЛВызовСервера.ПолучитьОписаниеВычета(Элементы.ВычетыНаДетей.ТекущиеДанные.КодВычета);
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьЛичныйВычетПриИзменении(Элемент)
	
	Элементы.КодВычетаЛичный.Доступность = Объект.ИзменитьЛичныйВычет;
	Элементы.ДокументПодтверждающийПравоНаЛичныйВычет.Доступность = Объект.ИзменитьЛичныйВычет;
	
КонецПроцедуры

&НаКлиенте
Процедура КодВычетаЛичныйПриИзменении(Элемент)
	
	ОбновитьОписаниеЛичногоВычета();
	
КонецПроцедуры

&НаКлиенте
Процедура ФизическоеЛицоПриИзменении(Элемент)
	
	ПрочитатьСтандартныеВычетыПредыдущегоМесяца();
	
КонецПроцедуры

&НаКлиенте
Процедура ИнформацияОВозможностиПроведенияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "ОтменаЗаявления" Тогда
		
		СтандартнаяОбработка = Ложь;
		ОтменитьЗаявлениеОПрекращенииВычетов();
		
		ПоказатьПредупреждение(, НСтр("ru='Заявление о прекращении предоставления вычетов отменено'"));
		
	КонецЕсли; 
	
КонецПроцедуры

#Область РедактированиеМесяцаСтрокой

&НаКлиенте
Процедура МесяцНачисленияСтрокойПриИзменении(Элемент)
	
	ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтаФорма, "Объект.Месяц", "МесяцСтрокой", Модифицированность);
	
	ПрочитатьСтандартныеВычетыПредыдущегоМесяца();
	
КонецПроцедуры

&НаКлиенте
Процедура МесяцСтрокойНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Оповещение = Новый ОписаниеОповещения("МесяцСтрокойНачалоВыбораЗавершение", ЭтотОбъект);
	ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, ЭтаФорма, "Объект.Месяц", "МесяцСтрокой", , Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура МесяцСтрокойНачалоВыбораЗавершение(ЗначениеВыбрано, ДополнительныеПараметры) Экспорт 
	
	ПрочитатьСтандартныеВычетыПредыдущегоМесяца();
	
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтаФорма, "Объект.Месяц", "МесяцСтрокой", Направление, Модифицированность);
	
	ПрочитатьСтандартныеВычетыПредыдущегоМесяца();
	
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура МесяцНачисленияСтрокойОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
	
	ПрочитатьСтандартныеВычетыПредыдущегоМесяца();
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТабличногоПоляВычетыНаДетей

&НаКлиенте
Процедура ВычетыНаДетейПриИзменении(Элемент)
	
	ВычетыНаДетейБылиИзменены = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейДействуетДоСтрокойПриИзменении(Элемент)
	
	ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.ВычетыНаДетей.ТекущиеДанные, "ДействуетДо", "ДействуетДоСтрокой", Модифицированность);
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейДействуетДоСтрокойНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, Элементы.ВычетыНаДетей.ТекущиеДанные, "ДействуетДо", "ДействуетДоСтрокой");
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейДействуетДоСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.ВычетыНаДетей.ТекущиеДанные, "ДействуетДо", "ДействуетДоСтрокой", Направление, Модифицированность);
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейДействуетДоСтрокойАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейДействуетДоСтрокойОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ВычетыНаДетейПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	Если НоваяСтрока И Не Копирование Тогда
		Элемент.ТекущиеДанные.ДействуетДо = НачалоМесяца(КонецГода(Объект.Дата));
		ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.ВычетыНаДетей, "ДействуетДо", "ДействуетДоСтрокой");
	КонецЕсли;
	
КонецПроцедуры

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

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

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

#Область ОбработчикиСобытийПроцессыОбработкиДокументов

&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
		МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Команда, Объект)
	КонецЕсли;		
	// Конец ПроцессыОбработкиДокументов
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
	ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
	ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда	
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
		МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Контекст, Объект);
	КонецЕсли;		
	// Конец ПроцессыОбработкиДокументов
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда	
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
		МодульПроцессыОбработкиДокументовЗарплата.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	КонецЕсли;		
	// Конец ПроцессыОбработкиДокументов
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	// ПроцессыОбработкиДокументов
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда	
		МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
		МодульПроцессыОбработкиДокументовЗарплата.КомментарийСледующемуНачалоВыбора(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
	КонецЕсли;		
	// Конец ПроцессыОбработкиДокументов
КонецПроцедуры

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

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
		МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
			"ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент");
		МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
			Команда,
			ЭтотОбъект,
			Объект);
	КонецЕсли;
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

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

#Область СлужебныеПроцедурыИФункции

// СтандартныеПодсистемы.Свойства 
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаСервере
Процедура ПриПолученииДанныхНаСервере()
	
	ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтаФорма, "Объект.Месяц", "МесяцСтрокой");
	
	ОбновитьОписаниеВычетовНаДетей();
	ОбновитьОписаниеЛичногоВычета();
	УстановитьИнформационнуюНадписьОВозможностиПроведения();
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьОписаниеВычетовНаДетей()
	
	Для Каждого Строка Из Объект.ВычетыНаДетей Цикл
		Строка.КодВычетаИнфо = УчетНДФЛВызовСервера.ПолучитьОписаниеВычета(Строка.КодВычета);
	КонецЦикла;
	
	ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.ВычетыНаДетей, "ДействуетДо", "ДействуетДоСтрокой");
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьОписаниеЛичногоВычета()
	
	Элементы.КодВычетаЛичный.Подсказка = УчетНДФЛВызовСервера.ПолучитьОписаниеВычета(Объект.КодВычетаЛичный);
	
КонецПроцедуры

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

&НаСервере
Процедура УстановитьИнформационнуюНадписьОВозможностиПроведения()
	
	ИнформацияОВозможностиПроведения = "";
	
	МассивВычетов = Новый Массив;
	Для Каждого СтрокаВычет Из Объект.ВычетыНаДетей Цикл
		МассивВычетов.Добавить(СтрокаВычет.КодВычета);
	КонецЦикла;
	
	Запрос = УчетНДФЛДокументы.КонфликтующиеРегистраторыВычетов(
		Объект.Ссылка, Объект.Месяц, Объект.Сотрудник, МассивВычетов);
		
	РезультатЗапроса = Запрос.Выполнить();
	Если Не РезультатЗапроса.Пустой() Тогда
		
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		
		ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
			НСтр("ru='Документ не может быть проведен. На'") + " ",
			НРег(Формат(Объект.Месяц, "ДФ='ММММ гггг'")) + " ");
			
		Если ТипЗнч(Выборка.Регистратор) = Тип("ДокументСсылка.ЗаявлениеНаПредоставлениеСтандартныхВычетовПоНДФЛ") Тогда
			
			ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
				ИнформацияОВозможностиПроведения,
				" " + НСтр("ru='уже введено заявление на вычеты'"),
				" (",
				Новый ФорматированнаяСтрока(Выборка.ПредставлениеРегистратора, , , , ПолучитьНавигационнуюСсылку(Выборка.Регистратор)),
				")");
			
		ИначеЕсли ТипЗнч(Выборка.Регистратор) = Тип("ДокументСсылка.ПрекращениеСтандартныхВычетовНДФЛ") Тогда
			
			ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
				ИнформацияОВозможностиПроведения,
				" " + НСтр("ru='уже введено заявление о прекращении вычетов'"));
			
			ОрганизацияРегистратора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Выборка.Регистратор, "Организация");
			Если Объект.Организация = ОрганизацияРегистратора Тогда
				
				ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
					ИнформацияОВозможностиПроведения,
					" (",
					Новый ФорматированнаяСтрока(Выборка.ПредставлениеРегистратора, , , , ПолучитьНавигационнуюСсылку(Выборка.Регистратор)),
					")");
				
			Иначе
				
				ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
					ИнформацияОВозможностиПроведения,
					" " + НСтр("ru='в другой организации. Если необходимо перенести применение вычетов в'") + " ",
					Строка(Объект.Организация) + ", ",
					Новый ФорматированнаяСтрока(НСтр("ru='отмените заявление'"), , , , "ОтменаЗаявления"),
					" " + НСтр("ru='о прекращении вычетов и проведите это заявление'") + ".");
				
			КонецЕсли;
			
		Иначе
			
			ОрганизацияРегистратора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Выборка.Регистратор, "Организация");
			Если Объект.Организация = ОрганизацияРегистратора Тогда
				
				ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
					ИнформацияОВозможностиПроведения,
					" " + НСтр("ru='введен приказ об увольнении с прекращением вычетов'"),
					" (",
					Новый ФорматированнаяСтрока(Выборка.ПредставлениеРегистратора, , , , ПолучитьНавигационнуюСсылку(Выборка.Регистратор)),
					")");
				
			Иначе
				
				ИнформацияОВозможностиПроведения = Новый ФорматированнаяСтрока(
					ИнформацияОВозможностиПроведения,
					" " + НСтр("ru='введен приказ об увольнении с прекращением вычетов в другой организации. Если необходимо перенести применение вычетов в'"),
					" " + Строка(Объект.Организация) + " ",
					Новый ФорматированнаяСтрока(НСтр("ru='отмените прекращение вычетов'"), , , , "ОтменаЗаявления"),
					" " + НСтр("ru='и проведите это заявление'") + ".");
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
		Элементы,
		"ИнформацияОВозможностиПроведения",
		"Заголовок",
		ИнформацияОВозможностиПроведения);
	
КонецПроцедуры

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

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

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