Отпуск по уходу за ребенком / Модуль менеджера

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

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

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

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

КонецПроцедуры

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

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

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

				// Заполним описание данных для проведения в учете начисленной зарплаты.
				ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
				ДанныеДляПроведенияУчетЗарплаты.Движения 				= Движения;
				ДанныеДляПроведенияУчетЗарплаты.Организация 			= РеквизитыДляПроведения.Организация;
				ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации 		= РеквизитыДляПроведения.ПериодРегистрации;
				ДанныеДляПроведенияУчетЗарплаты.ПланируемаяДатаВыплаты	= РеквизитыДляПроведения.ДатаНачала - 1;
				ДанныеДляПроведенияУчетЗарплаты.ПорядокВыплаты 			= РеквизитыДляПроведения.ПорядокВыплаты;
				ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;

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

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

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

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

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

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

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

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

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

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

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

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

// ЗарплатаКадрыПодсистемы

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

// Конец ЗарплатаКадрыПодсистемы

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

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

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

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

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

#Область ОбработчикиПравилРегистрации

// См. ЗарплатаКадрыРасширенныйСинхронизацияДанных.ШаблонОбработчика
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
	ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОтбораПоОрганизации(Настройки);
	ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры

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

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

// Описывает реквизит документы, в котором хранится ссылка на кадровое решение. 
Функция ОписаниеРеквизитаКадровогоРешения() Экспорт
	Возврат Метаданные.Документы.ОтпускПоУходуЗаРебенком.Реквизиты.Решение;
КонецФункции

#Область УчетПособий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ОбъектЗаблокирован(СсылкаНаОбъект) Экспорт
	
	Возврат Ложь;
	
КонецФункции

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

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

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

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

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

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

#Область ПечатьРасчетаСреднегоЗаработка

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

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

КонецФункции

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

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

#Область ДанныеДляРасчетаСреднегоЗаработка

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

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

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

#Область ПФ_MXL_ЗаявлениеОНазначенииПособияПоУходуЗаРебенком

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

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

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

#Область ПФ_MXL_ЗаменаЛетРасчетногоПериода

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

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

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

Функция ИдентификаторСтрокПоказателейПособияДоТрехЛет() Экспорт
	Возврат 9 * 1000000;
КонецФункции

Функция ДанныеДляПроведения(РеквизитыДляПроведения, СтруктураВидовУчета) 

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

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

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

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

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

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

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

		ПрименениеДополнительныхПоказателей = Запрос.Выполнить().Выгрузить();
	КонецЕсли;
	
	ДанныеДляПроведения.Вставить("ПрименениеДополнительныхПоказателей", ПрименениеДополнительныхПоказателей);
	
КонецПроцедуры	

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

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

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

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

Процедура ДобавитьПособиеПоУходуДоПолутораЛет(РеквизитыДляПроведения, ПлановыеНачисления, ГоловнаяОрганизация)
	НовоеПлановоеНачисление 				= ПлановыеНачисления.Добавить();
	НовоеПлановоеНачисление.ДатаСобытия 	= РеквизитыДляПроведения.ДатаНачала;
	НовоеПлановоеНачисление.ДействуетДо 	= КонецДня(РеквизитыДляПроведения.ДатаОкончанияПособияДоПолутораЛет) + 1;
	НовоеПлановоеНачисление.Сотрудник 		= РеквизитыДляПроведения.ОсновнойСотрудник;
	НовоеПлановоеНачисление.ФизическоеЛицо 	= РеквизитыДляПроведения.Сотрудник;
	НовоеПлановоеНачисление.ГоловнаяОрганизация = ГоловнаяОрганизация;
	НовоеПлановоеНачисление.Начисление 		= РеквизитыДляПроведения.ПособиеДоПолутораЛет;
	НовоеПлановоеНачисление.Используется 	= Истина;
КонецПроцедуры

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

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

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

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

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

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

Функция ЗапросССсылкой(ДокументСсылка)
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Возврат Запрос;
КонецФункции 

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

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

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

// Функция возвращает структуру с описанием данного вида документа.
//
Функция ОписаниеДокумента() Экспорт 

	ОписаниеДокумента = ЗарплатаКадрыРасширенныйКлиентСервер.СтруктураОписанияДокумента();
	
	ОписаниеДокумента.КраткоеНазваниеИменительныйПадеж	 = НСтр("ru = 'отпуск'");
	ОписаниеДокумента.КраткоеНазваниеРодительныйПадеж	 = НСтр("ru = 'отпуска'");
	ОписаниеДокумента.ИмяРеквизитаСотрудник				 = "ОсновнойСотрудник";
	ОписаниеДокумента.ИмяРеквизитаОтсутствующийСотрудник = "ОсновнойСотрудник";
	ОписаниеДокумента.ИмяРеквизитаДатаНачалаСобытия		 = "ДатаНачала";
	ОписаниеДокумента.ИмяРеквизитаДатаОкончанияСобытия	 = "ДатаОкончания";
	
	Возврат ОписаниеДокумента;

КонецФункции

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

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

Процедура ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления) Экспорт

	ПараметрыЗаполнения = ПерерасчетЗарплаты.ПараметрыЗаполненияИсходныхДанныхПерерасчетов();
	ПараметрыЗаполнения.ТаблицыНачислений = "ОплатаТруда,ОплатаЛьгот";
	ПерерасчетЗарплаты.ЗаполнитьИсходныеДанныеПерерасчетов(ПараметрыОбновления, Метаданные.Документы.ОтпускПоУходуЗаРебенком, ПараметрыЗаполнения);

КонецПроцедуры

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

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

#КонецЕсли

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