Заявление в СФР о возмещении выплат родителям детей-инвалидов / Модуль менеджера

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

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// СтандартныеПодсистемы.Печать

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

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

// Конец СтандартныеПодсистемы.Печать

// СтандартныеПодсистемы.УправлениеДоступом

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

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

#Область ЗащитаПерсональныхДанных

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

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

#Область СоставДокументов

Функция Метаданные() Экспорт
	Возврат Метаданные.Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов;
КонецФункции

// Возвращает описание состава документа
//
// Возвращаемое значение:
//   Структура - см. ЗарплатаКадрыСоставДокументов.НовоеОписаниеСоставаОбъекта.
//
Функция ОписаниеСоставаОбъекта() Экспорт
	Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаПоМетаданнымФизическиеЛицаВТабличныхЧастях(
		Метаданные());
КонецФункции

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

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

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

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

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

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

Функция ПараметрыФиксацииВторичныхДанных() Экспорт
	Возврат ФиксацияВторичныхДанныхВДокументах.ПараметрыФиксации(ФиксируемыеРеквизиты(), ФиксируемыеТаблицы());
КонецФункции

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

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

#Область ОбновлениеИнформационнойБазы

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
	
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия          = "3.1.23.59";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор   = Новый УникальныйИдентификатор("6a09a8e5-e73d-11ec-8107-5cf3709cf896");
	Обработчик.Процедура       = "Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.АдаптироватьКФорме2022";
	Обработчик.Комментарий     = НСтр("ru = 'Заполнение вторичных данных документа ""Заявление в ФСС о возмещении выплат родителям детей-инвалидов"" необходимых для печати.'");
	
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия          = "3.1.31.7";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор   = Новый УникальныйИдентификатор("21ff1e6d-5a39-11ef-812d-4cedfb43b11a");
	Обработчик.Процедура       = "Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.ЗаполнитьКраткийСостав";
	Обработчик.Комментарий     = НСтр("ru = 'Заполнение сведений о сотрудниках в документе ""Заявление в ФСС о возмещении выплат родителям детей-инвалидов"" необходимых для вывода в списке.'");
	
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия          = "3.1.34.108";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор   = Новый УникальныйИдентификатор("d0526966-9d1d-11f0-8166-c84d4423fb75");
	Обработчик.Процедура       = "Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.ПовторноОбработатьСообщения12110";
	Обработчик.Комментарий     = НСтр("ru = 'СЭДО ЕЦП: Обработка сообщений типа 12110 ""Результат обработки заявления о возмещении выплат родителям детей-инвалидов"".'");
	
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия          = "3.1.34.108";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор   = Новый УникальныйИдентификатор("d0526967-9d1d-11f0-8166-c84d4423fb75");
	Обработчик.Процедура       = "Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.ПовторноОбработатьСообщения12210";
	Обработчик.Комментарий     = НСтр("ru = 'СЭДО ЕЦП: Обработка сообщений типа 12210 ""Отказ в возмещении выплат родителям детей инвалидов"".'");
	
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия          = "3.1.34.108";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор   = Новый УникальныйИдентификатор("d0526968-9d1d-11f0-8166-c84d4423fb75");
	Обработчик.Процедура       = "Документы.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.ПовторноОбработатьСообщенияПослеПереходаНаЕЦП";
	Обработчик.Комментарий     = НСтр("ru = 'СЭДО ЕЦП: Обработка документов ""Заявление в ФСС о возмещении выплат родителям детей-инвалидов"".'");
	
КонецПроцедуры

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

Функция АктуальнаяВерсия() Экспорт
	Возврат 1;
КонецФункции

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

// Обработка сообщений 12110.
//
// Параметры:
//   ПараметрыОбновления - Структура - Параметры отложенного обновления.
//
Процедура ПовторноОбработатьСообщения12110(ПараметрыОбновления = Неопределено) Экспорт
	СЭДОФСС.ПовторноОбработатьВходящиеСообщенияСЭДО(ПараметрыОбновления, 12110);
КонецПроцедуры

// Обработка сообщений 12210.
//
// Параметры:
//   ПараметрыОбновления - Структура - Параметры отложенного обновления.
//
Процедура ПовторноОбработатьСообщения12210(ПараметрыОбновления = Неопределено) Экспорт
	СЭДОФСС.ПовторноОбработатьВходящиеСообщенияСЭДО(ПараметрыОбновления, 12210);
КонецПроцедуры

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

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

#Область СЭДО

Функция ТекстXML(Документ) Экспорт
	Если ТипСообщения(Документ) = 120 Тогда
		Возврат ТекстXML_120(Документ);
	ИначеЕсли ТипСообщения(Документ) = 12010 Тогда
		Возврат ТекстXML_12010(Документ);
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

Функция ТекстXML_120(Документ) Экспорт
	// Пример:
	//<?xml version="1.0" encoding="UTF-8"?>
	//<n1:disabilityChildrenRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.fss.ru/integration/types/pvso/disabilitychildren/v01" software="a" version_software="a" author="a" phone="a" email="--@--.AA" xsi:schemaLocation="http://www.fss.ru/integration/types/pvso/disabilitychildren/v01 disabilityChildrenStatement.xsd">
	//	<n1:batch_no>D_5205004739_2024_06_21_0001</n1:batch_no>
	//	<n1:insurerInfo>
	//		<n1:regNum>5205004739</n1:regNum>
	//		<n1:emplKPP>526001001</n1:emplKPP>
	//		<n1:emplINN>5260084890</n1:emplINN>
	//		<n1:refNumber>a</n1:refNumber>
	//		<n1:Empl_Flag>true</n1:Empl_Flag>
	//		<n1:bankInfo>
	//			<n1:bik>042202603</n1:bik>
	//			<n1:accountNum>40817810642000779364</n1:accountNum>
	//		</n1:bankInfo>
	//	</n1:insurerInfo>
	//	<n1:refundSum>
	//		<n1:totalSum>5000</n1:totalSum>
	//		<n1:sumForNonBudgetFunds>5000</n1:sumForNonBudgetFunds>
	//		<n1:sumForAdditionalDays>0</n1:sumForAdditionalDays>
	//	</n1:refundSum>
	//	<n1:numberRecipients>0</n1:numberRecipients>
	//	<n1:certifiedCopiesOrders>1</n1:certifiedCopiesOrders>
	//</n1:disabilityChildrenRequest>
	
	ПрограммаНаименование = Лев(РегламентированнаяОтчетность.НазваниеПрограммы(), 255);
	ПрограммаВерсия = Лев(Метаданные.Версия, 15);
	НомерСтрахователяФСС = УчетПособийСоциальногоСтрахованияКлиентСервер.РегистрационныйНомерДляОбменаФСС(Документ);
	ПредставлениеТелефона = КонтактнаяИнформацияБЗК.ПредставлениеТелефона(Документ.ТелефонСоставителя);
	ТаблицаСтрок = Документ.Оплаты.Выгрузить();
	ДобавитьКолонкиНаличияДней(ТаблицаСтрок);
	Для Каждого СтрокаТаблицы Из ТаблицаСтрок Цикл
		ЗаполнитьФлажкиНаличияДней(СтрокаТаблицы);
	КонецЦикла;
	ВсегоПособий = ТаблицаСтрок.Итог("СуммаПособия");
	ВсегоВзносов = ТаблицаСтрок.Итог("СуммаВзносов");
	МассивСотрудников = КоллекцииБЗК.УникальныеЗначенияКолонки(ТаблицаСтрок, "Сотрудник");
	КоллекцииБЗК.УдалитьПустыеЗначенияМассива(МассивСотрудников);
	КоличествоПолучателей = МассивСотрудников.Количество();
	ЛистовПриказов = ТаблицаСтрок.Итог("КоличествоСтраниц");
	
	МенеджерXML = Обработки.ПостроительXML.Создать();
	МенеджерXML.ФорматДат = "ДФ=yyyy-MM-dd";
	
	// В корне 1 элемент: Структура для передачи перечня уведомлений о прекращении пособия по уходу.
	КореньXML = МенеджерXML.ДобавитьУзел(МенеджерXML.ДеревоXML, "disabilityChildrenRequest");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "", "http://www.fss.ru/integration/types/pvso/disabilitychildren/v01");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "xsi", "http://www.w3.org/2001/XMLSchema-instance");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "person", "http://www.fss.ru/integration/types/person/v02");
	
	МенеджерXML.ДобавитьАтрибут(КореньXML, "software",         ПрограммаНаименование,                      Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "version_software", ПрограммаВерсия,                            Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "author",           Документ.СоставительФИО,                    Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "phone",            ПредставлениеТелефона,                      Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "email",            Документ.АдресЭлектроннойПочтыОрганизации,  Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "emplRegNo",        НомерСтрахователяФСС,                       Истина);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "regNumSFR",        Документ.РегистрационныйНомерСФР,           Истина);
	
	// Сведения о документе.
	МенеджерXML.ДобавитьУзел(КореньXML, "batch_no", Документ.ИдентификаторРеестра);
	Если Документ.Перерасчет Тогда
		МенеджерXML.ДобавитьУзел(КореньXML, "changeRecalcFlag", Документ.Перерасчет);
		МенеджерXML.ДобавитьУзел(КореньXML, "prim_batch_no", Документ.ИдентификаторПервичногоРеестра);
		МенеджерXML.ДобавитьУзел(КореньXML, "recalc_reason", 1);
	КонецЕсли;
	
	// Сведения о страхователе.
	СтраховательXML = МенеджерXML.ДобавитьУзел(КореньXML, "insurerInfo");
	Если ЗначениеЗаполнено(Документ.РегистрационныйНомерСФР) Тогда
		МенеджерXML.ДобавитьУзел(СтраховательXML, "regNumSFR", Документ.РегистрационныйНомерСФР);
	Иначе
		МенеджерXML.ДобавитьУзел(СтраховательXML, "regNum", НомерСтрахователяФСС);
	КонецЕсли;
	МенеджерXML.ДобавитьУзел(СтраховательXML, "emplKPP",   Документ.КПП, Ложь, Истина);
	МенеджерXML.ДобавитьУзел(СтраховательXML, "emplINN",   Документ.ИНН);
	МенеджерXML.ДобавитьУзел(СтраховательXML, "refNumber", Документ.КодПодчиненностиФСС);
	МенеджерXML.ДобавитьУзел(СтраховательXML, "Empl_Flag", Документ.ОсновноеМестоРаботы);
	
	// Банковские реквизиты.
	БанкXML = МенеджерXML.ДобавитьУзел(СтраховательXML, "bankInfo");
	МенеджерXML.ДобавитьУзел(БанкXML, "bik", Документ.БИКБанка);
	МенеджерXML.ДобавитьУзел(БанкXML, "accountNum", Документ.НомерСчета, Истина, Ложь);
	МенеджерXML.ДобавитьУзел(БанкXML, "accountNumInFederalExchequer", Документ.НомерЛицевогоСчета, Истина, Ложь);
	МенеджерXML.ДобавитьУзел(БанкXML, "kbk", Документ.КБК, Истина, Ложь);
	
	// Сумма возмещения расходов.
	СуммаXML = МенеджерXML.ДобавитьУзел(КореньXML, "refundSum");
	МенеджерXML.ДобавитьУзел(СуммаXML, "totalSum", ВсегоПособий + ВсегоВзносов);
	МенеджерXML.ДобавитьУзел(СуммаXML, "sumForNonBudgetFunds", ВсегоВзносов);
	МенеджерXML.ДобавитьУзел(СуммаXML, "sumForAdditionalDays", ВсегоПособий);
	
	// Количество.
	МенеджерXML.ДобавитьУзел(КореньXML, "numberRecipients",      КоличествоПолучателей, Истина, Ложь);
	МенеджерXML.ДобавитьУзел(КореньXML, "certifiedCopiesOrders", ЛистовПриказов, Истина, Ложь);
	
	// Вывод строк по сотрудникам.
	Если Не Документ.Перерасчет Тогда
		ВыгрузитьСтрокиПоСотрудникам(120, МенеджерXML, КореньXML, ТаблицаСтрок);
	КонецЕсли;
	
	МенеджерXML.ДобавитьУзел(КореньXML, "addInfo", Документ.Примечание, Истина, Ложь);
	
	МенеджерXML.НачатьЗаписьВСтрокуXML(Истина, "UTF-8");
	Возврат МенеджерXML.СтрокаXML();
КонецФункции

Функция ТекстXML_12010(Документ) Экспорт
	// Пример:
	//<?xml version="1.0" encoding="UTF-8"?>
	//<n1:disabilityChildrenStatement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	//                                xmlns:n1="urn:ru:ecp:integration:wozm:refund:disabilitychildren:sttmnt:v3.0"
	//                                xmlns:n2="urn:ru:ecp:integration:types:person:v3.0"
	//                                specVersion="3.0.0"
	//                                software="arm"
	//                                version_software="10"
	//                                author="Соколов Виктор Петрович"
	//                                phone="777-777"
	//                                email="test@mail.ru"
	//                                xsi:schemaLocation="urn:ru:ecp:integration:wozm:refund:disabilitychildren:sttmnt:v3.0 DisabilityChildrenStatement.xsd">
	//	<n1:batch_no>D_5205004739_2024_07_18_0001</n1:batch_no>
	//	<n1:changeRecalcFlag>false</n1:changeRecalcFlag>
	//	<n1:insurerInfo>
	//		<n1:regNum>5205004739</n1:regNum>
	//		<n1:emplKPP>526001001</n1:emplKPP>
	//		<n1:emplINN>5260084890</n1:emplINN>
	//		<n1:Empl_Flag>true</n1:Empl_Flag>
	//		<n1:bankInfo>
	//			<n1:bik>041403838</n1:bik>
	//			<n1:accountNum>40702810200130000018</n1:accountNum>
	//			<n1:accountNumInFederalExchequer>4230281022008</n1:accountNumInFederalExchequer>
	//			<n1:kbk>11111111112222222222</n1:kbk>
	//		</n1:bankInfo>
	//	</n1:insurerInfo>
	//	<n1:refundSum>
	//		<n1:totalSum>10000.44</n1:totalSum>
	//		<n1:sumForNonBudgetFunds>5000.11</n1:sumForNonBudgetFunds>
	//		<n1:sumForAdditionalDays>5000.33</n1:sumForAdditionalDays>
	//	</n1:refundSum>
	//	<n1:numberRecipients>1</n1:numberRecipients>
	//	<n1:certifiedCopiesOrders>5</n1:certifiedCopiesOrders>
	//	<n1:receiversRow>
	//		<n1:parentInfo>
	//			<n1:fullName>
	//				<n2:firstName>Алла</n2:firstName>
	//				<n2:lastName>Тарасова</n2:lastName>
	//				<n2:middleName>Ивановна</n2:middleName>
	//			</n1:fullName>
	//			<n1:snils>43084477684</n1:snils>
	//			<n1:childRelType>2</n1:childRelType>
	//		</n1:parentInfo>
	//		<n1:childInfo>
	//			<n1:fullName>
	//				<n2:firstName>Сергей</n2:firstName>
	//				<n2:lastName>Тарасов</n2:lastName>
	//				<n2:middleName>Иванович</n2:middleName>
	//			</n1:fullName>
	//			<n1:snils>42869140104</n1:snils>
	//			<n1:birthDate>2024-06-20</n1:birthDate>
	//			<n1:certificateOfDisability>
	//				<n1:series>Сер11</n1:series>
	//				<n1:number>Ном001</n1:number>
	//				<n1:certificateDate>2023-02-12</n1:certificateDate>
	//				<n1:disabilityBeginDate>2023-01-01</n1:disabilityBeginDate>
	//				<n1:disabilityEndDate>
	//					<n1:endDate>2025-11-21</n1:endDate>
	//				</n1:disabilityEndDate>
	//			</n1:certificateOfDisability>
	//		</n1:childInfo>
	//		<n1:ORD>
	//			<n1:number>N-1</n1:number>
	//			<n1:date>2024-02-01</n1:date>
	//		</n1:ORD>
	//		<n1:ORD>
	//			<n1:number>N-2</n1:number>
	//			<n1:date>2024-04-01</n1:date>
	//		</n1:ORD>
	//		<n1:periods>
	//			<n1:additionalPeriods>
	//				<n1:periodAndCalculationData>
	//					<n1:year>2024</n1:year>
	//					<n1:month>1</n1:month>
	//					<n1:daysAmount>4</n1:daysAmount>
	//					<n1:dailyAverageSal>2000.11</n1:dailyAverageSal>
	//				</n1:periodAndCalculationData>
	//				<n1:periodAndCalculationData>
	//					<n1:year>2024</n1:year>
	//					<n1:month>2</n1:month>
	//					<n1:daysAmount>4</n1:daysAmount>
	//					<n1:dailyAverageSal>2000.12</n1:dailyAverageSal>
	//				</n1:periodAndCalculationData>
	//				<n1:providedDays>8</n1:providedDays>
	//				<n1:providedTotalHour>24</n1:providedTotalHour>
	//			</n1:additionalPeriods>
	//			<n1:accumulatedPeriods>
	//				<n1:accumulatedPeriodData>
	//					<n1:year>2023</n1:year>
	//					<n1:month>1</n1:month>
	//					<n1:daysAmount>4</n1:daysAmount>
	//				</n1:accumulatedPeriodData>
	//				<n1:accumulatedPeriodData>
	//					<n1:year>2023</n1:year>
	//					<n1:month>2</n1:month>
	//					<n1:daysAmount>1</n1:daysAmount>
	//				</n1:accumulatedPeriodData>
	//				<n1:accumulatedDays>5</n1:accumulatedDays>
	//				<n1:accumulatedTotalHour>16</n1:accumulatedTotalHour>
	//				<n1:accumulatedProvidedPeriodData>
	//					<n1:year>2024</n1:year>
	//					<n1:month>3</n1:month>
	//					<n1:daysAmount>2</n1:daysAmount>
	//					<n1:dailyAverageSal>2000.55</n1:dailyAverageSal>
	//				</n1:accumulatedProvidedPeriodData>
	//				<n1:accumulatedProvidedPeriodData>
	//					<n1:year>2024</n1:year>
	//					<n1:month>4</n1:month>
	//					<n1:daysAmount>3</n1:daysAmount>
	//					<n1:dailyAverageSal>200.66</n1:dailyAverageSal>
	//				</n1:accumulatedProvidedPeriodData>
	//				<n1:accumulatedProvidedDays>5</n1:accumulatedProvidedDays>
	//				<n1:accumulatedProvidedTotalHour>32</n1:accumulatedProvidedTotalHour>
	//			</n1:accumulatedPeriods>
	//		</n1:periods>
	//	</n1:receiversRow>
	//	<n1:addInfo>Дополнительная тестовая информация</n1:addInfo>
	//</n1:disabilityChildrenStatement>
	
	ПрограммаНаименование = Лев(РегламентированнаяОтчетность.НазваниеПрограммы(), 255);
	ПрограммаВерсия = Лев(Метаданные.Версия, 15);
	НомерСтрахователяФСС = УчетПособийСоциальногоСтрахованияКлиентСервер.РегистрационныйНомерДляОбменаФСС(Документ);
	ПредставлениеТелефона = КонтактнаяИнформацияБЗК.ПредставлениеТелефона(Документ.ТелефонСоставителя, 30);
	ТаблицаСтрок = Документ.Оплаты.Выгрузить();
	ДобавитьКолонкиНаличияДней(ТаблицаСтрок);
	Для Каждого СтрокаТаблицы Из ТаблицаСтрок Цикл
		ЗаполнитьФлажкиНаличияДней(СтрокаТаблицы);
	КонецЦикла;
	ВсегоПособий = ТаблицаСтрок.Итог("СуммаПособия");
	ВсегоВзносов = ТаблицаСтрок.Итог("СуммаВзносов");
	МассивСотрудников = КоллекцииБЗК.УникальныеЗначенияКолонки(ТаблицаСтрок, "Сотрудник");
	КоллекцииБЗК.УдалитьПустыеЗначенияМассива(МассивСотрудников);
	КоличествоПолучателей = МассивСотрудников.Количество();
	ЛистовПриказов = ТаблицаСтрок.Итог("КоличествоСтраниц");
	
	МенеджерXML = Обработки.ПостроительXML.Создать();
	МенеджерXML.ФорматДат = "ДФ=yyyy-MM-dd";
	
	// В корне 1 элемент: Структура для передачи перечня уведомлений о прекращении пособия по уходу.
	КореньXML = МенеджерXML.ДобавитьУзел(МенеджерXML.ДеревоXML, "disabilityChildrenStatement");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "", "urn:ru:ecp:integration:wozm:refund:disabilitychildren:sttmnt:v3.0");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "xsi", "http://www.w3.org/2001/XMLSchema-instance");
	МенеджерXML.ДобавитьПространствоИмен(КореньXML, "person", "urn:ru:ecp:integration:types:person:v3.0");
	
	МенеджерXML.ДобавитьАтрибут(КореньXML, "specVersion",      "3.0",                                      Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "software",         ПрограммаНаименование,                      Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "version_software", ПрограммаВерсия,                            Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "author",           Документ.СоставительФИО,                    Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "phone",            ПредставлениеТелефона,                      Ложь);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "email",            Документ.АдресЭлектроннойПочтыОрганизации,  Истина);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "emplRegNo",        НомерСтрахователяФСС,                       Истина);
	МенеджерXML.ДобавитьАтрибут(КореньXML, "regNumSFR",        Документ.РегистрационныйНомерСФР,           Истина);
	
	// Сведения о документе.
	МенеджерXML.ДобавитьУзел(КореньXML, "batch_no", Документ.ИдентификаторРеестра);
	Если Документ.Перерасчет Тогда
		МенеджерXML.ДобавитьУзел(КореньXML, "changeRecalcFlag", Документ.Перерасчет);
		МенеджерXML.ДобавитьУзел(КореньXML, "prim_batch_no", Документ.ИдентификаторПервичногоРеестра);
		МенеджерXML.ДобавитьУзел(КореньXML, "recalc_reason", 1);
	КонецЕсли;
	
	// Сведения о страхователе.
	СтраховательXML = МенеджерXML.ДобавитьУзел(КореньXML, "insurerInfo");
	Если ЗначениеЗаполнено(Документ.РегистрационныйНомерСФР) Тогда
		МенеджерXML.ДобавитьУзел(СтраховательXML, "regNumSFR", Документ.РегистрационныйНомерСФР);
	Иначе
		МенеджерXML.ДобавитьУзел(СтраховательXML, "regNum", НомерСтрахователяФСС);
	КонецЕсли;
	МенеджерXML.ДобавитьУзел(СтраховательXML, "emplKPP",   Документ.КПП, Истина, Истина);
	МенеджерXML.ДобавитьУзел(СтраховательXML, "emplINN",   Документ.ИНН);
	МенеджерXML.ДобавитьУзел(СтраховательXML, "Empl_Flag", Документ.ОсновноеМестоРаботы);
	
	// Банковские реквизиты.
	БанкXML = МенеджерXML.ДобавитьУзел(СтраховательXML, "bankInfo");
	МенеджерXML.ДобавитьУзел(БанкXML, "bik", Документ.БИКБанка);
	МенеджерXML.ДобавитьУзел(БанкXML, "accountNum", Документ.НомерСчета);
	МенеджерXML.ДобавитьУзел(БанкXML, "accountNumInFederalExchequer", Документ.НомерЛицевогоСчета, Истина, Ложь);
	МенеджерXML.ДобавитьУзел(БанкXML, "kbk", Документ.КБК, Истина, Ложь);
	
	// Сумма возмещения расходов.
	СуммаXML = МенеджерXML.ДобавитьУзел(КореньXML, "refundSum");
	МенеджерXML.ДобавитьУзел(СуммаXML, "totalSum", ВсегоПособий + ВсегоВзносов);
	МенеджерXML.ДобавитьУзел(СуммаXML, "sumForNonBudgetFunds", ВсегоВзносов);
	МенеджерXML.ДобавитьУзел(СуммаXML, "sumForAdditionalDays", ВсегоПособий);
	
	// Количество.
	МенеджерXML.ДобавитьУзел(КореньXML, "numberRecipients",      КоличествоПолучателей, Истина, Ложь);
	МенеджерXML.ДобавитьУзел(КореньXML, "certifiedCopiesOrders", ЛистовПриказов, Истина, Ложь);
	
	// Вывод строк по сотрудникам.
	Если Не Документ.Перерасчет Тогда
		ВыгрузитьСтрокиПоСотрудникам(12010, МенеджерXML, КореньXML, ТаблицаСтрок);
	КонецЕсли;
	
	МенеджерXML.ДобавитьУзел(КореньXML, "addInfo", Документ.Примечание, Истина, Ложь);
	
	МенеджерXML.НачатьЗаписьВСтрокуXML(Истина, "UTF-8");
	Возврат МенеджерXML.СтрокаXML();
КонецФункции

Функция ТипСообщения(Документ = Неопределено) Экспорт
	Возврат ?(Документ = Неопределено Или Документ.ТипСообщения = 0, 120, Документ.ТипСообщения);
КонецФункции

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

Процедура ПриПодготовкеВыбранныхДокументовКОтправке(МассивСсылок, ТаблицаОтправки) Экспорт
	// Действие не требуется.
КонецПроцедуры

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

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

Функция ЗаголовокФормыОтправкиСведенийВФСС() Экспорт
	Возврат НСтр("ru = 'Отправка заявлений о возмещении выплат родителям детей-инвалидов через СЭДО'");
КонецФункции

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

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

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

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

// Возвращает строку - краткое имя актуального макета печатной формы.
Функция ИмяАктуальногоМакета() Экспорт
	Если ТекущаяДатаСеанса() > ДатаФорм2024() Тогда
		Возврат "ПФ_MXL_ДополнительныеДниОтпуска_2024";
	ИначеЕсли ТекущаяДатаСеанса() > ДатаФорм2022() Тогда
		Возврат "ПФ_MXL_ДополнительныеДниОтпуска_2022";
	Иначе
		Возврат "ЗаявлениеВФССДополнительныеДниОтпуска_2021";
	КонецЕсли;
КонецФункции

// Возвращает дату начала действия печатной формы 2022 г.
Функция ДатаФорм2022() Экспорт
	Возврат ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ФормаВозмещенияВыплатРодителямДетейИнвалидов2022");
КонецФункции

// Возвращает дату начала действия печатной формы 2024 г.
Функция ДатаФорм2024() Экспорт
	Возврат '20240426';
КонецФункции

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

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

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

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

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

Функция ФиксируемыеТаблицы()
	Возврат Новый Структура("Оплаты", СтрРазделить("ДокументОснование,Сотрудник,Месяц", ","));
КонецФункции

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

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

#Область ОбновлениеИнформационнойБазы

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

Функция РеквизитШапкиЗаполненИНеЗафкисирован(ДокументОбъект, ИмяРеквизита)
	Возврат ЗначениеЗаполнено(ДокументОбъект[ИмяРеквизита])
		И Не ФиксацияВторичныхДанныхВДокументах.РеквизитШапкиЗафиксирован(ДокументОбъект, ИмяРеквизита);
КонецФункции

Функция РеквизитШапкиНеЗаполненИНеЗафкисирован(ДокументОбъект, ИмяРеквизита)
	Возврат Не ЗначениеЗаполнено(ДокументОбъект[ИмяРеквизита])
		И Не ФиксацияВторичныхДанныхВДокументах.РеквизитШапкиЗафиксирован(ДокументОбъект, ИмяРеквизита);
КонецФункции

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

#Область ТекстXML

Функция УбратьПробелы(Строка, УбратьТире = Истина)
	Возврат СтроковыеФункцииБЗККлиентСервер.УбратьПробелы(Строка, УбратьТире);
КонецФункции

Процедура ВыгрузитьСтрокиПоСотрудникам(ТипСообщения, МенеджерXML, КореньXML, ТаблицаСтрок)
	ИменаПолейШапки = "СотрудникФамилия, СотрудникИмя, СотрудникОтчество, СотрудникСНИЛС, Статус,
		|РебенокФамилия, РебенокИмя, РебенокОтчество, РебенокСНИЛС, РебенокДатаРождения";
	ТаблицаСотрудников = ТаблицаСтрок.Скопировать(, ИменаПолейШапки);
	ТаблицаСотрудников.Свернуть(ИменаПолейШапки);
	ФильтрПоДаннымШапки = Новый Структура(ИменаПолейШапки);
	Для Каждого ДанныеШапкиПоСотруднику Из ТаблицаСотрудников Цикл
		ЗаполнитьЗначенияСвойств(ФильтрПоДаннымШапки, ДанныеШапкиПоСотруднику);
		ТаблицаСтрокПоСотруднику = ТаблицаСтрок.Скопировать(ФильтрПоДаннымШапки);
		ТаблицыПоСотруднику = ВложенныеТаблицыПоСотруднику(ТаблицаСтрокПоСотруднику);
		
		УзелПолучатель = МенеджерXML.ДобавитьУзел(КореньXML, "receiversRow");
		
		// Сведения о родителе (опекуне, попечителе).
		УзелСотрудник = МенеджерXML.ДобавитьУзел(УзелПолучатель, "parentInfo");
		УзелФИО = МенеджерXML.ДобавитьУзел(УзелСотрудник, "fullName");
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:firstName",  ДанныеШапкиПоСотруднику.СотрудникИмя);
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:lastName",   ДанныеШапкиПоСотруднику.СотрудникФамилия);
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:middleName", ДанныеШапкиПоСотруднику.СотрудникОтчество, Истина);
		МенеджерXML.ДобавитьУзел(УзелСотрудник, "snils", УбратьПробелы(ДанныеШапкиПоСотруднику.СотрудникСНИЛС));
		МенеджерXML.ДобавитьУзел(УзелСотрудник, "childRelType", ДанныеШапкиПоСотруднику.Статус);
		
		// Сведения о ребенке.
		УзелРебенок = МенеджерXML.ДобавитьУзел(УзелПолучатель, "childInfo");
		УзелФИО = МенеджерXML.ДобавитьУзел(УзелРебенок, "fullName");
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:firstName",  ДанныеШапкиПоСотруднику.РебенокИмя);
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:lastName",   ДанныеШапкиПоСотруднику.РебенокФамилия);
		МенеджерXML.ДобавитьУзел(УзелФИО, "person:middleName", ДанныеШапкиПоСотруднику.РебенокОтчество, Истина);
		МенеджерXML.ДобавитьУзел(УзелРебенок, "snils", УбратьПробелы(ДанныеШапкиПоСотруднику.РебенокСНИЛС));
		МенеджерXML.ДобавитьУзел(УзелРебенок, "birthDate", ДанныеШапкиПоСотруднику.РебенокДатаРождения);
		
		// Сведения о справке, подтверждающей инвалидность.
		Для Каждого СтрокаСправки Из ТаблицыПоСотруднику.Справки Цикл
			УзелСправка = МенеджерXML.ДобавитьУзел(УзелРебенок, "certificateOfDisability");
			МенеджерXML.ДобавитьУзел(УзелСправка, "series", СтрокаСправки.СправкаСерия);
			МенеджерXML.ДобавитьУзел(УзелСправка, "number", СтрокаСправки.СправкаНомер);
			МенеджерXML.ДобавитьУзел(УзелСправка, "certificateDate", СтрокаСправки.СправкаДатаВыдачи);
			МенеджерXML.ДобавитьУзел(УзелСправка, "disabilityBeginDate", СтрокаСправки.СправкаДатаУстановления);
			УзелДатаОкончания = МенеджерXML.ДобавитьУзел(УзелСправка, "disabilityEndDate");
			Если Не ЗначениеЗаполнено(СтрокаСправки.СправкаДатаОкончания) Тогда
				Если ТипСообщения = 120 Тогда
					МенеджерXML.ДобавитьУзел(УзелДатаОкончания, "notLimited", 1);
				Иначе
					МенеджерXML.ДобавитьУзел(УзелДатаОкончания, "notLimited", Истина);
				КонецЕсли;
			Иначе
				МенеджерXML.ДобавитьУзел(УзелДатаОкончания, "endDate", СтрокаСправки.СправкаДатаОкончания);
			КонецЕсли;
		КонецЦикла;
		
		// Таблица приказов о предоставлении дополнительных выходных дней.
		Для Каждого СтрокаПриказа Из ТаблицыПоСотруднику.Приказы Цикл
			УзелПриказ = МенеджерXML.ДобавитьУзел(УзелПолучатель, "ORD");
			МенеджерXML.ДобавитьУзел(УзелПриказ, "number", СтрокаПриказа.ПриказНомер);
			МенеджерXML.ДобавитьУзел(УзелПриказ, "date", СтрокаПриказа.ПриказДата);
		КонецЦикла;
		
		// Таблицы дней.
		УзелПериоды = МенеджерXML.ДобавитьУзел(УзелПолучатель, "periods");
		
		// Таблица использованных дней за месяц.
		УзелПериодыЗаМесяц = МенеджерXML.ДобавитьУзел(УзелПериоды, "additionalPeriods", , Истина, Ложь);
		Для Каждого ВложеннаяСтрока Из ТаблицыПоСотруднику.ДниЗаМесяц Цикл
			УзелДниЗаМесяц = МенеджерXML.ДобавитьУзел(УзелПериодыЗаМесяц, "periodAndCalculationData");
			МенеджерXML.ДобавитьУзел(УзелДниЗаМесяц, "year", Год(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелДниЗаМесяц, "month", Месяц(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелДниЗаМесяц, "daysAmount", ВложеннаяСтрока.КоличествоДней);
			МенеджерXML.ДобавитьУзел(УзелДниЗаМесяц, "dailyAverageSal", ВложеннаяСтрока.СреднедневнойЗаработок);
		КонецЦикла;
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаМесяц, "providedDays", ТаблицыПоСотруднику.ДниЗаМесяц.Итог("КоличествоДней"));
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаМесяц, "providedTotalHour", ТаблицыПоСотруднику.ДниЗаМесяц.Итог("КоличествоЧасовЗаМесяц"));
		
		// Дни за год.
		УзелПериодыЗаГод = МенеджерXML.ДобавитьУзел(УзелПериоды, "accumulatedPeriods", , Истина, Ложь);
		
		// Таблица накопленных (неиспользованных) дней за месяц.
		Накопленные = ТаблицыПоСотруднику.Накопленные;
		Для Каждого ВложеннаяСтрока Из Накопленные Цикл
			УзелНакопленныеДни = МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedPeriodData");
			МенеджерXML.ДобавитьУзел(УзелНакопленныеДни, "year", Год(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелНакопленныеДни, "month", Месяц(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелНакопленныеДни, "daysAmount", ВложеннаяСтрока.НакопленоДнейЗаМесяц);
		КонецЦикла;
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedDays", Накопленные.Итог("НакопленоДнейЗаМесяц"));
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedTotalHour", Накопленные.Итог("НакопленоЧасовЗаМесяц"));
		
		// Таблица использованных дней за год.
		ДниЗаГод = ТаблицыПоСотруднику.ДниЗаГод;
		Для Каждого ВложеннаяСтрока Из ДниЗаГод Цикл
			УзелДниЗаГод = МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedProvidedPeriodData");
			МенеджерXML.ДобавитьУзел(УзелДниЗаГод, "year", Год(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелДниЗаГод, "month", Месяц(ВложеннаяСтрока.Месяц));
			МенеджерXML.ДобавитьУзел(УзелДниЗаГод, "daysAmount", ВложеннаяСтрока.КоличествоДнейЗаГод);
			МенеджерXML.ДобавитьУзел(УзелДниЗаГод, "dailyAverageSal", ВложеннаяСтрока.СреднедневнойЗаработокЗаГод);
		КонецЦикла;
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedProvidedDays", ДниЗаГод.Итог("КоличествоДнейЗаГод"));
		МенеджерXML.ДобавитьУзел(УзелПериодыЗаГод, "accumulatedProvidedTotalHour", ДниЗаГод.Итог("КоличествоЧасовЗаГод"));
	КонецЦикла;
КонецПроцедуры

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

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

Функция ЗаполнитьТекстОшибкиПроверкиЗаполнения(СтрокаОтправки, ТекстИсключенияПриПроведении)
	СтрокаОтправки.Ошибки = ПолучитьСообщенияПользователю(Истина);
	
	Количество = СтрокаОтправки.Ошибки.Количество();
	Если Количество = 1 Тогда
		СтрокаОтправки.Результат = СтрокаОтправки.Ошибки[0].Текст;
	ИначеЕсли Количество > 1 Тогда
		СтрокаОтправки.Результат = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
			НСтр("ru = ';%1 ошибка заполнения;;%1 ошибки заполнения;%1 ошибок заполнения;'"),
			Количество);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ТекстИсключенияПриПроведении) Тогда
		Если СтрокаОтправки.Результат = "" Тогда
			СтрокаОтправки.Результат = СтрШаблон(НСтр("ru = 'Ошибка проведения: %1'"), ТекстИсключенияПриПроведении);
		Иначе
			СтрокаОтправки.Результат = СтрокаОтправки.Результат + ";" + Символы.ПС + СтрШаблон(НСтр("ru = 'И ошибка проведения: %1'"), ТекстИсключенияПриПроведении);
		КонецЕсли;
	КонецЕсли;
КонецФункции

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

#Область Печать

Функция ТабличныйДокументДополнительныеДниОтпуска(МассивСсылок, ОбъектыПечати)
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
	Запрос.УстановитьПараметр("ДатаФорм2017", ПрямыеВыплатыПособийСоциальногоСтрахования.ДатаВступленияВСилуФорм2017Года());
	Запрос.УстановитьПараметр("ДатаФорм2021", ПрямыеВыплатыПособийСоциальногоСтрахования.ДатаВступленияВСилуФорм2021Года());
	Запрос.УстановитьПараметр("ДатаФорм2022", ДатаФорм2022());
	Запрос.УстановитьПараметр("ДатаФорм2024", ДатаФорм2024());
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	СоздатьВТКадровыхДанных(Запрос);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Шапка.Ссылка КАК Ссылка,
	|	Шапка.Номер КАК Номер,
	|	Шапка.Дата КАК Дата,
	|	ВЫБОР
	|		КОГДА Шапка.Дата < &ДатаФорм2017
	|			ТОГДА ""ЗаявлениеВФССДополнительныеДниОтпуска_2012""
	|		КОГДА Шапка.Дата < &ДатаФорм2021
	|			ТОГДА ""ЗаявлениеВФССДополнительныеДниОтпуска_2017""
	|		КОГДА Шапка.Дата < &ДатаФорм2022
	|			ТОГДА ""ЗаявлениеВФССДополнительныеДниОтпуска_2021""
	|		КОГДА Шапка.Дата < &ДатаФорм2024
	|			ТОГДА ""ПФ_MXL_ДополнительныеДниОтпуска_2022""
	|		ИНАЧЕ ""ПФ_MXL_ДополнительныеДниОтпуска_2024""
	|	КОНЕЦ КАК ИмяМакета,
	|	Шапка.Проведен КАК Проведен,
	|	Шапка.Организация КАК Организация,
	|	Шапка.НаименованиеТерриториальногоОрганаФСС КАК НаименованиеТерриториальногоОрганаФСС,
	|	Шапка.РегистрационныйНомерСФР КАК РегистрационныйНомерСФР,
	|	Шапка.РегномерСФРГоловнойОрганизации КАК РегномерСФРГоловнойОрганизации,
	|	Шапка.РегистрационныйНомерФСС КАК РегистрационныйНомерФСС,
	|	Шапка.ДополнительныйКодФСС КАК ДополнительныйКодФСС,
	|	Шапка.КодПодчиненностиФСС КАК КодПодчиненностиФСС,
	|	Шапка.СтраховательНаименование КАК СтраховательНаименование,
	|	Шапка.ИНН КАК ИНН,
	|	Шапка.КПП КАК КПП,
	|	Шапка.Руководитель КАК Руководитель,
	|	ЕСТЬNULL(ВТКадровыеДанныеРуководителя.ФИОПолные, """") КАК РуководительФИО,
	|	Шапка.ДолжностьРуководителя КАК ДолжностьРуководителя,
	|	Шапка.ПредставительСФР КАК ПредставительСФР,
	|	ЕСТЬNULL(ВТКадровыеДанныеПредставителя.ФИОПолные, """") КАК ПредставительФИО,
	|	Шапка.ДолжностьПредставителяСФР КАК ДолжностьПредставителяСФР,
	|	Шапка.АдресОрганизации КАК АдресОрганизации,
	|	Шапка.НаименованиеБанка КАК НаименованиеБанка,
	|	Шапка.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
	|	Шапка.КБК КАК КБК,
	|	Шапка.ДополнительныеСведенияДляПеречисления КАК ДополнительныеСведенияДляПеречисления,
	|	Шапка.НомерСчета КАК НомерСчета,
	|	Шапка.БИКБанка КАК БИКБанка,
	|	Шапка.СтатусДокумента КАК СтатусДокумента,
	|	Шапка.ТелефонСоставителя КАК ТелефонСоставителя,
	|	Шапка.АдресЭлектроннойПочтыОрганизации КАК АдресЭлектроннойПочтыОрганизации,
	|	Шапка.ТелефонСоставителя КАК СтраховательТелефон,
	|	Шапка.АдресЭлектроннойПочтыОрганизации КАК СтраховательПочта,
	|	Шапка.ЗаявлениеСоставил КАК ЗаявлениеСоставил,
	|	ЕСТЬNULL(ТЧОплаты.НомерСтроки, 0) КАК НомерСтроки,
	|	ЕСТЬNULL(ТЧОплаты.Сотрудник, НЕОПРЕДЕЛЕНО) КАК Сотрудник,
	|	ЕСТЬNULL(ТЧОплаты.СотрудникФамилия, """") КАК СотрудникФамилия,
	|	ЕСТЬNULL(ТЧОплаты.СотрудникИмя, """") КАК СотрудникИмя,
	|	ЕСТЬNULL(ТЧОплаты.СотрудникОтчество, """") КАК СотрудникОтчество,
	|	ЕСТЬNULL(ТЧОплаты.СотрудникСНИЛС, """") КАК СотрудникСНИЛС,
	|	ЕСТЬNULL(ТЧОплаты.РебенокФамилия, """") КАК РебенокФамилия,
	|	ЕСТЬNULL(ТЧОплаты.РебенокИмя, """") КАК РебенокИмя,
	|	ЕСТЬNULL(ТЧОплаты.РебенокОтчество, """") КАК РебенокОтчество,
	|	ЕСТЬNULL(ТЧОплаты.РебенокСНИЛС, """") КАК РебенокСНИЛС,
	|	ЕСТЬNULL(ТЧОплаты.РебенокДатаРождения, """") КАК РебенокДатаРождения,
	|	ЕСТЬNULL(ТЧОплаты.Статус, НЕОПРЕДЕЛЕНО) КАК Статус,
	|	ЕСТЬNULL(ТЧОплаты.СреднедневнойЗаработок, 0) КАК СреднедневнойЗаработок,
	|	ЕСТЬNULL(ТЧОплаты.ДокументОснование, НЕОПРЕДЕЛЕНО) КАК ДокументОснование,
	|	ЕСТЬNULL(ТЧОплаты.КоличествоСтраниц, 0) КАК КоличествоСтраниц,
	|	ЕСТЬNULL(ТЧОплаты.СуммаПособия, 0) КАК СуммаПособия,
	|	ЕСТЬNULL(ТЧОплаты.СуммаВзносов, 0) КАК СуммаВзносов,
	|	ЕСТЬNULL(ТЧОплаты.КоличествоДней, 0) КАК КоличествоДней,
	|	ЕСТЬNULL(ТЧОплаты.СправкаСерия, """") КАК СправкаСерия,
	|	ЕСТЬNULL(ТЧОплаты.СправкаНомер, """") КАК СправкаНомер,
	|	ЕСТЬNULL(ТЧОплаты.СправкаДатаВыдачи, ДАТАВРЕМЯ(1, 1, 1)) КАК СправкаДатаВыдачи,
	|	ЕСТЬNULL(ТЧОплаты.СправкаДатаОкончания, ДАТАВРЕМЯ(1, 1, 1)) КАК СправкаДатаОкончания,
	|	ЕСТЬNULL(ТЧОплаты.СправкаДатаУстановления, ДАТАВРЕМЯ(1, 1, 1)) КАК СправкаДатаУстановления,
	|	ЕСТЬNULL(ТЧОплаты.ПриказНомер, """") КАК ПриказНомер,
	|	ЕСТЬNULL(ТЧОплаты.ПриказДата, ДАТАВРЕМЯ(1, 1, 1)) КАК ПриказДата,
	|	ЕСТЬNULL(ТЧОплаты.КоличествоЧасовЗаМесяц, 0) КАК КоличествоЧасовЗаМесяц,
	|	ЕСТЬNULL(ТЧОплаты.НакопленоДнейЗаМесяц, 0) КАК НакопленоДнейЗаМесяц,
	|	ЕСТЬNULL(ТЧОплаты.НакопленоЧасовЗаМесяц, 0) КАК НакопленоЧасовЗаМесяц,
	|	ЕСТЬNULL(ТЧОплаты.КоличествоДнейЗаГод, 0) КАК КоличествоДнейЗаГод,
	|	ЕСТЬNULL(ТЧОплаты.КоличествоЧасовЗаГод, 0) КАК КоличествоЧасовЗаГод,
	|	ЕСТЬNULL(ТЧОплаты.СреднедневнойЗаработокЗаГод, 0) КАК СреднедневнойЗаработокЗаГод,
	|	ЕСТЬNULL(ТЧОплаты.Месяц, ДАТАВРЕМЯ(1, 1, 1)) КАК Месяц
	|ИЗ
	|	Документ.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов КАК Шапка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов.Оплаты КАК ТЧОплаты
	|		ПО Шапка.Ссылка = ТЧОплаты.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК ВТКадровыеДанныеРуководителя
	|		ПО Шапка.Руководитель = ВТКадровыеДанныеРуководителя.ФизическоеЛицо
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК ВТКадровыеДанныеПредставителя
	|		ПО Шапка.ПредставительСФР = ВТКадровыеДанныеПредставителя.ФизическоеЛицо
	|ГДЕ
	|	Шапка.Ссылка В(&МассивСсылок)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Дата,
	|	Ссылка,
	|	НомерСтроки";
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_ЗаявлениеВФССДополнительныеДниОтпуска";
	ТабличныйДокумент.ОриентацияСтраницы   = ОриентацияСтраницы.Портрет;
	ТабличныйДокумент.АвтоМасштаб          = Истина;
	УправлениеПечатьюБЗК.УстановитьОтступ(ТабличныйДокумент, 0, 5, 0, 5);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.СледующийПоЗначениюПоля("ИмяМакета") Цикл
		
		Если Выборка.ИмяМакета = "ЗаявлениеВФССДополнительныеДниОтпуска_2012" Тогда
			ВывестиЗаявлениеОВозмещении_2012(Выборка, ТабличныйДокумент, ОбъектыПечати);
		ИначеЕсли Выборка.ИмяМакета = "ЗаявлениеВФССДополнительныеДниОтпуска_2017" Тогда
			ВывестиЗаявлениеОВозмещении_2017(Выборка, ТабличныйДокумент, ОбъектыПечати);
		ИначеЕсли Выборка.ИмяМакета = "ЗаявлениеВФССДополнительныеДниОтпуска_2021" Тогда
			ВывестиЗаявлениеОВозмещении_2021(Выборка, ТабличныйДокумент, ОбъектыПечати);
		ИначеЕсли Выборка.ИмяМакета = "ПФ_MXL_ДополнительныеДниОтпуска_2022" Тогда
			ВывестиЗаявлениеОВозмещении_2022(Выборка, ТабличныйДокумент, ОбъектыПечати);
		ИначеЕсли Выборка.ИмяМакета = "ПФ_MXL_ДополнительныеДниОтпуска_2024" Тогда
			ВывестиЗаявлениеОВозмещении_2024(Выборка, ТабличныйДокумент, ОбъектыПечати);
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
КонецФункции

#Область ЗаявлениеВФССДополнительныеДниОтпуска_2012

Процедура ВывестиЗаявлениеОВозмещении_2012(Выборка, ТабличныйДокумент, ОбъектыПечати)
	Макет = Неопределено;
	ВыведеноСтрок = 0;
	ИтогоПособия = 0;
	ИтогоСреднедневнойЗаработок = 0;
	ИтогоКоличествоДней = 0;
	ИтогоВзносов = 0;
	ВсегоСтраниц = 0;
	КоличествоСтрокВМакете = 4;
	
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		Пока Выборка.Следующий() Цикл
			ВыведеноСтрок = (ВыведеноСтрок + 1) % КоличествоСтрокВМакете;
			НомерСтроки = ?(ВыведеноСтрок = 0, КоличествоСтрокВМакете, ВыведеноСтрок);
			
			Если ВыведеноСтрок = 1 Тогда
				Если Макет <> Неопределено Тогда
					ВывестиИтогиЗаявленияОВозмещении_2012(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ВсегоСтраниц);
					Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
						ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
					КонецЕсли;
					ТабличныйДокумент.Вывести(Макет);
				КонецЕсли;
				ИтогоПособия = 0;
				ИтогоВзносов = 0;
				ВсегоСтраниц = 0;
				ИтогоСреднедневнойЗаработок = 0;
				ИтогоКоличествоДней = 0;
				Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов." + Выборка.ИмяМакета);
				ВывестиШапкуИПодвалЗаявленияОВозмещении_2012(Макет, Выборка);
			КонецЕсли;
			
			ВывестиСтрокуЗаявленияОВозмещении_2012(Макет, Выборка, НомерСтроки);
			ИтогоСреднедневнойЗаработок = ИтогоСреднедневнойЗаработок + Выборка.СреднедневнойЗаработок;
			ИтогоКоличествоДней = ИтогоКоличествоДней + Выборка.КоличествоДней;
			ИтогоПособия = ИтогоПособия + Выборка.СуммаПособия;
			ИтогоВзносов = ИтогоВзносов + Выборка.СуммаВзносов;
			ВсегоСтраниц = ВсегоСтраниц + Выборка.КоличествоСтраниц;
		КонецЦикла;
	КонецЦикла;
	
	ВывестиИтогиЗаявленияОВозмещении_2012(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ВсегоСтраниц);
	
	Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЕсли;
	ТабличныйДокумент.Вывести(Макет);
КонецПроцедуры

Процедура ВывестиШапкуИПодвалЗаявленияОВозмещении_2012(Макет, Выборка)
	
	ДлиныСтрок = Новый Массив();
	ДлиныСтрок.Добавить(27);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.НаименованиеТерриториальногоОрганаФСС), ДлиныСтрок), Макет, "Наименование_ФСС_", 135);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.СтраховательНаименование), ДлиныСтрок), Макет, "ФИО_Заявителя_", 135);
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.РегистрационныйНомерФСС, Макет, "РегистрационныйНомер_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныйКодФСС, Макет, "ДополнительныйКод_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КодПодчиненностиФСС, Макет, "КодПодчиненности_", 5);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ИНН, Макет, "ИНН_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КПП, Макет, "КПП_", 9);
	
	Если ЗначениеЗаполнено(Выборка.АдресОрганизации) Тогда
		СтруктураАдреса = ПрямыеВыплатыПособийСоциальногоСтрахования.СтруктураАдресаВМашиночитаемомФормате2012(Выборка.АдресОрганизации);
		Если ЗначениеЗаполнено(СтруктураАдреса.Индекс) Тогда
			Префикс = "АдресРегистрации_";
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Индекс), Макет, Префикс, 6);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Регион), Макет, Префикс, 17, 7);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Район), Макет, Префикс, 17, 24);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.НаселенныйПункт), Макет, Префикс, 34, 41);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Улица), Макет, Префикс, 37, 75);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Дом), Макет, Префикс, 8, 112);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Корпус), Макет, Префикс, 3, 120);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Строение), Макет, Префикс, 3, 123);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Квартира), Макет, Префикс, 6, 126);
		КонецЕсли;
	КонецЕсли;
	
	ДлиныСтрок = Новый Массив();
	ДлиныСтрок.Добавить(39);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.НаименованиеБанка), ДлиныСтрок), Макет, "НаименованиеБанка_", 78);
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.НомерСчета, Макет, "НомерСчета_", 20);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.БИКБанка, Макет, "БИК_", 9);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.НомерЛицевогоСчета, Макет, "ЛицСчет_", 12);
	
	Если ЗначениеЗаполнено(Выборка.ТелефонСоставителя) Тогда
		СтруктураТелефона = УправлениеКонтактнойИнформацией.СведенияОТелефоне(Выборка.ТелефонСоставителя);
		Телефон = СтрЗаменить(СтруктураТелефона.КодГорода, "-", "") + СтрЗаменить(СтруктураТелефона.НомерТелефона, "-", "");
		Телефон = СтрЗаменить(Телефон, " ", ""); 
		ЗарплатаКадры.ВывестиДанныеПоБуквенно(Телефон, Макет, "ТелефонСоставителя_", 10);
	КонецЕсли;
	Если ЗначениеЗаполнено(Выборка.ПредставительСФР) Тогда
		Макет.Параметры.ДолжностьРуководителя = Строка(Выборка.ДолжностьПредставителяСФР);
		Макет.Параметры.ФИОРуководителя = Строка(Выборка.ПредставительФИО);
	Иначе
		Макет.Параметры.ДолжностьРуководителя = Строка(Выборка.ДолжностьРуководителя);
		Макет.Параметры.ФИОРуководителя = Строка(Выборка.РуководительФИО);
	КонецЕсли;
	
КонецПроцедуры

Процедура ВывестиСтрокуЗаявленияОВозмещении_2012(Макет, Выборка, НомерСтроки)
	
	ПрефиксСтроки = "ФИО_" + Формат(НомерСтроки,"ЧЦ=2; ЧВН=") + "_";
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.СотрудникФамилия),  Макет, ПрефиксСтроки, 24);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.СотрудникИмя),      Макет, ПрефиксСтроки, 24, 25);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(Выборка.СотрудникОтчество), Макет, ПрефиксСтроки, 24, 49);
	
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(Выборка.СреднедневнойЗаработок, Макет, "РазмерПособия" + НомерСтроки + "_", 8);
	
	Макет.Области["Статус" + НомерСтроки].Текст = Выборка.Статус;
	
КонецПроцедуры

Процедура ВывестиИтогиЗаявленияОВозмещении_2012(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ВсегоСтраниц)
	
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(ИтогоСреднедневнойЗаработок, Макет, "ИтогоРазмерПособия_", 9);
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(ИтогоПособия, Макет, "ИтогоРазмерПособия2_", 9);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Строка(ВсегоСтраниц), Макет, "КоличествоСтраниц_", 2);
	
КонецПроцедуры

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

#Область ЗаявлениеВФССДополнительныеДниОтпуска_2017

Процедура ВывестиЗаявлениеОВозмещении_2017(Выборка, ТабличныйДокумент, ОбъектыПечати)
	Макет = Неопределено;
	ВыведеноСтрок = 0;
	ИтогоПособия = 0;
	ИтогоСреднедневнойЗаработок = 0;
	ИтогоКоличествоДней = 0;
	ИтогоВзносов = 0;
	ВсегоСтраниц = 0;
	КоличествоСтрокВМакете = 5;
	
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		Пока Выборка.Следующий() Цикл
			ВыведеноСтрок = (ВыведеноСтрок + 1) % КоличествоСтрокВМакете;
			НомерСтроки = ?(ВыведеноСтрок = 0, КоличествоСтрокВМакете, ВыведеноСтрок);
			
			Если ВыведеноСтрок = 1 Тогда
				Если Макет <> Неопределено Тогда
					ВывестиИтогиЗаявленияОВозмещении_2017(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ИтогоВзносов, ВсегоСтраниц);
					Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
						ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
					КонецЕсли;
					ТабличныйДокумент.Вывести(Макет);
				КонецЕсли;
				ИтогоПособия = 0;
				ИтогоВзносов = 0;
				ВсегоСтраниц = 0;
				ИтогоСреднедневнойЗаработок = 0;
				ИтогоКоличествоДней = 0;
				Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов." + Выборка.ИмяМакета);
				ВывестиШапкуИПодвалЗаявленияОВозмещении_2017(Макет, Выборка);
			КонецЕсли;
			
			ВывестиСтрокуЗаявленияОВозмещении_2017(Макет, Выборка, НомерСтроки);
			ИтогоСреднедневнойЗаработок = ИтогоСреднедневнойЗаработок + Выборка.СреднедневнойЗаработок;
			ИтогоКоличествоДней = ИтогоКоличествоДней + Выборка.КоличествоДней;
			ИтогоПособия = ИтогоПособия + Выборка.СуммаПособия;
			ИтогоВзносов = ИтогоВзносов + Выборка.СуммаВзносов;
			ВсегоСтраниц = ВсегоСтраниц + Выборка.КоличествоСтраниц;
		КонецЦикла;
	КонецЦикла;
	
	ВывестиИтогиЗаявленияОВозмещении_2017(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ИтогоВзносов, ВсегоСтраниц);
	
	Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЕсли;
	ТабличныйДокумент.Вывести(Макет);
КонецПроцедуры

Процедура ВывестиШапкуИПодвалЗаявленияОВозмещении_2017(Макет, Выборка)
	
	ДлиныСтрок = Новый Массив();
	ДлиныСтрок.Добавить(27);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.НаименованиеТерриториальногоОрганаФСС), ДлиныСтрок), Макет, "Наименование_ФСС_", 135);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.СтраховательНаименование), ДлиныСтрок), Макет, "ФИО_Заявителя_", 135);
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.РегистрационныйНомерФСС, Макет, "РегистрационныйНомер_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныйКодФСС, Макет, "ДополнительныйКод_", 10);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КодПодчиненностиФСС, Макет, "КодПодчиненности_", 5);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ИНН, Макет, "ИНН_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КПП, Макет, "КПП_", 9);
	
	Если ЗначениеЗаполнено(Выборка.АдресОрганизации) Тогда
		СтруктураАдреса = ПрямыеВыплатыПособийСоциальногоСтрахования.СтруктураАдресаВМашиночитаемомФормате2012(Выборка.АдресОрганизации);
		Если ЗначениеЗаполнено(СтруктураАдреса.Индекс) Тогда
			Префикс = "АдресРегистрации_";
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Индекс), Макет, Префикс, 6);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Регион), Макет, Префикс, 37, 7);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Район), Макет, Префикс, 37, 44);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.НаселенныйПункт), Макет, Префикс, 34, 81);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Улица), Макет, Префикс, 37, 115);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Дом), Макет, Префикс, 7, 152);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Корпус), Макет, Префикс, 3, 159);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Строение), Макет, Префикс, 3, 162);
			ЗарплатаКадры.ВывестиДанныеПоБуквенно(ВРег(СтруктураАдреса.Квартира), Макет, Префикс, 5, 165);
		КонецЕсли;
	КонецЕсли;
	
	ДлиныСтрок = Новый Массив();
	ДлиныСтрок.Добавить(39);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(ЗарплатаКадры.РазбитьСтрокуНаПодСтроки(ВРег(Выборка.НаименованиеБанка), ДлиныСтрок), Макет, "НаименованиеБанка_", 78);
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.НомерСчета, Макет, "НомерСчета_", 20);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.БИКБанка, Макет, "БИК_", 9);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.НомерЛицевогоСчета, Макет, "ЛицСчет_", 12);
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.КБК, Макет, "КБК_", 20);
	
	Если ЗначениеЗаполнено(Выборка.ТелефонСоставителя) Тогда
		СтруктураТелефона = УправлениеКонтактнойИнформацией.СведенияОТелефоне(Выборка.ТелефонСоставителя);
		Телефон = СтрЗаменить(СтруктураТелефона.КодГорода, "-", "") + СтрЗаменить(СтруктураТелефона.НомерТелефона, "-", "");
		Телефон = СтрЗаменить(Телефон, " ", ""); 
		ЗарплатаКадры.ВывестиДанныеПоБуквенно(Телефон, Макет, "ТелефонСоставителя_", 10);
	КонецЕсли;
	Если ЗначениеЗаполнено(Выборка.ПредставительСФР) Тогда
		Макет.Параметры.ДолжностьРуководителя = Строка(Выборка.ДолжностьПредставителяСФР);
		Макет.Параметры.ФИОРуководителя = Строка(Выборка.ПредставительФИО);
	Иначе
		Макет.Параметры.ДолжностьРуководителя = Строка(Выборка.ДолжностьРуководителя);
		Макет.Параметры.ФИОРуководителя = Строка(Выборка.РуководительФИО);
	КонецЕсли;
	
	ЗарплатаКадры.ВывестиДанныеПоБуквенно(СокрЛП(Выборка.АдресЭлектроннойПочтыОрганизации), Макет, "АдресЭлектроннойПочты_", 28);
КонецПроцедуры

Процедура ВывестиСтрокуЗаявленияОВозмещении_2017(Макет, Выборка, НомерСтроки)
	
	Макет.Параметры["Фамилия" + НомерСтроки]  = Выборка.СотрудникФамилия;
	Макет.Параметры["Имя" + НомерСтроки]      = Выборка.СотрудникИмя;
	Макет.Параметры["Отчество" + НомерСтроки] = Выборка.СотрудникОтчество;
	
	Макет.Параметры["РазмерПособия" + НомерСтроки] = Выборка.СреднедневнойЗаработок;
	
	Макет.Области["Статус" + НомерСтроки].Текст = Выборка.Статус;
	
КонецПроцедуры

Процедура ВывестиИтогиЗаявленияОВозмещении_2017(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ИтогоВзносов, ВсегоСтраниц)
	
	Макет.Параметры.ИтогоРазмерПособия = ИтогоСреднедневнойЗаработок;
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(ИтогоПособия + ИтогоВзносов, Макет, "ВсегоРасходов_", 11);
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(ИтогоВзносов, Макет, "Взносов_", 11);
	ЗарплатаКадры.ВывестиСуммуВРубляхКопейкахВЯчейки(ИтогоПособия, Макет, "ИтогоРазмерПособия2_", 11);
	Макет.Параметры.Листов = Строка(ВсегоСтраниц);
	
КонецПроцедуры

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

#Область ЗаявлениеВФССДополнительныеДниОтпуска_2021

Процедура ВывестиЗаявлениеОВозмещении_2021(Выборка, ТабличныйДокумент, ОбъектыПечати)
	Макет = Неопределено;
	ВыведеноСтрок = 0;
	ИтогоПособия = 0;
	ИтогоСреднедневнойЗаработок = 0;
	ИтогоКоличествоДней = 0;
	ИтогоВзносов = 0;
	ВсегоСтраниц = 0;
	КоличествоСтрокВМакете = 3;
	
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		Пока Выборка.Следующий() Цикл
			ВыведеноСтрок = (ВыведеноСтрок + 1) % КоличествоСтрокВМакете;
			НомерСтроки = ?(ВыведеноСтрок = 0, КоличествоСтрокВМакете, ВыведеноСтрок);
			
			Если ВыведеноСтрок = 1 Тогда
				Если Макет <> Неопределено Тогда
					ВывестиИтогиЗаявленияОВозмещении_2017(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ИтогоВзносов, ВсегоСтраниц);
					Макет.Параметры.ИтогоКоличествоДней = ИтогоКоличествоДней;
					Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
						ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
					КонецЕсли;
					ТабличныйДокумент.Вывести(Макет);
				КонецЕсли;
				ИтогоПособия = 0;
				ИтогоВзносов = 0;
				ВсегоСтраниц = 0;
				ИтогоСреднедневнойЗаработок = 0;
				ИтогоКоличествоДней = 0;
				Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаявлениеВФССОВозмещенииВыплатРодителямДетейИнвалидов." + Выборка.ИмяМакета);
				ВывестиШапкуИПодвалЗаявленияОВозмещении_2017(Макет, Выборка);
				ЗарплатаКадры.ВывестиДанныеПоБуквенно(Выборка.ДополнительныеСведенияДляПеречисления, Макет, "ДопСведения_", 72);
			КонецЕсли;
			
			ВывестиСтрокуЗаявленияОВозмещении_2021(Макет, Выборка, НомерСтроки);
			ИтогоСреднедневнойЗаработок = ИтогоСреднедневнойЗаработок + Выборка.СреднедневнойЗаработок;
			ИтогоКоличествоДней = ИтогоКоличествоДней + Выборка.КоличествоДней;
			ИтогоПособия = ИтогоПособия + Выборка.СуммаПособия;
			ИтогоВзносов = ИтогоВзносов + Выборка.СуммаВзносов;
			ВсегоСтраниц = ВсегоСтраниц + Выборка.КоличествоСтраниц;
		КонецЦикла;
	КонецЦикла;
	
	ВывестиИтогиЗаявленияОВозмещении_2017(Макет, ИтогоСреднедневнойЗаработок, ИтогоПособия, ИтогоВзносов, ВсегоСтраниц);
	Макет.Параметры.ИтогоКоличествоДней = ИтогоКоличествоДней;
	
	Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЕсли;
	ТабличныйДокумент.Вывести(Макет);
КонецПроцедуры

Процедура ВывестиСтрокуЗаявленияОВозмещении_2021(Макет, Выборка, НомерСтроки)
	
	Макет.Параметры["Фамилия" + НомерСтроки]  = Выборка.СотрудникФамилия;
	Макет.Параметры["Имя" + НомерСтроки]      = Выборка.СотрудникИмя;
	Макет.Параметры["Отчество" + НомерСтроки] = Выборка.СотрудникОтчество;
	Макет.Параметры["СНИЛС" + НомерСтроки]    = Выборка.СотрудникСНИЛС;
	Макет.Параметры["Период" + НомерСтроки]   = Выборка.Месяц;
	Макет.Параметры["КоличествоДней" + НомерСтроки] = Выборка.КоличествоДней;
		
	Макет.Параметры["РазмерПособия" + НомерСтроки] = Выборка.СреднедневнойЗаработок;
	
	Макет.Области["Статус" + НомерСтроки].Текст = Выборка.Статус;
	
КонецПроцедуры

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

#Область ПФ_MXL_ДополнительныеДниОтпуска_2022

Процедура ВывестиЗаявлениеОВозмещении_2022(Выборка, ТабличныйДокумент, ОбъектыПечати)
	МетаданныеМакета = Метаданные().Макеты[Выборка.ИмяМакета];
	КонтекстПечати = УправлениеПечатьюБЗК.КонтекстПечати(МетаданныеМакета, , ОбъектыПечати, ТабличныйДокумент);
	
	ТаблицаСтрок = Новый ТаблицаЗначений;
	ТаблицаСтрок.Колонки.Добавить("ВместеСоСледующим", Новый ОписаниеТипов("Булево"));
	ИменаКолонок = Новый Массив;
	Для Каждого КолонкаРезультатаЗапроса Из Выборка.Владелец().Колонки Цикл
		ТаблицаСтрок.Колонки.Добавить(КолонкаРезультатаЗапроса.Имя, КолонкаРезультатаЗапроса.ТипЗначения);
		ИменаКолонок.Добавить(КолонкаРезультатаЗапроса.Имя);
	КонецЦикла;
	ИменаКолонок = СтрСоединить(ИменаКолонок, ",");
	
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		// Итоги таблицы выводятся в шапке формы. Поэтому сначала требуется получить данные всех строк.
		Документ = Неопределено;
		ТаблицаСтрок.Очистить();
		Пока Выборка.Следующий() Цикл
			Если Документ = Неопределено Тогда
				Документ = Новый Структура(ИменаКолонок);
				ЗаполнитьЗначенияСвойств(Документ, Выборка);
			КонецЕсли;
			Если Выборка.Сотрудник <> Неопределено Тогда
				СтрокаТаблицы = ТаблицаСтрок.Добавить();
				ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Выборка);
			КонецЕсли;
		КонецЦикла;
		Если Документ = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		ИтогоСреднедневнойЗаработок = ТаблицаСтрок.Итог("СреднедневнойЗаработок");
		ИтогоКоличествоДней         = ТаблицаСтрок.Итог("КоличествоДней");
		ВсегоПособий                = ТаблицаСтрок.Итог("СуммаПособия");
		ВсегоВзносов                = ТаблицаСтрок.Итог("СуммаВзносов");
		ЛистовПриказов              = ТаблицаСтрок.Итог("КоличествоСтраниц");
		// Начало печати.
		УправлениеПечатьюБЗК.ПередПечатьюОчередногоОбъекта(КонтекстПечати);
		// Вывод шапки.
		Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "Шапка");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.СтраховательНаименование, "СтраховательНаименование");
		УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоПособий + ВсегоВзносов, "ВсегоРасходов");
		УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоВзносов, "ВсегоВзносов");
		УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоПособий, "ВсегоПособий");
		КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
		// Вывод строк таблицы.
		Если ТаблицаСтрок.Количество() = 0 Тогда
			КоличествоПолучателей = 0;
		Иначе
			МассивСотрудников = КоллекцииБЗК.УникальныеЗначенияКолонки(ТаблицаСтрок, "Сотрудник");
			КоллекцииБЗК.УдалитьПустыеЗначенияМассива(МассивСотрудников);
			КоличествоПолучателей = МассивСотрудников.Количество();
		КонецЕсли;
		Для НомерСтроки = ТаблицаСтрок.Количество() + 1 По 3 Цикл
			ТаблицаСтрок.Добавить().НомерСтроки = НомерСтроки;
		КонецЦикла;
		// Первая и последняя строка выводятся вместе с шапкой и подвалом.
		// Для первой строки это обеспечивается флажком "ВместеСоСледующим" шапки.
		// Для последней строки необходимо включить явно.
		ВсегоСтрок = ТаблицаСтрок.Количество();
		ТаблицаСтрок[ВсегоСтрок-1].ВместеСоСледующим = Истина;
		// Если строк много...
		Если ВсегоСтрок > 3 Тогда
			// На пустой лист помещается целиком 4 строки.
			// На первом листе по умолчанию помещаются 2 строки.
			ЗаВычетомПервойИПоследней = ВсегоСтрок-2;
			Остаток = ЗаВычетомПервойИПоследней % 4;
			Если Остаток = 0 Тогда
				// По умолчанию выведется как 2 4 ... 3 1,
				// а хотелось бы вывести как 1 4 ... 4 1,
				// для чего 2я строка должна "прицепиться" к 3й и "убежать" с 1й страницы.
				ТаблицаСтрок[1].ВместеСоСледующим = Истина;
			ИначеЕсли Остаток = 2 Тогда
				// При автоматической балансировке количество кратное 4 выведется как 2 4 ... 4 1 1.
				// На предпоследней странице в воздухе "повисает" 1 строка, что не очень красиво.
				Если ВсегоСтрок = 4 Тогда
					// 4 строки выводятся по схеме "1 2 1",
					// для чего 2я строка должна "прицепиться" к 3й.
					ТаблицаСтрок[1].ВместеСоСледующим = Истина;
				ИначеЕсли ВсегоСтрок = 8 Тогда
					// 8 строк выводятся по схеме "1 3 3 1",
					// для чего 2я строка должна "прицепиться" к 3й,
					ТаблицаСтрок[1].ВместеСоСледующим = Истина;
					// а две пред-предпоследние строки должны "прицепиться" к предпоследней (-2й).
					ТаблицаСтрок[ВсегоСтрок-4].ВместеСоСледующим = Истина;
					ТаблицаСтрок[ВсегоСтрок-3].ВместеСоСледующим = Истина;
				Иначе
					// 12, 16 и т.д. строк - по схеме: "2 4 ... 4 3 3 3 1".
					ТаблицаСтрок[ВсегоСтрок-7].ВместеСоСледующим = Истина;
					ТаблицаСтрок[ВсегоСтрок-6].ВместеСоСледующим = Истина;
					ТаблицаСтрок[ВсегоСтрок-4].ВместеСоСледующим = Истина;
					ТаблицаСтрок[ВсегоСтрок-3].ВместеСоСледующим = Истина;
				КонецЕсли;
			ИначеЕсли Остаток = 3 И ВсегоСтрок > 8 Тогда
				// Вывод по схеме "2 4 ... 4 3 3 1".
				ТаблицаСтрок[ВсегоСтрок-4].ВместеСоСледующим = Истина;
				ТаблицаСтрок[ВсегоСтрок-3].ВместеСоСледующим = Истина;
			КонецЕсли;
		КонецЕсли;
		Для Каждого СтрокаТаблицы Из ТаблицаСтрок Цикл
			Параметры = Новый Структура(КонтекстПечати.ИменаПараметровОбластей.СтрокаТаблицы);
			Параметры.НомерСтроки = СтрокаТаблицы.НомерСтроки;
			Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "СтрокаТаблицы");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.СотрудникФамилия,       "СотрудникФамилия");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.СотрудникИмя,           "СотрудникИмя");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.СотрудникОтчество,      "СотрудникОтчество");
			УправлениеПечатьюБЗК.ВывестиСНИЛСПоБуквам(Секция, СтрокаТаблицы.СотрудникСНИЛС,         "СотрудникСНИЛС");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.Статус,                 "СотрудникСтатус");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.РебенокФамилия,         "РебенокФамилия");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.РебенокИмя,             "РебенокИмя");
			УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция,      СтрокаТаблицы.РебенокОтчество,        "РебенокОтчество");
			УправлениеПечатьюБЗК.ВывестиСНИЛСПоБуквам(Секция, СтрокаТаблицы.РебенокСНИЛС,           "РебенокСНИЛС");
			УправлениеПечатьюБЗК.ВывестиДатуПоБуквам(Секция,  СтрокаТаблицы.РебенокДатаРождения,    "РебенокДатаРождения");
			УправлениеПечатьюБЗК.ВывестиЧислоПоБуквам(Секция, СтрокаТаблицы.КоличествоДней,         "КоличествоДней");
			УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, СтрокаТаблицы.СреднедневнойЗаработок, "СреднедневнойЗаработок");
			Если ЗначениеЗаполнено(СтрокаТаблицы.Месяц) Тогда
				УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Формат(СтрокаТаблицы.Месяц, "ДФ=MMMM"), "Месяц");
				УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Формат(СтрокаТаблицы.Месяц, "ДФ=yyyy"), "Год");
			КонецЕсли;
			Секция.ТабличныйДокумент.Области.КонецСтроки.ВместеСоСледующим = СтрокаТаблицы.ВместеСоСледующим;
			Секция.ТабличныйДокумент.Параметры.Заполнить(Параметры);
			КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
		КонецЦикла;
		// Вывод подвала.
		Параметры = Новый Структура(КонтекстПечати.ИменаПараметровОбластей.Подвал);
		Если ЗначениеЗаполнено(Выборка.ПредставительСФР) Тогда
			Параметры.УполномоченныйПредставительДолжность = Строка(Выборка.ДолжностьПредставителяСФР);
			Параметры.УполномоченныйПредставительФИО = Строка(Выборка.ПредставительФИО);
		Иначе
			Параметры.УполномоченныйПредставительДолжность = Строка(Выборка.ДолжностьРуководителя);
			Параметры.УполномоченныйПредставительФИО = Строка(Выборка.РуководительФИО);
		КонецЕсли;
		Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "Подвал");
		УправлениеПечатьюБЗК.ВывестиЧислоПоБуквам(Секция, КоличествоПолучателей,          "КоличествоПолучателей");
		УправлениеПечатьюБЗК.ВывестиЧислоПоБуквам(Секция, ЛистовПриказов,                 "ЛистовПриказов");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.РегистрационныйНомерФСС,    "РегистрационныйНомер");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.ДополнительныйКодФСС,       "ДополнительныйКод");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.КодПодчиненностиФСС,        "КодПодчиненности");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.ИНН,                        "ИНН");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.КПП,                        "КПП");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.СтраховательНаименование,   "ПолучательНаименование");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.НаименованиеБанка,          "БанкНаименование");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.НомерСчета,                 "НомерСчета");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.БИКБанка,                   "БанкБИК");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.НомерЛицевогоСчета,         "ЛицевойСчет");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.КБК,                        "КБК");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.СтраховательПочта,          "СтраховательПочта");
		УправлениеПечатьюБЗК.ВывестиТелефонПоБуквам(Секция, Документ.СтраховательТелефон, "СтраховательТелефон");
		УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.КодПодчиненностиФСС,        "КодТОФ");
		Секция.ТабличныйДокумент.Параметры.Заполнить(Параметры);
		КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
		// Окончание печати.
		УправлениеПечатьюБЗК.ПослеПечатиОчередногоОбъекта(КонтекстПечати, Выборка.Ссылка);
	КонецЦикла;
	
КонецПроцедуры

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

#Область ПФ_MXL_ДополнительныеДниОтпуска_2024

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

Процедура ДобавитьКолонкиНаличияДней(ТаблицаСтрок) Экспорт
	ТаблицаСтрок.Колонки.Добавить("ЕстьПриказы", Новый ОписаниеТипов("Булево"));
	ТаблицаСтрок.Колонки.Добавить("ЕстьДниЗаМесяц", Новый ОписаниеТипов("Булево"));
	ТаблицаСтрок.Колонки.Добавить("ЕстьНакопленные", Новый ОписаниеТипов("Булево"));
	ТаблицаСтрок.Колонки.Добавить("ЕстьДниЗаГод", Новый ОписаниеТипов("Булево"));
КонецПроцедуры

Процедура ЗаполнитьФлажкиНаличияДней(СтрокаТаблицы) Экспорт
	СтрокаТаблицы.ЕстьДниЗаМесяц = ЗначениеЗаполнено(СтрокаТаблицы.Месяц)
		И ЗначениеЗаполнено(СтрокаТаблицы.КоличествоДней);
	СтрокаТаблицы.ЕстьНакопленные = ЗначениеЗаполнено(СтрокаТаблицы.Месяц)
		И ЗначениеЗаполнено(СтрокаТаблицы.НакопленоДнейЗаМесяц);
	СтрокаТаблицы.ЕстьДниЗаГод = ЗначениеЗаполнено(СтрокаТаблицы.Месяц)
		И ЗначениеЗаполнено(СтрокаТаблицы.КоличествоДнейЗаГод);
	СтрокаТаблицы.ЕстьПриказы = (СтрокаТаблицы.ЕстьДниЗаМесяц Или СтрокаТаблицы.ЕстьДниЗаГод)
		И (ЗначениеЗаполнено(СтрокаТаблицы.ПриказНомер) Или ЗначениеЗаполнено(СтрокаТаблицы.ПриказДата));
КонецПроцедуры

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

Процедура ВывестиШапкуДокумента_2024(КонтекстПечати, Документ, ТаблицаСтрок)
	Секция = УправлениеПечатьюБЗК.СекцияПечатнойФормы(КонтекстПечати, "Документ_Шапка");
	ИтогоСреднедневнойЗаработок = ТаблицаСтрок.Итог("СреднедневнойЗаработок");
	ИтогоКоличествоДней         = ТаблицаСтрок.Итог("КоличествоДней");
	ВсегоПособий                = ТаблицаСтрок.Итог("СуммаПособия");
	ВсегоВзносов                = ТаблицаСтрок.Итог("СуммаВзносов");
	ЛистовПриказов              = ТаблицаСтрок.Итог("КоличествоСтраниц");
	УправлениеПечатьюБЗК.ВывестиПоБуквам(Секция, Документ.СтраховательНаименование, "СтраховательНаименование");
	УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоПособий + ВсегоВзносов, "ВсегоРасходов");
	УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоВзносов, "ВсегоВзносов");
	УправлениеПечатьюБЗК.ВывестиСуммуПоБуквам(Секция, ВсегоПособий, "ВсегоПособий");
	КонтекстПечати.ТабличныйДокумент.Вывести(Секция.ТабличныйДокумент);
КонецПроцедуры

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

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

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

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

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

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

Процедура РазрешитьДобавлениеСтраницы(ТабличныйДокумент)
	ПоследняяСтрока = ТабличныйДокумент.Область(ТабличныйДокумент.ВысотаТаблицы, , ТабличныйДокумент.ВысотаТаблицы);
	ПоследняяСтрока.ВместеСоСледующим = Ложь;
КонецПроцедуры

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

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

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

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

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

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

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

#КонецЕсли

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