Простой, отстранение от работы / Модуль менеджера

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ПечатнаяФормаПриказаОВременнойПриостановкеРабот(МассивОбъектов, ОбъектыПечати)
	
	НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
	
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриказОВременнойПриостановкеРабот";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПростойСотрудников.ПФ_MXL_ПриказОВременнойПриостановкеРабот");
	
	РезультатЗапроса = ЗапросПолученияДанных(МассивОбъектов).Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат ТабДокумент;
	КонецЕсли;
	
	Выборка = РезультатЗапроса.Выбрать();
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		
		СписокПодразделений = Новый Соответствие;
		СписокСотрудников = Новый Массив;
		
		Пока Выборка.Следующий() Цикл
			
			СписокПодразделений.Вставить(Выборка.Подразделение);
			
			ИнформацияОСотруднике = Новый Структура("ФамилияИО,Должность");
			ЗаполнитьЗначенияСвойств(ИнформацияОСотруднике, Выборка);
			
			СписокСотрудников.Добавить(ИнформацияОСотруднике);
			
		КонецЦикла;
		
		ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1");
		ОбластьШапка1.Параметры.Заполнить(Выборка);
		ОбластьШапка1.Параметры.Номер = ЗарплатаКадрыОтчеты.НомерНаПечать(Выборка.Номер, Выборка.НомерПервичногоДокумента);
		ОбластьШапка1.Параметры.Город = ?(ПустаяСтрока(Выборка.Город), "____________", Выборка.Город);
		ОбластьШапка1.Параметры.ПричиныПростоя = ?(ПустаяСтрока(Выборка.ОписаниеПричины), Символы.ПС
			+ "______________________________________________________________________________________", Выборка.ОписаниеПричины);
		ОбластьШапка1.Параметры.ОписаниеПериодаПростоя = ОписаниеПериодаПриостановкиРаботы(Выборка);
		
		ТабДокумент.Вывести(ОбластьШапка1);
		
		НомерПоПорядку = 1;
		Для каждого ЭлементСпискаПодразделений Из СписокПодразделений Цикл
			
			ОбластьПодразделение = Макет.ПолучитьОбласть("Подразделение");
			ОбластьПодразделение.Параметры.НПП = НомерПоПорядку;
			
			Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений
				И ЗначениеЗаполнено(ЭлементСпискаПодразделений.Ключ) Тогда
				ОбластьПодразделение.Параметры.Подразделение = ЭлементСпискаПодразделений.Ключ.ПолноеНаименование();
			Иначе
				ОбластьПодразделение.Параметры.Подразделение = Строка(ЭлементСпискаПодразделений.Ключ);
			КонецЕсли;
			
			ОбластьПодразделение.Параметры.Подразделение = ОбластьПодразделение.Параметры.Подразделение
			+ ?(НомерПоПорядку = СписокПодразделений.Количество(), ".", ";");
			
			ТабДокумент.Вывести(ОбластьПодразделение);
			
			НомерПоПорядку = НомерПоПорядку + 1;
			
		КонецЦикла;
		
		ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2");
		ОбластьШапка2.Параметры.Заполнить(Выборка);
		ТабДокумент.Вывести(ОбластьШапка2);
		
		НомерПоПорядку = 1;
		Для каждого ОписаниеСотрудника Из СписокСотрудников Цикл
			
			ОбластьФИОДолжность = Макет.ПолучитьОбласть("ФИОДолжность");
			ОбластьФИОДолжность.Параметры.НПП = НомерПоПорядку;
			ОбластьФИОДолжность.Параметры.ФамилияИО = ОписаниеСотрудника.ФамилияИО;
			ОбластьФИОДолжность.Параметры.Должность =
			Строка(ОписаниеСотрудника.Должность)
			+ ?(НомерПоПорядку = СписокСотрудников.Количество(), ".", ";");
			ТабДокумент.Вывести(ОбластьФИОДолжность);
			
			НомерПоПорядку = НомерПоПорядку + 1;
			
		КонецЦикла;
		
		ОбластьШапка3 = Макет.ПолучитьОбласть("Шапка3");
		ОбластьШапка3.Параметры.Заполнить(Выборка);
		ОбластьШапка3.Параметры.ДатаПростоя = Формат(Выборка.ДатаПростоя, "ДЛФ=DD");
		
		Если Выборка.НаходитьсяНаРабочихМестах Тогда
			ОбластьШапка3.Параметры.Пункт3 = НСтр("ru='3. Работникам, перечисленным в пункте 2 настоящего приказа, в период простоя в рабочее время находиться на своих рабочих местах.'");
		Иначе
			ОбластьШапка3.Параметры.Пункт3 = НСтр("ru='3. Работники, перечисленные в пункте 2 настоящего приказа, в период простоя освобождаются от обязанности являться на рабочие места в рабочее время.'");
		КонецЕсли;
		
		Если Выборка.ВидПростоя = Перечисления.СостоянияСотрудника.ПростойПоВинеРаботодателя Тогда
			ОбластьШапка3.Параметры.ОписаниеВидаПростоя = НСтр("ru='по вине работодателя'");
			ОбластьШапка3.Параметры.ОписаниеРазмераОплаты = НСтр("ru='производить в размере 2/3 от их среднего заработка'");
		ИначеЕсли Выборка.ВидПростоя = Перечисления.СостоянияСотрудника.ПростойПоВинеРаботника Тогда
			ОбластьШапка3.Параметры.ОписаниеВидаПростоя = НСтр("ru='по вине работника'");
			ОбластьШапка3.Параметры.ОписаниеРазмераОплаты = НСтр("ru='не производить'");
		Иначе
			ОбластьШапка3.Параметры.ОписаниеВидаПростоя = НСтр("ru='по обстоятельствам, не зависящим от воли сторон'");
			ОбластьШапка3.Параметры.ОписаниеРазмераОплаты = НСтр("ru='производить в размере 2/3 от их тарифной ставки, оклада (должностного оклада), рассчитанных пропорционально времени простоя'");
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(Выборка.ДолжностьИсполнителя) Тогда
			ОбластьШапка3.Параметры.ДолжностьИсполнителя = "_________________";
		КонецЕсли; 
		
		Если НЕ ЗначениеЗаполнено(Выборка.ДолжностьРуководителя) Тогда
			ОбластьШапка3.Параметры.ДолжностьРуководителя = "_________________";
		КонецЕсли; 
		
		ТабДокумент.Вывести(ОбластьШапка3);
		
		Для каждого ОписаниеСотрудника Из СписокСотрудников Цикл
			
			ОбластьПодписьСотрудника = Макет.ПолучитьОбласть("ПодписьСотрудника");
			ОбластьПодписьСотрудника.Параметры.Заполнить(ОписаниеСотрудника);
			ТабДокумент.Вывести(ОбластьПодписьСотрудника);
			
		КонецЦикла;
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, 1, ОбъектыПечати, Выборка.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции

Функция ПечатнаяФормаПриказаОбОтстраненииОтРаботы(МассивОбъектов, ОбъектыПечати)
	
	НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
	
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриказОВременнойПриостановкеРабот";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПростойСотрудников.ПФ_MXL_ПриказОбОтстраненииОтРаботы");
	
	РезультатЗапроса = ЗапросПолученияДанных(МассивОбъектов).Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат ТабДокумент;
	КонецЕсли;
		
	Выборка = РезультатЗапроса.Выбрать();
	Пока Выборка.СледующийПоЗначениюПоля("Ссылка") Цикл
		
		СписокСотрудников = Новый Массив;
		
		Пока Выборка.Следующий() Цикл
			
			ИнформацияОСотруднике = Новый Структура("ФамилияИО, Должность, Подразделение");
			ЗаполнитьЗначенияСвойств(ИнформацияОСотруднике, Выборка);
			
			СписокСотрудников.Добавить(ИнформацияОСотруднике);
			
		КонецЦикла;
		
		ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1");
		ОбластьШапка1.Параметры.Заполнить(Выборка);
		ОбластьШапка1.Параметры.Номер = ЗарплатаКадрыОтчеты.НомерНаПечать(Выборка.Номер, Выборка.НомерПервичногоДокумента);
		ОбластьШапка1.Параметры.Город = ?(ПустаяСтрока(Выборка.Город), "____________", Выборка.Город);
		ОбластьШапка1.Параметры.ПричиныОтстранения = ?(ПустаяСтрока(Выборка.ОписаниеПричины), Символы.ПС
			+ "______________________________________________________________________________________", Выборка.ОписаниеПричины);
		
		ТабДокумент.Вывести(ОбластьШапка1);
		
		ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2");
		ОбластьШапка2.Параметры.Заполнить(Выборка);
		ОбластьШапка2.Параметры.ОписаниеПериодаПростоя = ОписаниеПериодаПриостановкиРаботы(Выборка);
		
		ТабДокумент.Вывести(ОбластьШапка2);
		
		ВсегоСотрудников = СписокСотрудников.Количество();
		НомерПоПорядку = 1;
		Для каждого ОписаниеСотрудника Из СписокСотрудников Цикл
			
			ОбластьФИОДолжность = Макет.ПолучитьОбласть("ФИОДолжность");
			ОбластьФИОДолжность.Параметры.НПП = НомерПоПорядку;
			ОбластьФИОДолжность.Параметры.ФамилияИО = ОписаниеСотрудника.ФамилияИО;
			ОбластьФИОДолжность.Параметры.Должность = Строка(ОписаниеСотрудника.Должность);
			ОбластьФИОДолжность.Параметры.Подразделение = Строка(ОписаниеСотрудника.Подразделение)
				+ ?(НомерПоПорядку = ВсегоСотрудников, ".", ";");
				
			ТабДокумент.Вывести(ОбластьФИОДолжность);
			
			НомерПоПорядку = НомерПоПорядку + 1;
			
		КонецЦикла;
		
		ОбластьШапка3 = Макет.ПолучитьОбласть("Шапка3");
		ОбластьШапка3.Параметры.Заполнить(Выборка);
		ОбластьШапка3.Параметры.ДатаПростоя = Формат(Выборка.ДатаПростоя, "ДЛФ=DD");
		
		Если Выборка.ВидПростоя = Перечисления.СостоянияСотрудника.ПростойПоВинеРаботника Тогда
			ОбластьШапка3.Параметры.ОписаниеВидаПростоя = НСтр("ru='по вине работника'");
			ОбластьШапка3.Параметры.ОписаниеРазмераОплаты = НСтр("ru='не производить'");
		Иначе
			ОбластьШапка3.Параметры.ОписаниеВидаПростоя = НСтр("ru='по обстоятельствам, возникшим не по вине работника'");
			ОбластьШапка3.Параметры.ОписаниеРазмераОплаты = НСтр("ru='производить в размере 2/3 от их тарифной ставки, оклада (должностного оклада), рассчитанных пропорционально времени приостановки работы'");
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(Выборка.ДолжностьИсполнителя) Тогда
			ОбластьШапка3.Параметры.ДолжностьИсполнителя = "_________________";
		КонецЕсли; 
		
		Если НЕ ЗначениеЗаполнено(Выборка.ДолжностьРуководителя) Тогда
			ОбластьШапка3.Параметры.ДолжностьРуководителя = "_________________";
		КонецЕсли; 
		
		ТабДокумент.Вывести(ОбластьШапка3);
		
		Для каждого ОписаниеСотрудника Из СписокСотрудников Цикл
			
			ОбластьПодписьСотрудника = Макет.ПолучитьОбласть("ПодписьСотрудника");
			ОбластьПодписьСотрудника.Параметры.Заполнить(ОписаниеСотрудника);
			ТабДокумент.Вывести(ОбластьПодписьСотрудника);
			
		КонецЦикла;
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, 1, ОбъектыПечати, Выборка.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции

Функция ОписаниеПериодаПриостановкиРаботы(Выборка)
	
	Результат = "";
	Если Выборка.ВнутрисменныйПростой Тогда
		Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='на период %1 (%2 час.)'"),
			Формат(Выборка.ДатаПростоя, "ДЛФ=DD"),
			Выборка.ЧасыПростоя);
	Иначе
		Если Выборка.ДатаНачала = Выборка.ДатаОкончания Тогда
			Результат = Формат(Выборка.ДатаНачала, "ДЛФ=DD");
		Иначе
			Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='на период с %1 по %2'"),
				Формат(Выборка.ДатаНачала, "ДЛФ=DD"),
				Формат(Выборка.ДатаОкончания, "ДЛФ=DD"));
		КонецЕсли;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции			

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

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

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

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

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

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

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

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

#Область ПечатьПодробногоРасчетаНачислений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПараметрыВыбораНачислений

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

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

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

#КонецЕсли

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