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