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

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

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

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

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

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	ФиксацияЗаполнитьИдентификаторыФиксТЧ(ЭтотОбъект);
КонецПроцедуры

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

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

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

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

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

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

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


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

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

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

&НаКлиенте
Процедура СтатусДокументаПриИзменении(Элемент)
	ОбновитьВидимостьСтраницНаОснованииВидаДокумента();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ГруппаДанныеРебенкаПояснениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьЗаявлениеНаСтранице("СведенияДляЭлектронногоРеестра");
КонецПроцедуры

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

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


#Область ОбработчикиСобытийЭлементовТаблицыФормыСведенияНеобходимыеДляНазначенияПособий

&НаКлиенте
Процедура СведенияНеобходимыеДляНазначенияПособийПриАктивизацииСтроки(Элемент)
	ИдентификаторСтроки = Элементы.СведенияНеобходимыеДляНазначенияПособий.ТекущаяСтрока;
	СведенияНеобходимыеДляНазначенияПособийПриАктивизацииСтрокиНаСервере(ИдентификаторСтроки);
КонецПроцедуры

&НаКлиенте
Процедура СведенияНеобходимыеДляНазначенияПособийПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Отказ = Истина;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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


#Область ОбработчикиСобытийЭлементовТаблицыФормыПриостановленияТрудовыхДоговоров

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

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


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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПояснениеРеестрОтправлен()
	Возврат НСтр("ru = 'Реестр отправлен.'");
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ПояснениеДостигнутоОграничениеЧислаСтрок()
	Возврат НСтр("ru = 'Достигнуто ограничение в 200 строк.'");
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ПояснениеНельзяДобавитьСтроку()
	Возврат НСтр("ru = 'Добавление новых строк невозможно.'");
КонецФункции

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

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

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

&НаКлиенте
Процедура ОбновитьВторичныеДанные(Команда)
	НачатьОбновлениеВторичныхДанных();
КонецПроцедуры

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

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

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


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

#Область СлужебныйПрограммныйИнтерфейс

&НаКлиенте
// АПК:78-выкл: Используется в модуле ПрямыеВыплатыПособийСоциальногоСтрахованияКлиент.
Процедура ВывестиСообщенияПользователю(Сообщения) Экспорт
// АПК:78-вкл
	Для Каждого Сообщение Из Сообщения Цикл
		СкорректироватьПривязкиСообщенияПользователю(Сообщение, Объект);
		Сообщение.Сообщить();
	КонецЦикла;
КонецПроцедуры

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

#Область Свойства

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

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

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

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

#Область ПодключаемыеКоманды

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

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

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

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

#Область РегламентированнаяОтчетность

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

&НаКлиенте
Процедура ГиперссылкаПротоколНажатие(Элемент)
	ЭлектронныйДокументооборотСКонтролирующимиОрганамиКлиент.ОткрытьПротоколИзПанелиОтправки(ЭтотОбъект, "ФСС");
КонецПроцедуры

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

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

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

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

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

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

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

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

#Область ИнформационнаяПанельБРО

&НаСервере
Процедура ОбновитьИнформационнуюПанельБРО()
	ПараметрыОтображения = ЭлектронныйДокументооборотСФСС.ПараметрыИнформационнойПанелиБРО();
	ПараметрыОтображения.Организация = СЭДОФСС.СтраховательОрганизации(Объект.Организация);
	ПараметрыОтображения.Группа      = Элементы.ИнформационнаяПанельБРО;
	ПараметрыОтображения.Форма       = ЭтотОбъект;
	ПараметрыОтображения.ЭтоСЭДО     = Ложь;
	ЭлектронныйДокументооборотСФСС.ОбновитьИнформационнуюПанельБРО(ПараметрыОтображения);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ИнформационнаяПанельБРООбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	ЭлектронныйДокументооборотСФССКлиент.ИнформационнаяПанельБРОНажатие(
		ЭтотОбъект,
		НавигационнаяСсылкаФорматированнойСтроки, 
		СтандартнаяОбработка);
КонецПроцедуры

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

#Область ПодписиДокументов

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

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

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

#Область КлючевыеРеквизитыЗаполненияФормы

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

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

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

#Область МеханизмФиксацииИзменений

&НаСервере
Функция ОбъектЗафиксирован() Экспорт
	Возврат РеквизитФормыВЗначение("Объект").ОбъектЗафиксирован();
КонецФункции

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ФиксацияЗаполнитьИдентификаторыФиксТЧ(Форма)
	ФиксацияВторичныхДанныхВДокументахКлиентСервер.ЗаполнитьИдентификаторыСтрок(Форма);
КонецПроцедуры

&НаСервере
Процедура ФиксацияУстановитьОбъектЗафиксирован()
	ФиксацияВторичныхДанныхВДокументахФормы.УстановитьОбъектЗафиксирован(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура НачатьОбновлениеВторичныхДанных()
	ОтключитьОбработчикОжидания("ОбновитьВторичныеДанныеНаКлиенте");
	ПодключитьОбработчикОжидания("ОбновитьВторичныеДанныеНаКлиенте", 0.1, Истина);
КонецПроцедуры

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

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

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

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

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

#Область РаботаСФормой

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

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

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

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

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

&НаСервереБезКонтекста
Процедура ПодготовитьОповещениеПользователя(Структура, Текст, ДействиеПриНажатии = Неопределено, Пояснение = "", Картинка = Неопределено)
	
	ОповещениеПользователя = Новый Структура;
	ОповещениеПользователя.Вставить("Текст",              Текст); 
	ОповещениеПользователя.Вставить("ДействиеПриНажатии", ДействиеПриНажатии);
	ОповещениеПользователя.Вставить("Пояснение",          Пояснение);
	ОповещениеПользователя.Вставить("Картинка",           Картинка);

	Структура.Вставить("ОповещениеПользователя", ОповещениеПользователя);
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьСтраницуПрочее(Форма, СтрокаСведений)
	Если СтрокаСведений = Неопределено Тогда
		НомерЛН = "";
	Иначе
		НомерЛН = СтрокаСведений.НомерЛисткаНетрудоспособности;
	КонецЕсли;
	ФорматНомераЛНСоответствуетКоду2 = (СтрДлина(НомерЛН) = 15 И СтрНачинаетсяС(НомерЛН, "#"));
	Элементы = Форма.Элементы;
	Элементы.ГруппаСведенияНеобходимыеДляНазначенияПособийAvgSal.Видимость = ФорматНомераЛНСоответствуетКоду2;
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПодставитьПараметрыВШаблонСтроки(ШаблонСтроки, КлючиИЗначенияПараметров)
	ШаблонПараметра = "[%1]";
	Результат = ШаблонСтроки;
	Для Каждого КлючИЗначение Из КлючиИЗначенияПараметров Цикл
		Если ТипЗнч(КлючИЗначение.Значение) = Тип("Дата") Тогда
			Значение = Формат(КлючИЗначение.Значение, "ДЛФ=D");
		Иначе
			Значение = КлючИЗначение.Значение;
		КонецЕсли;
		Результат = СтрЗаменить(Результат, СтрШаблон(ШаблонПараметра, КлючИЗначение.Ключ), Значение);
	КонецЦикла;
	Возврат Результат;
КонецФункции

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

&НаСервереБезКонтекста
Функция КонтактнаяИнформацияПоПредставлению(Знач Представление, Знач ОжидаемыйВид)
	Возврат УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Представление, ОжидаемыйВид);
КонецФункции

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

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

#Область ЗаполнениеДокумента

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

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

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

#Область ПроверкиЗаполненияПоРегламентуФСС

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

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

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

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

#Область РаботаСXML

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

&НаСервереБезКонтекста
Функция ФайлРеестраПрямыхВыплат(Знач СсылкаРеестра, Знач УникальныйИдентификатор)
	// Возвращает описание файла реестра прямых выплат.
	//
	// Параметры:
	//   СсылкаРеестра - ДокументСсылка.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий - Реестр ПВСО.
	//   УникальныйИдентификатор - УникальныйИдентификатор, Неопределено - Уникальный идентификатор формы,
	//       к которому следует привязать временное хранилище файла.
	//
	// Возвращаемое значение:
	//   Структура - Описание файла.
	//
	Возврат Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ФайлРеестра(СсылкаРеестра, УникальныйИдентификатор)
КонецФункции

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

#Область ИзвещенияФСС

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

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

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

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