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