Сведения для реестра прямых выплат ФСС / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

Процедура ПриКопировании(ОбъектКопирования)
	ИсправленныйДокумент = ОбъектКопирования.Ссылка;
КонецПроцедуры

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

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

Процедура ПриЗаписи(Отказ)
	Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда
		Возврат;
	КонецЕсли;
	СЭДОФСС.ПриЗаписиЗаявленияНаВыплатуПособия(ЭтотОбъект, Отказ);
КонецПроцедуры

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

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

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

#Область ПередЗаписью

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

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

#Область ОбработкаПроверкиЗаполнения

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

Функция ТребуетсяРасчетПособия()
	Возврат ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеПоВременнойНетрудоспособности
		Или ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеПоБеременностиИРодам
		Или ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеПоБеременностиИРодамВставшимНаУчетВРанниеСроки
		Или ВидПособия = Перечисления.ПособияНазначаемыеФСС.ЕжемесячноеПособиеПоУходуЗаРебенком
		Или ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеВСвязиСНесчастнымСлучаемНаПроизводстве;
КонецФункции

Процедура ПроверитьРеквизитыПолучателя(Отказ)
	// СНИЛС.
	ТекстОшибки = "";
	Если ЗначениеЗаполнено(СтрЗаменить(СНИЛСПолучателя, "-",""))
		И Не РегламентированныеДанныеКлиентСервер.СтраховойНомерПФРСоответствуетТребованиям(СНИЛСПолучателя, ТекстОшибки) Тогда
		Текст = НСтр("ru = 'СНИЛС получателя пособия указан не верно. %1'");
		Текст = СтрШаблон(Текст, ТекстОшибки);
		СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, "СНИЛСПолучателя");
	КонецЕсли;
	
	// ИНН.
	ТекстОшибки = "";
	Если ЗначениеЗаполнено(ИННПолучателя)
		И Не РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ИННПолучателя, Ложь, ТекстОшибки) Тогда
		Текст = НСтр("ru = 'ИНН получателя пособия указан не верно. %1'");
		Текст = СтрШаблон(Текст, ТекстОшибки);
		СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, "ИННПолучателя");
	КонецЕсли;
	
	// Пол.
	КадровыеДанныеСотрудника = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ФизическоеЛицо), "Пол");
	Если КадровыеДанныеСотрудника.Количество() > 0 Тогда
		Если Не ЗначениеЗаполнено(КадровыеДанныеСотрудника[0].Пол) Тогда
			Текст = НСтр("ru = 'Не заполнен пол получателя пособия.'");
			СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, "Пол");
		КонецЕсли;
	КонецЕсли;
	
	// Документ, удостоверяющий личность.
	ИменаРеквизитов = Новый Структура;
	ИменаРеквизитов.Вставить("Сотрудник",           "Сотрудник");
	ИменаРеквизитов.Вставить("ФизическоеЛицо",      "ФизическоеЛицо");
	ИменаРеквизитов.Вставить("ВидДокумента",        "ВидДокументаУдостоверяющегоЛичностьПолучателя");
	ИменаРеквизитов.Вставить("СерияДокумента",      "СерияДокументаУдостоверяющегоЛичностьПолучателя");
	ИменаРеквизитов.Вставить("НомерДокумента",      "НомерДокументаУдостоверяющегоЛичностьПолучателя");
	ИменаРеквизитов.Вставить("ДатаВыдачиДокумента", "ДатаВыдачиДокументаУдостоверяющегоЛичностьПолучателя");
	ИменаРеквизитов.Вставить("КемВыданДокумент",    "КемВыданДокументУдостоверяющийЛичностьПолучателя");
	
	ПрямыеВыплатыПособийСоциальногоСтрахования.ПроверитьДокументУдостоверяющийЛичность(Отказ, ЭтотОбъект, ИменаРеквизитов);
	
	// Код ФНС удостоверения личности / документа подтверждающего право на проживание.
	ROWSET = ПрямыеВыплатыПособийСоциальногоСтрахования.КорневойЭлементРеестраПилотногоПроектаФСС();
	ROW    = ПрямыеВыплатыПособийСоциальногоСтрахования.ЭлементРеестраПилотногоПроектаФСС(ROWSET);
	ПроверитьКодУдостоверенияЛичности(Отказ, ROW);
	
	// Адреса.
	Если СпособВыплатыПособия = Перечисления.СпособыВыплатыПособия.ПочтовымПереводом Тогда
		ТекстОшибки = ПроверитьАдрес(
			АдресПолучателяФактический,
			АдресПолучателяФактическийИдентификаторФИАС,
			АдресПолучателяФактическийКодКЛАДР);
		Если ЗначениеЗаполнено(ТекстОшибки) Тогда
			ТекстОшибки = Метаданные().Реквизиты.АдресПолучателяФактический.Представление() + ": " + ТекстОшибки;
			СообщитьОбОшибкеВЭтомОбъекте(Отказ, ТекстОшибки, "АдресПолучателяФактический");
		КонецЕсли;
	КонецЕсли;
	Если Справочники.СтатусыНалогоплательщиковПоНДФЛ.ЭтоРезидент(СтатусНалогоплательщикаПолучателя) Тогда
		ТекстОшибки = ПроверитьАдрес(
			АдресПолучателяРегистрации,
			АдресПолучателяРегистрацииИдентификаторФИАС,
			АдресПолучателяРегистрацииКодКЛАДР);
		Если ЗначениеЗаполнено(ТекстОшибки) Тогда
			ТекстОшибки = Метаданные().Реквизиты.АдресПолучателяРегистрации.Представление() + ": " + ТекстОшибки;
			СообщитьОбОшибкеВЭтомОбъекте(Отказ, ТекстОшибки, "АдресПолучателяРегистрации");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Процедура ПроверитьКодУдостоверенияЛичности(Отказ, ROW)
	ДопустимыеВидыУдостоверенийЛичности = ПрямыеВыплатыПособийСоциальногоСтрахования.ДопустимыеЗначенияСтрокиРеестра(
		ROW,
		"ID_TYPE");
	ЭтоДокументНаПроживание = (ЗначениеЗаполнено(СерияДокументаНаПроживание + " " + НомерДокументаНаПроживание)
		И ЗначениеЗаполнено(ДатаВыдачиДокументаНаПроживание)
		И ЗначениеЗаполнено(КемВыданДокументНаПроживание)
		И ЗначениеЗаполнено(Гражданство)
		И Гражданство <> ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.СтраныМира.Россия"));
	Если ЭтоДокументНаПроживание Тогда
		Если ЗначениеЗаполнено(ВидДокументаНаПроживание) Тогда
			КодМВД = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидДокументаНаПроживание, "КодМВД");
		Иначе
			КодМВД = Неопределено;
		КонецЕсли;
		Если Не ЗначениеЗаполнено(КодМВД) Тогда
			ВидУдостоверенияЛичности = "01";
		Иначе
			ВидУдостоверенияЛичности = КодМВД;
		КонецЕсли;
		Если ДопустимыеВидыУдостоверенийЛичности.Найти(ВидУдостоверенияЛичности) = Неопределено Тогда
			Текст = НСтр("ru = 'Код ФНС документа подтверждающего право на проживание %1 не поддерживается форматом обмена с ФСС.'");
			Текст = СтрШаблон(Текст, ВидУдостоверенияЛичности);
			СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, "ВидДокументаНаПроживание");
		КонецЕсли;
	Иначе
		Если ЗначениеЗаполнено(ВидДокументаУдостоверяющегоЛичностьПолучателя) Тогда
			КодМВД = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидДокументаУдостоверяющегоЛичностьПолучателя, "КодМВД");
		Иначе
			КодМВД = Неопределено;
		КонецЕсли;
		Если КодМВД = "18" Тогда
			ВидУдостоверенияЛичности = "19";
		ИначеЕсли Не ЗначениеЗаполнено(КодМВД) Тогда
			ВидУдостоверенияЛичности = "01";
		Иначе
			ВидУдостоверенияЛичности = КодМВД;
		КонецЕсли;
		Если ДопустимыеВидыУдостоверенийЛичности.Найти(ВидУдостоверенияЛичности) = Неопределено Тогда
			Текст = НСтр("ru = 'Код ФНС ""%1"" документа удостоверяющего личность не поддерживается форматом обмена с ФСС.'");
			Текст = СтрШаблон(Текст, ВидУдостоверенияЛичности);
			СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, "ВидДокументаУдостоверяющегоЛичностьПолучателя");
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Функция ПроверитьАдрес(ЗначениеАдреса, ИдентификаторФИАС, КодКЛАДР)
	Если Не ЗначениеЗаполнено(ЗначениеАдреса) Тогда
		Возврат НСтр("ru = 'Адрес не заполнен'");
	КонецЕсли;
	
	ТекстыОшибок = Новый Массив;
	Если Не ЗначениеЗаполнено(ИдентификаторФИАС) И Не ЗначениеЗаполнено(КодКЛАДР) Тогда
		Если Дата > ДатаПереходаАдресовНаGUID() Тогда
			Текст = НСтр("ru = 'Не заполнен идентификатор ФИАС. Возможно, адрес введен некорректно, либо не обновлен классификатор адресов.'");
		Иначе
			Текст = НСтр("ru = 'Не заполнен код КЛАДР. Возможно, адрес введен некорректно, либо не обновлен классификатор адресов.'");
		КонецЕсли;
		ТекстыОшибок.Добавить(Текст);
	КонецЕсли;
	
	СтруктураАдреса = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.СтруктураАдреса(ЗначениеАдреса);
	Если Не ЗначениеЗаполнено(СтруктураАдреса.Индекс) Тогда
		ТекстыОшибок.Добавить(НСтр("ru = 'Не заполнен индекс.'"));
	ИначеЕсли СтрДлина(СтруктураАдреса.Индекс) <> 6 Тогда
		ТекстыОшибок.Добавить(СтрШаблон(НСтр("ru = 'Индекс занимает %1 символов, ожидалось 6.'"), СтрДлина(СтруктураАдреса.Индекс)));
	Иначе
		ЛишниеСимволы = СтроковыеФункцииБЗККлиентСервер.УдалитьЦифрыИзСтроки(СтруктураАдреса.Индекс);
		Если Не ПустаяСтрока(ЛишниеСимволы) Тогда
			Если СтрДлина(ЛишниеСимволы) = 1 Тогда
				Текст = НСтр("ru = 'В индексе должны быть только цифры (%1 - не цифра).'");
			Иначе
				Текст = НСтр("ru = 'В индексе должны быть только цифры (%1 - не цифры).'");
			КонецЕсли;
			ТекстыОшибок.Добавить(СтрШаблон(Текст, ЛишниеСимволы));
		КонецЕсли;
	КонецЕсли;
	
	Возврат СтрСоединить(ТекстыОшибок, Символы.ПС);
КонецФункции

Функция ДатаПереходаАдресовНаGUID()
	Возврат '20180101'; // 1 января - дата из регламента, '20180219' - фактическая дата начала приема.
КонецФункции

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

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

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

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

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

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

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

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

Процедура ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ИмяРеквизита, Знач Текст = "")
	ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, ИмяРеквизита, Текст);
КонецПроцедуры

Процедура СообщитьОбОшибкеВЭтомОбъекте(Отказ, Текст, ИмяРеквизита = "")
	СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, Текст, ИмяРеквизита);
КонецПроцедуры

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

#Область ФиксацияВторичныхДанныхВДокументах

Функция ОбъектЗафиксирован(ТекстОшибки = Неопределено) Экспорт
	// В некоторых случаях заявление может быть дополнено будучи включенным в реестр.
	// Например, сначала отправили реестры 65+ (см. постановление Правительства РФ от 01.04.2020 № 402),
	// затем получили ЭЛН и создали больничные, которые необходимо сопоставить с введенными ранее заявлениями.
	РазрешитьИзменение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "РазрешитьИзменение");
	Если РазрешитьИзменение = Истина Тогда
		Возврат Ложь; // Изменения разрешены.
	КонецЕсли;
	// Проверка что заявление включено в реестр, состояние которого позволяет редактировать данные.
	СведенияОРеестре = ПрямыеВыплатыПособийСоциальногоСтрахования.РеестрПоЗаявлению(Ссылка);
	Если СведенияОРеестре <> Неопределено
		И Не ПрямыеВыплатыПособийСоциальногоСтрахования.СтатусПозволяетРедактироватьДокумент(СведенияОРеестре.СтатусДокумента) Тогда
		ТекстОшибки = СтрШаблон(
			НСтр("ru = 'Заявление включено в %1: Реестр в статусе ""%2"".'"),
			СведенияОРеестре.Ссылка,
			СведенияОРеестре.СтатусДокумента);
		Возврат Истина;
	КонецЕсли;
	// Проверка даты запрета.
	Если ДатыЗапретаИзменения.ИзменениеЗапрещено(ЭтотОбъект) Тогда
		Возврат Истина;
	КонецЕсли;
	Возврат Ложь;
КонецФункции

Функция ОбновитьВторичныеДанныеДокумента() Экспорт
	Если ОбъектЗафиксирован() Тогда
		Возврат Ложь;
	КонецЕсли;
	
	Модифицирован = Ложь;
	
	Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(Метаданные().ПолноеИмя());
	
	// Переход на новую версию (в случае, если документ еще не отработан отложенным обработчиком обновления).
	Если ВерсияДокумента < Менеджер.АктуальнаяВерсия() Тогда
		Менеджер.ОбновитьДокумент(ЭтотОбъект);
		Модифицирован = Истина;
	КонецЕсли;
	
	// Обновление реквизитов шапки.
	ПараметрыФиксации = Менеджер.ПараметрыФиксацииВторичныхДанных(ЭтотОбъект);
	
	// Районный коэффициент может быть получен из документа-основания, подразделения сотрудника и организации.
	// Источники перечислены в порядке убывания приоритета.
	РайонныйКоэффициентЗаполненИзОснования = Ложь;
	
	Если ЗначениеЗаполнено(ДокументОснование)
		И ЗаполнитьДанныеДокументаОснования(ПараметрыФиксации, РайонныйКоэффициентЗаполненИзОснования) Тогда
			Модифицирован = Истина;
	КонецЕсли;
	Если ЗначениеЗаполнено(Организация)
		И ЗаполнитьДанныеОрганизации(ПараметрыФиксации, РайонныйКоэффициентЗаполненИзОснования) Тогда
			Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьСведенияОПредставителеСФР(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьКадровыеДанныеСотрудника(ПараметрыФиксации, РайонныйКоэффициентЗаполненИзОснования) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьДокументНаПроживание(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьСпособВыплатыПособия(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьКонтактыФизическогоЛица(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьКодыАдресаПочтовогоПеревода(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьСреднийЗаработок(ПараметрыФиксации) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	
	ПредшествующиеСведения = ПредшествующиеСведенияОЗастрахованномЛице();
	Если ЗаполнитьОснованияЛьгот(ПараметрыФиксации, ПредшествующиеСведения) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	Если ЗаполнитьФлажокИзмененыСведенияОЗастрахованномЛице(ПараметрыФиксации, ПредшествующиеСведения) Тогда
		Модифицирован = Истина;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(АдресПолучателяРегистрации) Тогда
		ТекстОшибки = Неопределено;
		КодыАдреса = ПрямыеВыплатыПособийСоциальногоСтрахования.КодыАдреса(АдресПолучателяРегистрации, ТекстОшибки);
		РеквизитыДокумента = Новый Структура("АдресПолучателяРегистрацииИдентификаторФИАС, АдресПолучателяРегистрацииКодКЛАДР");
		Если КодыАдреса = Неопределено Тогда
			СообщенияБЗК.СообщитьОПроблеме(ТекстОшибки, ЭтотОбъект, "АдресПолучателяРегистрации");
		Иначе
			РеквизитыДокумента.АдресПолучателяРегистрацииИдентификаторФИАС = КодыАдреса.ИдентификаторОбъектаФИАС;
			РеквизитыДокумента.АдресПолучателяРегистрацииКодКЛАДР = ?(СтрДлина(КодыАдреса.КодКЛАДР) = 16, "0" + КодыАдреса.КодКЛАДР, КодыАдреса.КодКЛАДР);
		КонецЕсли;
		Если ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеШапки(РеквизитыДокумента, ЭтотОбъект, ПараметрыФиксации) Тогда
			Модифицирован = Истина;
		КонецЕсли;
	КонецЕсли;
	
	// АПК:278-выкл Базовые подсистемы могут условно вызывать расширенные.
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы.ПособияСоциальногоСтрахования.ПрямыеВыплаты") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("ПрямыеВыплатыПособийСоциальногоСтрахованияРасширенный");
		Модуль.ПриОбновленииВторичныхДанныхЗаявления(ЭтотОбъект, ПараметрыФиксации, Модифицирован);
	КонецЕсли;
	// АПК:278-вкл
	
	Возврат Модифицирован;
КонецФункции

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

Процедура ЗаполнитьРеквизитыРасчетаСреднегоЗаработка(РеквизитыДокумента, ДанныеДляРасчетаСреднегоЗаработка)
	
	ПараметрыРасчета = ДанныеДляРасчетаСреднегоЗаработка.ПараметрыРасчета;
	ДанныеРасчетаСреднего = ДанныеДляРасчетаСреднегоЗаработка.ДанныеРасчетаСреднего;
	
	РеквизитыДокумента.Вставить("ДатаНачалаРасчетногоПериода", 		ПараметрыРасчета.ПериодРасчетаСреднегоЗаработкаНачало);
	РеквизитыДокумента.Вставить("ДатаОкончанияРасчетногоПериода", 	ПараметрыРасчета.ПериодРасчетаСреднегоЗаработкаОкончание);
	РеквизитыДокумента.Вставить("ПервыйРасчетныйГод", 				ПараметрыРасчета.РасчетныеГоды[0]);
	РеквизитыДокумента.Вставить("ВторойРасчетныйГод", 				ПараметрыРасчета.РасчетныеГоды[1]);
	РеквизитыДокумента.Вставить("РайонныйКоэффициент", 				ПараметрыРасчета.РайонныйКоэффициентРФ);
	РеквизитыДокумента.Вставить("ДоляВремени", 						УчетПособийСоциальногоСтрахованияКлиентСервер.ДоляНеполногоВремени(ПараметрыРасчета));

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

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

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

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

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

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

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

Процедура ЗаполнитьРеквизитыБанкаПоСсылке(РеквизитыБанка)
	Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Банк, "Наименование, Код, КоррСчет");
	РеквизитыБанка.НаименованиеБанка = Реквизиты.Наименование;
	РеквизитыБанка.БИКБанка          = Реквизиты.Код;
	РеквизитыБанка.КоррСчетБанка     = Реквизиты.КоррСчет;
КонецПроцедуры

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

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

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

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

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

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

#Область СведенияОЗастрахованномЛице

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

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

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

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

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

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли

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