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