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