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