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