Договор авторского заказа / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЦикла;
	
	Возврат ДанныеПечатиОбъектов;
	
КонецФункции

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

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


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

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

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

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

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

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

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

#КонецЕсли

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