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