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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбработчикиРегистрацииФизическихЛиц

Функция ПринадлежностиОбъекта() Экспорт
	Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве("Организация");
КонецФункции

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

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

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

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

#Область ОбменДанными

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

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

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

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

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

// СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, СписокСотрудников = Неопределено) Экспорт
	
	Отчеты.ПечатнаяФормаТ1.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, СписокСотрудников);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

#Область ОбработчикиСобытийМодуляДокумента

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

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

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

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

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

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

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

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

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

Функция ОписаниеПодписейДокумента() Экспорт 

	ОписаниеПодписей = ПодписиДокументов.ОписаниеТаблицыПодписей();

	ОписаниеПодписиРуководитель = ПодписиДокументов.ОписаниеРеквизитовПодписанта();
	ОписаниеПодписиРуководитель.ФизическоеЛицо = "Руководитель";
	ОписаниеПодписиРуководитель.Должность = "ДолжностьРуководителя";
	ОписаниеПодписиРуководитель.ОснованиеПодписи = "ОснованиеПредставителяНанимателя";

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

	ПодписиДокументов.ДобавитьОписаниеПодписейОрганизации(
		ОписаниеПодписей,
		"Руководитель",
		ПереопределяемыеИмена);

	Возврат ОписаниеПодписей;

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

Процедура СформироватьДвиженияМероприятийТрудовойДеятельности(НаборЗаписей, ДанныеДляПроведения) Экспорт
	
	ЭлектронныеТрудовыеКнижки.СформироватьДвиженияМероприятийТрудовойДеятельности(НаборЗаписей, ДанныеДляПроведения);
	
КонецПроцедуры

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

#КонецЕсли

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