#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ИспользоватьКадровыйУчет = ПолучитьФункциональнуюОпцию("ИспользоватьКадровыйУчет");
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Параметры, "Заголовок,ДатаПриема,ГоловнаяОрганизация");
СотрудникСсылка = Параметры.СотрудникСсылка;
ФизическоеЛицоСсылка = Параметры.ФизическоеЛицоСсылка;
СозданиеНового = Параметры.СозданиеНового;
ИзФормыСотрудника = ЗначениеЗаполнено(СотрудникСсылка);
ЦветСтиляРасширеннойПодсказки = Элементы.ГруппаНДФЛИнфо.РасширеннаяПодсказка.ЦветТекста;
ЦветСтиляПоясняющийОшибкуТекст = ЦветаСтиля.ПоясняющийОшибкуТекст;
ДоступноИзменениеНалоговИВзносов = Пользователи.РолиДоступны("ДобавлениеИзменениеНалоговИВзносов");
СотрудникиФормы.ПрочитатьДанныеИзХранилищаВФорму(
ЭтотОбъект,
СотрудникиКлиентСервер.ОписаниеДополнительнойФормы(ИмяФормы),
Параметры.АдресВХранилище);
ПроинициализироватьФорму();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СотрудникиКлиент.ЗарегистрироватьОткрытиеФормы(ЭтотОбъект, "НалогНаДоходы");
СотрудникиКлиент.ПроверитьРежимТолькоПросмотраДополнительнойФормы(ЭтотОбъект, ИзФормыСотрудника);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("СохранитьИЗакрыть", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
СотрудникиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ИмяСобытия = "ОтредактированаИстория" И ФизическоеЛицоСсылка = Источник Тогда
Если Параметр.ИмяРегистра = "СтатусФизическихЛицКакНалогоплательщиковНДФЛ" Тогда
Если СтатусФизическихЛицКакНалогоплательщиковНДФЛНаборЗаписейПрочитан Тогда
РедактированиеПериодическихСведенийКлиент.ОбработкаОповещения(
ЭтотОбъект,
ФизическоеЛицоСсылка,
ИмяСобытия,
Параметр,
Источник);
КонецЕсли;
ОбновитьПолеСтатусПериод(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецЕсли;
ИначеЕсли ИмяСобытия = "ИзмененыВычеты" И Параметр = ЭтотОбъект.ФизическоеЛицоСсылка Тогда
ПрочитатьСведенияОВычетахНДФЛ();
ИначеЕсли ИмяСобытия = "ОтредактированыРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей" И Источник = ЭтотОбъект.ФизическоеЛицоСсылка Тогда
Если Параметр.Свойство("МассивЗаписей") Тогда
НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Очистить();
Для каждого СтрокаЗаписи Из Параметр.МассивЗаписей Цикл
ЗаполнитьЗначенияСвойств(НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Добавить(), СтрокаЗаписи);
КонецЦикла;
ПрочитатьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Год);
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
РедактированиеПериодическихСведений.ПроверитьЗаписьВФорме(
ЭтотОбъект,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛ",
ФизическоеЛицоСсылка,
Отказ);
Если РеквизитыУведомленияИФНСИзменялись(ЭтотОбъект) Тогда
Если Не ЗначениеЗаполнено(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.ГоловнаяОрганизация) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru='Не указана организация'"), , "РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейГоловнаяОрганизация", , Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СтатусФизическихЛицКакНалогоплательщиковНДФЛСтатусПриИзменении(Элемент)
Если Не СтатусФизическихЛицКакНалогоплательщиковНДФЛЗаблокироватьФизическоеЛицо() Тогда
Возврат;
КонецЕсли;
ОбновитьПолеСтатусПериод(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура СтатусФизическихЛицКакНалогоплательщиковНДФЛСтатусНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Не СтатусФизическихЛицКакНалогоплательщиковНДФЛЗаблокироватьФизическоеЛицо() Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатусФизическихЛицКакНалогоплательщиковНДФЛПериодПриИзменении(Элемент)
Если Не СтатусФизическихЛицКакНалогоплательщиковНДФЛЗаблокироватьФизическоеЛицо() Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод)
Или СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод < '19000101' Тогда
СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = '19000101';
Иначе
СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод;
КонецЕсли;
ОбновитьПолеСтатусПериод(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура СтатусФизическихЛицКакНалогоплательщиковНДФЛПериодНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Не СтатусФизическихЛицКакНалогоплательщиковНДФЛЗаблокироватьФизическоеЛицо() Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейГодПриИзменении(Элемент)
Если Не РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо() Тогда
Возврат;
КонецЕсли;
ПриИзмененииРеквизитыУведомленияИФНС();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейКодНалоговогоОрганаПриИзменении(Элемент)
РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейНомерУведомленияПриИзменении(Элемент)
РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейДатаУведомленияПриИзменении(Элемент)
Если Не РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо() Тогда
Возврат;
КонецЕсли;
РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейДатаУведомленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если Не РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо() Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейГодРегулирование(Элемент, Направление, СтандартнаяОбработка)
Если Не РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо() Тогда
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;
ПриИзмененииРеквизитыУведомленияИФНС();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура СтатусФизическихЛицКакНалогоплательщиковНДФЛИстория(Команда)
СотрудникиКлиент.ОткрытьФормуРедактированияИстории("СтатусФизическихЛицКакНалогоплательщиковНДФЛ", ФизическоеЛицоСсылка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов(Команда)
ПоказатьЗначение(, ЗаявлениеНаПредоставлениеСтандартныхВычетов);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьУведомлениеОПравеНаИмущественныйВычет(Команда)
ПоказатьЗначение(, УведомлениеОПравеНаИмущественныйВычет);
КонецПроцедуры
&НаКлиенте
Процедура ИсправитьЕжегодныйСтандартныйВычет(Команда)
ПоказатьЗначение(, ЕжегодныйСтандартныйВычет);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиНовоеЗаявлениеНаПредоставлениеСтандартныхВычетов(Команда)
СотрудникиКлиент.ВвестиНовоеЗаявлениеНаПредоставлениеСтандартныхВычетов(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиНовоеУведомлениеОПравеНаИмущественныйВычет(Команда)
СотрудникиКлиент.ВвестиНовоеУведомлениеОПравеНаИмущественныйВычет(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиНовыеЕжегодныеСтандартныеВычеты(Команда)
СотрудникиКлиент.ВвестиНовыеЕжегодныеСтандартныеВычеты(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура ВсеЗаявленияНаВычеты(Команда)
СотрудникиКлиент.ОткрытьЖурналЗаявленийНаВычеты(ФизическоеЛицоСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ВвестиПрекращениеСтандартныхВычетовНДФЛ(Команда)
СотрудникиКлиент.ВвестиДокументПрекращениеСтандартныхВычетовНДФЛ(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура ДоходыСПредыдущегоМестаРаботы(Команда)
СотрудникиКлиент.ОткрытьФормуВводаДоходовСПредыдущегоМестаРаботы(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура ВычетыСПредыдущегоМестаРаботы(Команда)
СотрудникиКлиент.ОткрытьФормуВводаВычетовСПредыдущегоМестаРаботы(ФизическоеЛицоСсылка, ГоловнаяОрганизация);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейПодробнее(Команда)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыОткрытия.Вставить("ВедущийОбъект", ФизическоеЛицоСсылка);
ПараметрыОткрытия.Вставить("ГоловнаяОрганизация", ГоловнаяОрганизация);
ПараметрыОткрытия.Вставить("МассивЗаписей", ЗаписиРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей());
ОткрытьФорму("РегистрСведений.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Форма.РедактированиеНабораЗаписей", ПараметрыОткрытия, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Ок(Команда)
СохранитьИЗакрытьНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура Отмена(Команда)
Модифицированность = Ложь;
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ПроинициализироватьФорму()
СтатусРезидент = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.СтатусыНалогоплательщиковПоНДФЛ.Резидент");
ПрочитатьСведенияОВычетахНДФЛ();
Если СтатусФизическихЛицКакНалогоплательщиковНДФЛПрежняя = Неопределено Тогда
РедактированиеПериодическихСведений.ПрочитатьЗаписьДляРедактированияВФорме(
ЭтотОбъект,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛ",
ФизическоеЛицоСсылка);
КонецЕсли;
УстановитьДоступностьВводаВычетов();
ОбновитьПолеСтатусПериод(ЭтотОбъект, ТекущаяДатаСеанса());
ТолькоСтатусНалогоплательщика = НЕ ИзФормыСотрудника;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВычетыСтраницы",
"Видимость",
НЕ ТолькоСтатусНалогоплательщика);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ДоходыСПредыдущегоМестаРаботы",
"Видимость",
НЕ ТолькоСтатусНалогоплательщика);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВычетыСПредыдущегоМестаРаботы",
"Видимость",
НЕ ТолькоСтатусНалогоплательщика);
Если ТолькоСтатусНалогоплательщика Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СтатусДоходыГруппа",
"Отображение",
ОтображениеОбычнойГруппы.Нет);
КонецЕсли;
Если НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейПрочитан = Ложь Тогда
ПрочитатьНаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей();
КонецЕсли;
ПрочитатьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей();
КонецПроцедуры
&НаСервере
Процедура ПрочитатьСведенияОВычетахНДФЛ()
Если ЗначениеЗаполнено(ФизическоеЛицоСсылка) Тогда
МассивРезультатов = СотрудникиФормы.ПолучитьСведенияОВычетахНДФЛ(ФизическоеЛицоСсылка);
Если МассивРезультатов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ОрганизацияПоЗаявлению = НеОпределено;
ВычетыПредоставлялись = Ложь;
ВыборкаСтандартныеВычеты = МассивРезультатов[0][0];
Если Не ВыборкаСтандартныеВычеты.МесяцРегистрации = Null Тогда
СтандартныеВычетыНДФЛМесяцСтрокой = Формат(ВыборкаСтандартныеВычеты.МесяцРегистрации, "ДФ='ММММ гггг'");
ВычетыПредоставлялись = Истина;
КонецЕсли;
Результат = МассивРезультатов[1];
Если Результат.Количество() > 0 Тогда
ВыборкаСтандартныеВычеты = Результат[0];
СтандартныеВычетыНДФЛКод = ВыборкаСтандартныеВычеты.КодВычетаЛичный;
ЗаявлениеНаПредоставлениеСтандартныхВычетов = ВыборкаСтандартныеВычеты.Регистратор;
ЗаявлениеНомер = ВыборкаСтандартныеВычеты.Номер;
ЗаявлениеДата = ВыборкаСтандартныеВычеты.Дата;
ОрганизацияПоЗаявлению = ВыборкаСтандартныеВычеты.Организация;
КонецЕсли;
Результат = МассивРезультатов[2];
Если Результат.Количество() > 0 Тогда
СтандартныеВычетыНДФЛВычетыНаДетей.Очистить();
Для Каждого ВыборкаВычетыНаДетей Из Результат Цикл
ЗаполнитьЗначенияСвойств(СтандартныеВычетыНДФЛВычетыНаДетей.Добавить(), ВыборкаВычетыНаДетей);
ЗаявлениеНаПредоставлениеСтандартныхВычетов = ВыборкаВычетыНаДетей.Регистратор;
ЗаявлениеНомер = ВыборкаВычетыНаДетей.Номер;
ЗаявлениеДата = ВыборкаВычетыНаДетей.Дата;
ОрганизацияПоЗаявлению = ВыборкаВычетыНаДетей.Организация;
КонецЦикла;
КонецЕсли;
Результат = МассивРезультатов[3];
Если Результат.Количество() > 0 Тогда
ВыборкаИмущВычеты = Результат[0];
Для Каждого НазваниеВычета Из УчетНДФЛ.НазванияВычетовПредоставляемыхПоУведомлениюНО() Цикл
ЭтотОбъект["ИмущественныеВычетыНДФЛ" + НазваниеВычета] = ВыборкаИмущВычеты[НазваниеВычета]
КонецЦикла;
ИмущественныеВычетыНДФЛКодНалоговогоОргана = ВыборкаИмущВычеты.КодНалоговогоОргана;
УведомлениеОПравеНаИмущественныйВычет = ВыборкаИмущВычеты.Регистратор;
ИмущественныеВычетыНДФЛПрименятьС = Формат(ВыборкаИмущВычеты.ПрименятьВычетыС, "ДФ='ММММ гггг'");
ИмущественныеВычетыНДФЛНалоговыйПериод = ВыборкаИмущВычеты.НалоговыйПериод;
Иначе
УведомлениеОПравеНаИмущественныйВычет = Неопределено;
КонецЕсли;
Результат = МассивРезультатов[4];
Если Результат.Количество() > 0 Тогда
ВыборкаСтандартныеЕжегодныеВычеты = Результат[0];
Для Каждого НазваниеВычета Из УчетНДФЛ.НазванияЕжегодныхСтандартныхВычетов() Цикл
ЭтотОбъект["ЕжегодныйСтандартныйВычет" + НазваниеВычета] = ВыборкаСтандартныеЕжегодныеВычеты[НазваниеВычета]
КонецЦикла;
ЕжегодныйСтандартныйВычет = ВыборкаСтандартныеЕжегодныеВычеты.Регистратор;
ЕжегодныйСтандартныйВычетНомер = ВыборкаСтандартныеЕжегодныеВычеты.Номер;
ЕжегодныйСтандартныйВычетДата = ВыборкаСтандартныеЕжегодныеВычеты.Дата;
ЕжегодныйСтандартныйВычетОрганизация = ВыборкаСтандартныеЕжегодныеВычеты.Организация;
ЕжегодныйСтандартныйВычетПрименятьС = Формат(ВыборкаСтандартныеЕжегодныеВычеты.ПрименятьВычетыС, "ДФ='ММММ гггг'");
ЕжегодныйСтандартныйВычетНалоговыйПериод = ВыборкаСтандартныеЕжегодныеВычеты.НалоговыйПериод;
КонецЕсли;
Если ЗаявлениеНаПредоставлениеСтандартныхВычетов.Пустая()
И УведомлениеОПравеНаИмущественныйВычет.Пустая()
И ЕжегодныйСтандартныйВычет.Пустая() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВычетыСтраницы",
"ТекущаяСтраница",
Элементы.ИнфоНадписьОПримененииВычетов);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВычетыСтраницы",
"ТекущаяСтраница",
Элементы.ДанныеОПримененииВычетов);
ДоступностьИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов = Истина;
ДоступностьИсправитьУведомлениеОИмущественномВычете = Истина;
ДоступностьИсправитьЕжегодныйСтандартныйВычет = Истина;
Если ОрганизацияПоЗаявлению = НеОпределено Тогда
ЗаявлениеНаПредоставлениеСтандартныхВычетовИнфо = НСтр("ru = 'Стандартные вычеты не применяются. Можете ввести заявление о предоставлении стандартных вычетов'");
ДоступностьИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов = Ложь;
ИначеЕсли ОрганизацияПоЗаявлению <> ГоловнаяОрганизация Тогда
ЗаявлениеНаПредоставлениеСтандартныхВычетовИнфо = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Вычеты применяются в организации %1. Чтобы начать применение вычетов в организации %2 введите новое заявление о предоставлении вычетов'"),
ОрганизацияПоЗаявлению,
ГоловнаяОрганизация);
ДоступностьИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов = Ложь;
Иначе
ЗаявлениеНаПредоставлениеСтандартныхВычетовИнфо = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Вычеты предоставляются по заявлению номер %1 от %2'"),
ЗаявлениеНомер,
Формат(ЗаявлениеДата,"ДЛФ=DD"));
КонецЕсли;
Если НЕ ЗначениеЗаполнено(УведомлениеОПравеНаИмущественныйВычет) Тогда
УведомлениеОПравеНаИмущественныйВычетИнфо = НСтр("ru = 'Имущественные и социальные вычеты не применяются. Можете ввести новое уведомление нал.органа о предоставлении вычетов'");
ДоступностьИсправитьУведомлениеОИмущественномВычете = Ложь;
Иначе
УведомлениеОПравеНаИмущественныйВычетИнфо = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имущественные или социальные вычеты предоставляются по уведомлению номер %1 от %2'"),
ВыборкаИмущВычеты.Номер,
Формат(ВыборкаИмущВычеты.Дата, "ДЛФ=DD"));
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЕжегодныйСтандартныйВычет) Тогда
ЕжегодныйСтандартныйВычетИнфо = НСтр("ru = 'Ежегодные стандартные вычеты (ГТО) не применяются. Можете ввести новый ежегодный стандартный вычет'");
ДоступностьИсправитьЕжегодныйСтандартныйВычет = Ложь;
Иначе
ЕжегодныйСтандартныйВычетИнфо = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ежегодные стандартные вычеты (ГТО) предоставляются по документу номер %1 от %2'"),
ЕжегодныйСтандартныйВычетНомер,
Формат(ЕжегодныйСтандартныйВычетДата, "ДЛФ=DD"));
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов",
"Доступность",
ДоступностьИсправитьЗаявлениеНаПредоставлениеСтандартныхВычетов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ИсправитьУведомлениеОИмущественномВычете",
"Доступность",
ДоступностьИсправитьУведомлениеОИмущественномВычете);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ИсправитьЕжегодныйСтандартныйВычет",
"Доступность",
ДоступностьИсправитьЕжегодныйСтандартныйВычет);
КонецЕсли;
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВычетыСтраницы",
"ТекущаяСтраница",
Элементы.ИнфоНадписьОПримененииВычетов);
КонецЕсли;
УстановитьИнфоНадписьВычеты(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьНаборЗаписейПериодическихСведений(ИмяРегистра, ВедущийОбъект) Экспорт
РедактированиеПериодическихСведений.ПрочитатьНаборЗаписей(ЭтотОбъект, ИмяРегистра, ВедущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьДанные(Отказ, ОповещениеЗавершения = Неопределено) Экспорт
Если Не Модифицированность Тогда
Если ОповещениеЗавершения <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ОповещениеЗавершения, Отказ);
КонецЕсли;
Возврат;
КонецЕсли;
Если Не СозданиеНового И Не Отказ Тогда
ЗапроситьРежимИзмененияСтатусаНалогоплательщика(СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период, Отказ, ОповещениеЗавершения);
Иначе
СохранитьДанныеЗавершение(Отказ, ОповещениеЗавершения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьДанныеЗавершение(Отказ, ОповещениеЗавершения)
Если Не Отказ Тогда
Если ПроверитьЗаполнение() Тогда
СохранитьРеквизитыУведомленияПриЗакрытии();
ВозвращаемыйПараметр = Новый Структура;
ВозвращаемыйПараметр.Вставить("ИмяФормы", ИмяФормы);
ВозвращаемыйПараметр.Вставить("АдресВХранилище", АдресДанныхДополнительнойФормыНаСервере(СотрудникиКлиентСервер.ОписаниеДополнительнойФормы(ИмяФормы)));
Оповестить(
"ИзмененыДанныеДополнительнойФормы",
ВозвращаемыйПараметр,
ВладелецФормы);
Иначе
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если ОповещениеЗавершения <> Неопределено Тогда
ВыполнитьОбработкуОповещения(ОповещениеЗавершения, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьИЗакрыть(Результат, ДополнительныеПараметры) Экспорт
СохранитьИЗакрытьНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьИЗакрытьНаКлиенте(ЗакрытьФорму = Истина) Экспорт
ОчиститьСообщения();
Если НЕ ТолькоПросмотр Тогда
ТекущийЭлемент = Элементы.ФормаОк;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ЗакрытьФорму", ЗакрытьФорму);
Оповещение = Новый ОписаниеОповещения("СохранитьИЗакрытьНаКлиентеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
СохранитьДанные(Ложь, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьИЗакрытьНаКлиентеЗавершение(Отказ, ДополнительныеПараметры) Экспорт
Если Не Отказ И Открыта() Тогда
Модифицированность = Ложь;
Если ДополнительныеПараметры.ЗакрытьФорму Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗапроситьРежимИзмененияСтатусаНалогоплательщика(ДатаИзменения, Отказ, ОповещениеЗавершения)
ДополнительныеПараметры = Новый Структура("ОповещениеЗавершения", ОповещениеЗавершения);
Оповещение = Новый ОписаниеОповещения("ЗапроситьРежимИзмененияСтатусаНалогоплательщикаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстКнопкиДа = НСтр("ru = 'Изменился статус налогоплательщика'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При редактировании изменился статус налогоплательщика.
|Если просто исправлены прежние данные (они были ошибочны), нажмите ""Исправлена ошибка"".
|Если у сотрудника изменился статус с %1, нажмите ""Изменился статус налогоплательщика""'"),
Формат(ДатаИзменения, "ДФ='д ММММ гггг ""г""'"));
РедактированиеПериодическихСведенийКлиент.ЗапроситьРежимИзмененияРегистра(ЭтотОбъект, "СтатусФизическихЛицКакНалогоплательщиковНДФЛ", ТекстВопроса, ТекстКнопкиДа, Отказ, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗапроситьРежимИзмененияСтатусаНалогоплательщикаЗавершение(Отказ, ДополнительныеПараметры) Экспорт
СохранитьДанныеЗавершение(Отказ, ДополнительныеПараметры.ОповещениеЗавершения);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПолеСтатусПериод(Форма, ДатаСеанса)
Если Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Статус = Форма.СтатусРезидент
И (Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛПрежняя.Период = НачалоМесяца(ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведенийСПериодомМесяц())
ИЛИ Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛПрежняя.Период = '00010101')
ИЛИ НЕ Форма.ДоступноИзменениеНалоговИВзносов Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод",
"АвтоОтметкаНезаполненного",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод",
"ОтметкаНезаполненного",
Ложь);
Иначе
Если Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = НачалоМесяца(ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведенийСПериодомМесяц())
И Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Статус <> Форма.СтатусРезидент Тогда
Если ЗначениеЗаполнено(Форма.ДатаПриема) Тогда
Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = НачалоМесяца(Форма.ДатаПриема);
Иначе
Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = НачалоМесяца(ДатаСеанса);
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод",
"АвтоОтметкаНезаполненного",
Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод",
"ОтметкаНезаполненного",
НЕ ЗначениеЗаполнено(Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период));
КонецЕсли;
Если Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = НачалоМесяца(ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведенийСПериодомМесяц()) Или Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период = ЗарплатаКадрыКлиентСервер.ДатаОтсчетаПериодическихСведений() Тогда
Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод = '00010101';
Иначе
Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛПериод = Форма.СтатусФизическихЛицКакНалогоплательщиковНДФЛ.Период;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьИнфоНадписьВычеты(Форма)
Если Форма.ВычетыПредоставлялись Тогда
ТекстВычетыИнфо = НСтр("ru = 'Вычеты сотруднику сейчас не предоставляются, но ранее предоставлялись. Предыдущие заявления на вычеты можно посмотреть по ссылке ""Все заявления на вычеты""'");
ЦветТекстаВычетыИнфо = Форма.ЦветСтиляРасширеннойПодсказки;;
ИначеЕсли ЗначениеЗаполнено(Форма.ГоловнаяОрганизация) И НЕ Форма.ФизическоеЛицоСсылка.Пустая() Тогда
ТекстВычетыИнфо = НСтр("ru = 'Вычеты сотруднику не предоставляются. Для того чтобы начать применение вычетов, введите заявление о предоставлении стандартных вычетов или уведомление нал.органа о праве на вычеты'");
ЦветТекстаВычетыИнфо = Форма.ЦветСтиляРасширеннойПодсказки;
Иначе
Если Форма.ИспользоватьКадровыйУчет Тогда
ТекстВычетыИнфо = НСтр("ru = 'Для ввода заявления о предоставлении стандартных вычетов или уведомления нал.органа о праве на вычеты, необходимо оформить прием на работу'");
Иначе
Если ЗначениеЗаполнено(Форма.ГоловнаяОрганизация) Тогда
ТекстВычетыИнфо = НСтр("ru = 'Для ввода заявления о предоставлении стандартных вычетов или уведомления нал.органа о праве на вычеты запишите сотрудника (Ctrl+S)'");
Иначе
ТекстВычетыИнфо = НСтр("ru = 'Для ввода заявления о предоставлении стандартных вычетов или уведомления нал.органа о праве на вычеты заполните организацию и запишите сотрудника (Ctrl+S)'");
КонецЕсли;
КонецЕсли;
ЦветТекстаВычетыИнфо = Форма.ЦветСтиляПоясняющийОшибкуТекст;
КонецЕсли;
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(
Форма,
"ГруппаНДФЛИнфо",
ТекстВычетыИнфо);
Форма.Элементы.ГруппаНДФЛИнфо.РасширеннаяПодсказка.ЦветТекста = ЦветТекстаВычетыИнфо;
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Форма.СтандартныеВычетыНДФЛВычетыНаДетей, "ДействуетДо", "ДействуетДоСтрокой");
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьВводаВычетов() Экспорт
ДоступностьКоманд = ЗначениеЗаполнено(ГоловнаяОрганизация);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НовоеЗаявлениеНаПредоставлениеВычетов1",
"Доступность",
ДоступностьКоманд);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НовоеУведомлениеОПравеНаИмущественныйВычет1",
"Доступность",
ДоступностьКоманд);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НовоеЗаявлениеНаПредоставлениеВычетов",
"Доступность",
ДоступностьКоманд);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НовоеУведомлениеОПравеНаИмущественныйВычет",
"Доступность",
ДоступностьКоманд);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВсеЗаявленияНаВычеты1",
"Доступность",
ДоступностьКоманд);
КонецПроцедуры
&НаСервере
Функция АдресДанныхДополнительнойФормыНаСервере(ОписаниеДополнительнойФормы)
Возврат СотрудникиФормы.АдресДанныхДополнительнойФормы(ОписаниеДополнительнойФормы, ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ПрочитатьНаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей()
Если Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей) Тогда
Возврат;
КонецЕсли;
НаборЗаписей = РегистрыСведений.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ФизическоеЛицо.Установить(ФизическоеЛицоСсылка);
Если ЗначениеЗаполнено(ГоловнаяОрганизация) Тогда
НаборЗаписей.Отбор.ГоловнаяОрганизация.Установить(ГоловнаяОрганизация);
КонецЕсли;
НаборЗаписей.Прочитать();
НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Загрузить(НаборЗаписей.Выгрузить());
НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейПрочитан = Истина;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей(НалоговыйПериод = Неопределено)
Если НалоговыйПериод = Неопределено Тогда
НалоговыйПериод = Год(ТекущаяДатаСеанса());
КонецЕсли;
СтрокиГода = НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.НайтиСтроки(Новый Структура("Год", НалоговыйПериод));
Если СтрокиГода.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей, СтрокиГода[0]);
Иначе
РеквизитыУведомления = РегистрыСведений.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.СоздатьМенеджерЗаписи();
РеквизитыУведомления.Год = НалоговыйПериод;
РеквизитыУведомления.ФизическоеЛицо = ФизическоеЛицоСсылка;
РеквизитыУведомления.ГоловнаяОрганизация = ГоловнаяОрганизация;
ЗначениеВРеквизитФормы(РеквизитыУведомления, "РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей");
КонецЕсли;
РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейПрежняя = ОбщегоНазначения.СтруктураПоМенеджеруЗаписи(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей, Метаданные.РегистрыСведений.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей);
НалоговыйПериодПредыдущий = РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Год;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейГоловнаяОрганизация",
"Видимость",
Не ЗначениеЗаполнено(ГоловнаяОрганизация));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"УведомлениеНаАвансовыеПлатежи",
"ТолькоПросмотр",
ТолькоПросмотр);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыУведомленияИФНСИзменялись(Форма)
РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей = Форма.РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей;
СтрокиГода = Форма.НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.НайтиСтроки(Новый Структура("Год", Форма.НалоговыйПериодПредыдущий));
Если СтрокиГода.Количество() = 0 Тогда
СтруктурыРазличны = ЗначениеЗаполнено(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.НомерУведомления)
Или ЗначениеЗаполнено(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.ДатаУведомления)
Или ЗначениеЗаполнено(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.КодНалоговогоОргана);
Иначе
СтрокаГода = СтрокиГода[0];
СтруктурыРазличны = СтрокаГода.НомерУведомления <> РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.НомерУведомления
Или СтрокаГода.ДатаУведомления <> РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.ДатаУведомления
Или СтрокаГода.КодНалоговогоОргана <> РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.КодНалоговогоОргана;
КонецЕсли;
Возврат СтруктурыРазличны;
КонецФункции
&НаКлиенте
Процедура ПриИзмененииРеквизитыУведомленияИФНС()
Если РеквизитыУведомленияИФНСИзменялись(ЭтотОбъект) Тогда
ПриИзмененииРеквизитыУведомленияИФНСНаСервере();
Иначе
ПрочитатьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Год);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииРеквизитыУведомленияИФНСНаСервере()
НалоговыйПериод = РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Год;
СохранитьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей();
ПрочитатьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей(НалоговыйПериод);
КонецПроцедуры
&НаСервере
Процедура СохранитьРеквизитыУведомленияПриЗакрытии()
Если РеквизитыУведомленияИФНСИзменялись(ЭтотОбъект) Тогда
СохранитьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СохранитьРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей()
СтрокиГода = НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.НайтиСтроки(Новый Структура("Год", НалоговыйПериодПредыдущий));
Если СтрокиГода.Количество() = 0 Тогда
Запись = НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Добавить();
Запись.ФизическоеЛицо = ФизическоеЛицоСсылка;
Иначе
Запись = СтрокиГода[0];
КонецЕсли;
Запись.Год = НалоговыйПериодПредыдущий;
ЗаполнитьЗначенияСвойств(Запись, РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей, "ГоловнаяОрганизация,НомерУведомления,ДатаУведомления,КодНалоговогоОргана");
НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Сортировать("Год,ДатаУведомления");
КонецПроцедуры
&НаСервере
Функция ЗаписиРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей()
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(НаборЗаписейРеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей.Выгрузить());
КонецФункции
&НаКлиенте
Функция РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейЗаблокироватьФизическоеЛицо()
Если Не ЗаблокироватьОбъектВФормеВладельце() Тогда
ЗаполнитьЗначенияСвойств(РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежей, РеквизитыУведомленияИФНСНаЗачетАвансовыхПлатежейПрежняя);
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Функция СтатусФизическихЛицКакНалогоплательщиковНДФЛЗаблокироватьФизическоеЛицо()
Если Не ЗаблокироватьОбъектВФормеВладельце() Тогда
ЗаполнитьЗначенияСвойств(СтатусФизическихЛицКакНалогоплательщиковНДФЛ, СтатусФизическихЛицКакНалогоплательщиковНДФЛПрежняя);
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиенте
Функция ЗаблокироватьОбъектВФормеВладельце() Экспорт
Возврат СотрудникиКлиент.ЗаблокироватьОбъектВФормеВладельцеДополнительнойФормы(ЭтотОбъект, ИзФормыСотрудника);
КонецФункции
#КонецОбласти