Статусы налогоплательщиков (НДФЛ) / Модуль менеджера

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

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

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
	Если ЗарплатаКадры.АвтономнаяРаботаРазрешеноИзменениеДанных(Метаданные.Справочники.СтатусыНалогоплательщиковПоНДФЛ) Тогда
		
		Обработчик = Обработчики.Добавить();
		Обработчик.Процедура = "Справочники.СтатусыНалогоплательщиковПоНДФЛ.НачальноеЗаполнение";
		Обработчик.ОбщиеДанные = Истина;
		Обработчик.НачальноеЗаполнение = Истина;
		
		Обработчик = Обработчики.Добавить();
		Обработчик.Версия = "3.1.28.78";
		Обработчик.Процедура = "Справочники.СтатусыНалогоплательщиковПоНДФЛ.ОписатьСтатусДистанционныйРаботник";
		Обработчик.ОбщиеДанные = Истина;
		
		Обработчик = Обработчики.Добавить();
		Обработчик.Версия = "3.1.34.165";
		Обработчик.Процедура = "Справочники.СтатусыНалогоплательщиковПоНДФЛ.ОписатьСтатусИноагент";
		Обработчик.ОбщиеДанные = Истина;
		
	КонецЕсли;
КонецПроцедуры

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

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

Процедура ОписатьСтатусДистанционныйРаботник() Экспорт
	
	ОписатьСтатусНалогоплательщика("ДистанционныйРаботник", НСтр("ru = 'Дистанционный работник, не являющийся налоговым резидентом РФ'"), "2", "8", 9);
	
КонецПроцедуры

Процедура ОписатьСтатусИноагент() Экспорт
	
	ОписатьСтатусНалогоплательщика("Иноагент", НСтр("ru = 'Физическое лицо - иностранный агент'"), "-", "2", 10);
	
КонецПроцедуры


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

Процедура ПроставитьКоды_2015(Переписывать = Ложь)

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

Функция ОписаниеСтатуса()
	
	Возврат Новый Структура("Идентификатор, Наименование, КодФНС");	
	
КонецФункции	

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

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

#КонецЕсли

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