#Область ОписаниеПеременных
&НаКлиенте
Перем СтарыеЗначенияКонтролируемыхПолей Экспорт;
&НаКлиенте
Перем СотрудникУдаляемойСтроки;
&НаКлиенте
Перем ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СтраницаПособияСФР", "Видимость", Ложь);
Если Не Параметры.Свойство("СтрокаСписочногоДокумента") Тогда
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ПодписиДокументов.ПриСозданииНаСервере(ЭтотОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ЭДОБЗК.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка, Объект);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументов = ОбщегоНазначения.ОбщийМодуль("УчетОригиналовПервичныхДокументов");
МодульУчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект, Элементы.Шапка);
КонецЕсли;
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.ИнициализироватьМеханизмПересчетаДокументаПриРедактировании(ЭтотОбъект);
НовыйДокумент = Не Параметры.Свойство("Ключ") Или Параметры.Ключ.Пустая();
Если НовыйДокумент Тогда
ОграниченияНаУровнеЗаписей = Новый ФиксированнаяСтруктура("ЧтениеБезОграничений, ИзменениеБезОграничений, ИзменениеКадровыхДанных", Ложь, Ложь, Ложь);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
РасчетЗарплатыРасширенныйФормы.ДокументыПриСозданииНаСервере(ЭтотОбъект);
УстановитьПривилегированныйРежим(Ложь);
Если НовыйДокумент Тогда
Если Параметры.Свойство("СтрокаСписочногоДокумента") Тогда
Параметры.Свойство("АдресСпискаПодобранныхСотрудников", АдресСпискаПодобранныхСотрудников);
РедактированиеСтрокиСписочногоДокумента = Истина;
СтрокаСписочногоДокумента = Параметры.СтрокаСписочногоДокумента;
СсылкаНаОбъект = СтрокаСписочногоДокумента.СсылкаНаОбъект;
СсылкаНаИсправленныйДокумент = СтрокаСписочногоДокумента.ИсправленныйДокумент;
Если СтрокаСписочногоДокумента.Свойство("ЗаполнениеВыполнено") Тогда
ЗаполнениеВыполнено = СтрокаСписочногоДокумента.ЗаполнениеВыполнено;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ДокументОбъект = Документы.Увольнение.СоздатьДокумент();
УстановитьПривилегированныйРежим(Ложь);
ДокументОбъект.Заполнить(Неопределено);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьЗначенияЗаполненныхСвойств(Объект, СтрокаСписочногоДокумента);
ТабличныеЧастиОбъекта = СтрокаСписочногоДокумента.ТабличныеЧасти;
Для каждого ОписаниеТабличнойЧасти Из ТабличныеЧастиОбъекта Цикл
Если ОписаниеТабличнойЧасти.Ключ = "ОписаниеТабличныхЧастей" Тогда
Продолжить;
КонецЕсли;
Для каждого СтрокаТЧ Из ОписаниеТабличнойЧасти.Значение Цикл
ЗаполнитьЗначенияСвойств(Объект[ОписаниеТабличнойЧасти.Ключ].Добавить(), СтрокаТЧ);
КонецЦикла;
КонецЦикла;
ПриПолученииДанныхНаСервере();
Если Объект.Начисления.Количество() = 0
И Не Объект.ФиксКоличествоДнейКомпенсацииОтпуска
И Объект.ДнейКомпенсацииУдержанияОтпуска = 0
И Объект.ДополнительныеОтпуска.Количество() = 0 Тогда
ОбновитьДанныеПоСотруднику = Истина;
КонецЕсли;
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Нет;
АвтоЗаголовок = Ложь;
Заголовок = НСтр("ru='Увольнение'");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВыплатаРасчетчикГруппа",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"МесяцОрганизация",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ДатаНомерГруппа",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НаименованиеДокумента",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПодписиГруппа",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПодвалДокументаГруппа",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"КоманднаяПанельФормы",
"Видимость",
Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"РегистрНалоговогоУчетаПоНДФЛ",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"КарточкаУчетаПоСтраховымВзносам",
"Видимость",
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СправкиПриУвольнении",
"Видимость",
Ложь);
Если ТолькоПросмотр Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"Закрыть",
"КнопкаПоУмолчанию",
Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ОК",
"Доступность",
Ложь);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ОК",
"КнопкаПоУмолчанию",
Истина);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ДоходПолученНаТерриторииРФ",
"Видимость",
Ложь);
Иначе
КадровыйУчетРасширенный.ПроверитьПравоИнтерактивногоСозданияКадровыхПриказовСотрудника();
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) И Параметры.ЗначениеКопирования.Проведен Тогда
Объект.Сотрудник = Справочники.Сотрудники.ПустаяСсылка();
Объект.ФизическоеЛицо = Справочники.ФизическиеЛица.ПустаяСсылка();
КонецЕсли;
Если Параметры.Свойство("Основание") Тогда
Основание = Параметры["Основание"];
КонецЕсли;
СсылкаНаИсправленныйДокумент = Объект.ИсправленныйДокумент;
ЭтоИсправление = ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент);
Если Не ЭтоИсправление Тогда
Если Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Объект.ДатаУвольнения = ТекущаяДатаСеанса();
КонецЕсли;
Объект.ПериодРегистрации = НачалоМесяца(Объект.ДатаУвольнения);
ЗначенияДляЗаполнения = Новый Структура("Организация, Ответственный, Месяц",
"Объект.Организация",
"Объект.Ответственный",
"Объект.ПериодРегистрации");
Иначе
ЗначенияДляЗаполнения = Новый Структура("Ответственный",
"Объект.Ответственный");
КонецЕсли;
ЗарплатаКадры.ЗаполнитьПервоначальныеЗначенияВФорме(ЭтотОбъект, ЗначенияДляЗаполнения);
ЗаполнитьДанныеФормыПоОрганизации();
ПриПолученииДанныхНаСервере();
Если ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Если Не ЭтоИсправление Тогда
ДатаУвольненияПриИзмененииНаСервере(ЭтоИсправление);
ПроверитьОстатокОтработанныхДней();
Иначе
УстановитьПланируемуюДатуВыплаты();
КонецЕсли;
КонецЕсли;
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
ВремяНачалаЗамера = ОценкаПроизводительности.НачатьЗамерВремени();
РассчитатьНачисленияНаСервере(, Истина);
ОценкаПроизводительности.ЗакончитьЗамерВремени("РасчетДокументаУвольнение", ВремяНачалаЗамера);
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
КонецЕсли;
ЭлектронныеТрудовыеКнижки.ЗаполнитьНаименованиеДокумента(Объект, "Увольнение");
КонецЕсли;
ЗарплатаКадрыРасширенный.УстановитьНаименованиеПервичногоДокумента(Объект);
Иначе
Если Параметры.Свойство("ВыполнитьПерезаполнениеСведенийОСреднемЗаработке") Тогда
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
ВремяНачалаЗамера = ОценкаПроизводительности.НачатьЗамерВремени();
РассчитатьНачисленияНаСервере(, Истина);
ОценкаПроизводительности.ЗакончитьЗамерВремени("РасчетДокументаУвольнение", ВремяНачалаЗамера);
Иначе
ОчиститьРассчитанныеДанные();
КонецЕсли;
КонецЕсли;
Если Объект.Начисления.Количество() = 0
И Не Объект.ФиксКоличествоДнейКомпенсацииОтпуска
И Объект.ДнейКомпенсацииУдержанияОтпуска = 0
И Объект.ДополнительныеОтпуска.Количество() = 0 Тогда
ОбновитьДанныеПоСотруднику = Истина;
КонецЕсли;
ОбновитьСтраницуУведомленияОПрекращенииПособия();
ОбновитьЭлементыПособий();
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.УстановитьПризнакНеобходимостиРасчета(ЭтотОбъект);
ЗаполнитьВидРасчетаКомпенсацииУдержанияОтпуска(Истина);
ЗаполнитьВидыРасчетовДополнительныхОтпусков();
ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(Объект.Организация);
НадписьМесяцевВыплатыДенежногоСодержания = НСтр("ru='мес.'");
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужбаФормы = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужбаФормы");
МодульГосударственнаяСлужбаФормы.УстановитьПараметрыВыбораСотрудников(ЭтотОбъект, "Сотрудник");
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ИспытательныйСрокСотрудников") Тогда
МодульИспытательныйСрокСотрудников = ОбщегоНазначения.ОбщийМодуль("ИспытательныйСрокСотрудников");
МодульИспытательныйСрокСотрудников.ПриСозданииДокументаУвольнения(ЭтотОбъект, Элементы.ГруппаСостояниеСотрудника);
КонецЕсли;
ОбновитьВидимостьПричиныУвольнения();
ОбновитьВидимостьЭлементовВыходногоПособия();
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивом = ОбщегоНазначения.ОбщийМодуль("ОбменСАрхивом");
МодульОбменСАрхивом.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
Если ЖдатьЗакрытияФормыУведомления Тогда
ЖдатьЗакрытияФормыУведомления = Ложь;
Отказ = Истина;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьНаКлиенте", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПередЗакрытиемФормыРедактированияСтрокиДокументаЗавершение", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ПередЗакрытием(ЭтотОбъект, Объект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
Если Не РедактированиеСтрокиСписочногоДокумента И ИспользуетсяРасчетЗарплаты Тогда
ИсправлениеДокументовЗарплатаКадрыКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "ИзменениеПричинУвольненияСотрудника" И Источник = Объект.Сотрудник Тогда
ОбновитьПричинуУвольнения();
ИначеЕсли ИмяСобытия = "Запись_УведомлениеОПрекращенииОтпускаПоУходуЗаРебенком" Тогда
ОбновитьСтраницуУведомленияОПрекращенииПособия();
КонецЕсли;
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
ЭДОБЗККлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент");
МодульУчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект, Источник);
КонецЕсли;
КонецЕсли;
УчетПособийСоциальногоСтрахованияРасширенныйКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(ТекущийОбъект);
УстановитьПривилегированныйРежим(Ложь);
Если РедактированиеСтрокиСписочногоДокумента Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаСтрокиСписочногоДокумента", Истина);
МногофункциональныеДокументыБЗК.ОтключитьПроверкуУтверждения(ТекущийОбъект);
ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияСвойств = Истина;
КонецЕсли;
Если РасчетНеобходимоВыполнить И Объект.ДокументРассчитан Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("РасчетНеобходимоВыполнить");
КонецЕсли;
Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Объект");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементПриИзменении(Элемент)
ПодписиДокументовКлиент.ПриИзмененииПодписывающегоЛица(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементНажатие(Элемент)
ПодписиДокументовКлиент.РасширеннаяПодсказкаНажатие(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборОтработанныхДнейОтгулов") Тогда
Модифицированность = Истина;
ПриИзмененииОтработанныхДнейНаСервере(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьОтображениеНомеровДокумента(ЭтотОбъект);
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НомерПриказаПриИзменении(Элемент)
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ЗаполнитьДанныеФормыПоОрганизации();
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени("ИзменениеСотрудникаВФормеДокументаУвольнение");
ОбновитьРасчетДенежногоСодержания = Истина;
СотрудникПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
#Область РеквизитыПервичногоДокумента
&НаКлиенте
Процедура НаименованиеПервичногоДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "ПервичныйДокумент", НСтр("ru = 'Первичные документы'"), НСтр("ru = 'Первичный документ'"));
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПервичногоДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.НаименованиеПервичногоДокумента = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПервичногоДокументаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "ПервичныйДокумент");
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ДатаПервичногоДокументаНачалоВыбораЗавершение", ЭтотОбъект);
ПоказатьВводДаты(Оповещение, ?(ЗначениеЗаполнено(Объект.ДатаПервичногоДокумента), Объект.ДатаПервичногоДокумента, Объект.Дата), НСтр("ru='Дата первичного документа'"), ЧастиДаты.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаНачалоВыбораЗавершение(Дата, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Дата) Тогда
Объект.ДатаПервичногоДокумента = Дата;
ДатаПервичногоДокументаПредставление = Формат(Дата,"ДФ=dd.MM.yyyy");
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаОчистка(Элемент, СтандартнаяОбработка)
Объект.ДатаПервичногоДокумента = Дата(1,1,1);
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура МесяцНачисленияСтрокойПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтотОбъект, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Модифицированность);
ПриИзмененииМесяцаНачисления();
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисленияСтрокойНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("МесяцНачисленияСтрокойНачалоВыбораЗавершение", ЭтотОбъект);
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, ЭтотОбъект, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисленияСтрокойНачалоВыбораЗавершение(ЗначениеВыбрано, ДополнительныеПараметры) Экспорт
ПриИзмененииМесяцаНачисления();
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисленияСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтотОбъект, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Направление, Модифицированность);
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияМесяцНачисленияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисленияСтрокойАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисленияСтрокойОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДатаУвольненияПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
ДатаУвольненияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеУвольненияПриИзменении(Элемент)
ОснованиеУвольненияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеУвольненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужбаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиент");
МодульГосударственнаяСлужбаКлиент.УточнитьПараметрыВыбораОснованияУвольненияСГосударственнойСлужбы(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеУвольненияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
КадровыйУчетКлиент.ОбработкаВыбораОснованиеУвольнения(Элемент, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении()
ДнейЧасовВыходногоПособияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияКоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении()
КоличествоМесяцевВыплатыДенежногоСодержанияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияКоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия()
РассчитатьДнейЧасовВыходногоПособия();
ДнейЧасовВыходногоПособияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия");
КонецПроцедуры
&НаКлиенте
Процедура ДнейЧасовВыходногоПособияПриИзменении(Элемент)
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ДнейЧасовТрехКратногоШестикратногоВыходногоПособияПриИзменении(Элемент)
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура СреднемесячноеКоличествоДнейЧасовПриИзменении(Элемент)
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия");
КонецПроцедуры
&НаКлиенте
Процедура КратностьВыходногоПособияПриИзменении(Элемент)
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия");
КонецПроцедуры
&НаКлиенте
Процедура ПределДоходаНеОблагаемогоНДФЛПриИзменении(Элемент)
Объект.ФиксПределДоходаНеОблагаемогоНДФЛ = Истина;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПределДоходаНеОблагаемогоСтраховымиВзносамиПриИзменении(Элемент)
Объект.ФиксПределДоходаНеОблагаемогоСтраховымиВзносами = Истина;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура УчитыватьЗаработокПредыдущихСтрахователейПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ИсточникСреднегоПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС();
КонецПроцедуры
&НаКлиенте
Процедура ПериодРасчетаСреднегоЗаработкаПервыйГодПриИзменении(Элемент)
ПриИзмененииГодовПериодаРасчета(БылПервыйГод, "ПериодРасчетаСреднегоЗаработкаПервыйГод");
БылПервыйГод = Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод;
КонецПроцедуры
&НаКлиенте
Процедура ПериодРасчетаСреднегоЗаработкаВторойГодПриИзменении(Элемент)
ПриИзмененииГодовПериодаРасчета(БылВторойГод, "ПериодРасчетаСреднегоЗаработкаВторойГод");
БылВторойГод = Объект.ПериодРасчетаСреднегоЗаработкаВторойГод;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииГодовПериодаРасчета(ГодДоИзменения, ИмяРеквизита)
Отказ = Ложь;
Если Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод >= Объект.ПериодРасчетаСреднегоЗаработкаВторойГод Тогда
Отказ = Истина;
КонецЕсли;
Если Объект.ПериодРасчетаСреднегоЗаработкаВторойГод >= Год(Объект.ДатаУвольнения) Тогда
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
Объект[ИмяРеквизита] = ГодДоИзменения;
Возврат;
КонецЕсли;
Объект.ФиксПериодРасчетаСреднегоЗаработкаСФР =
Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод <> Объект.ПериодРасчетаСреднегоЗаработкаВторойГод - 1
Или Объект.ПериодРасчетаСреднегоЗаработкаВторойГод <> Год(Объект.ДатаУвольнения) - 1;
ПерезаполнятьСреднийЗаработокСФР = Истина;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПервыйРасчетныйГодЗаработокНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.ПервыйРасчетныйГодОснование) Тогда
ПоказатьЗначение(, Объект.ПервыйРасчетныйГодОснование);
ИначеЕсли Объект.ИсточникСреднего = ПредопределенноеЗначение("Перечисление.ИсточникиСреднегоДляПособий.УчетФонда") Тогда
ОтборФормы = Новый Структура;
ОтборФормы.Вставить("ГоловнаяОрганизация", ГоловнаяОрганизация);
ОтборФормы.Вставить("ФизическоеЛицо", Объект.ФизическоеЛицо);
ОтборФормы.Вставить("Год", Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод);
ПараметрыФормы = Новый Структура("Отбор", ОтборФормы);
ОткрытьФорму("Документ.ЗапросСреднегоЗаработкаСЭДО.ФормаСписка", ПараметрыФормы, , Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВторойРасчетныйГодЗаработокНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.ВторойРасчетныйГодОснование) Тогда
ПоказатьЗначение(, Объект.ВторойРасчетныйГодОснование);
ИначеЕсли Объект.ИсточникСреднего = ПредопределенноеЗначение("Перечисление.ИсточникиСреднегоДляПособий.УчетФонда") Тогда
ОтборФормы = Новый Структура;
ОтборФормы.Вставить("ГоловнаяОрганизация", ГоловнаяОрганизация);
ОтборФормы.Вставить("ФизическоеЛицо", Объект.ФизическоеЛицо);
ОтборФормы.Вставить("Год", Объект.ПериодРасчетаСреднегоЗаработкаВторойГод);
ПараметрыФормы = Новый Структура("Отбор", ОтборФормы);
ОткрытьФорму("Документ.ЗапросСреднегоЗаработкаСЭДО.ФормаСписка", ПараметрыФормы, , Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении(Элемент)
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияКоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ДолжностьЗамещаласьМенее12МесяцевПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПризнакКомпенсацииОтпускаПриИзменении(Элемент)
ПризнакКомпенсацииОтпускаПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДнейКомпенсацииУдержанияОтпускаПриИзменении(Элемент)
Объект.ФиксКоличествоДнейКомпенсацииОтпуска = Истина;
НастроитьОтображениеДнейКомпенсации(Ложь);
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ВидРасчетаКомпенсацииОсновногоОтпускаПриИзменении(Элемент)
ВидРасчетаКомпенсацииОсновногоОтпускаПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ВыходноеПособиеПриИзменении(Элемент)
УстановитьИспользованиеСреднечасовогоЗаработка();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура УчитыватьМРОТПриОплатеПоСреднемуЗаработкуПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДоначислитьЗарплатуПриНеобходимостиПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПериодЗаКоторыйПредоставляетсяОтпускExtendedTooltipНажатие(Элемент)
СтандартнаяОбработка = Ложь;
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.Сотрудники", "СправкаПоОтпускамСотрудника",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник), ЭтотОбъект,
Новый Структура("ДатаОстатков, ЭтоРасчетПриУвольнении", Объект.ДатаУвольнения, Истина));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПорядокВыплатыПриИзменении(Элемент)
ПорядокВыплатыПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПланируемаяДатаВыплатыПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
УстановитьВидимостьКолонокПрогрессивногоНалога(Объект.ПланируемаяДатаВыплаты);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДокументРассчитанПриИзменении(Элемент)
ДокументРассчитанПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура Сверхурочно1_5ПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура Сверхурочно2ПриИзменении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполненностьДанныхИнформационныйТекстОбработкаНавигационнойСсылки(Элемент,
НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
УчетСреднегоЗаработкаКлиент.ПоказатьПричиныПерерасчетаСреднегоЗаработка(СсылкаНаОбъект,
СтандартнаяОбработка, НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияВосстановлениеВДолжностиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "ПоказатьВосстановлениеВДолжности" Тогда
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(ВосстановлениеВДолжности) Тогда
ПоказатьЗначение(, ВосстановлениеВДолжности);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СправкаНДФЛПредставлениеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Если ЗначениеЗаполнено(СправкаНДФЛ) Тогда
ПараметрыОткрытия = Новый Структура("Ключ", СправкаНДФЛ);
Иначе
ПараметрыОткрытия = Новый Структура("Основание", Объект.Сотрудник);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ОбновитьСправкиСотрудникаНаКлиенте", ЭтотОбъект);
ОткрытьФорму("Документ.СправкаНДФЛ.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, Истина, , , Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИсходящаяСправкаОЗаработкеДляРасчетаПособийПредставлениеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Если ЗначениеЗаполнено(ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
ПараметрыОткрытия = Новый Структура("Ключ", ИсходящаяСправкаОЗаработкеДляРасчетаПособий);
Иначе
ПараметрыОткрытия = Новый Структура("Основание", Объект.Сотрудник);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ОбновитьСправкиСотрудникаНаКлиенте", ЭтотОбъект);
ОткрытьФорму("Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, Истина, , , Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СведенияОТрудовойДеятельностиРаботникаСТД_РПредставлениеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Если ЗначениеЗаполнено(СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
ПараметрыОткрытия = Новый Структура("Ключ", СведенияОТрудовойДеятельностиРаботникаСТД_Р);
Иначе
ПараметрыОткрытия = Новый Структура("Основание", Объект.Сотрудник);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ОбновитьСправкиСотрудникаНаКлиенте", ЭтотОбъект);
ОткрытьФорму("Документ.СведенияОТрудовойДеятельностиРаботникаСТД_Р.ФормаОбъекта", ПараметрыОткрытия, ЭтотОбъект, Истина, , , Оповещение);
КонецЕсли;
КонецПроцедуры
#Область КадровыеРешения
&НаКлиенте
Процедура Подключаемый_РешениеИнфоНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
КадровыеРешенияКлиент.ОбработкаНавигационнойСсылкиРешения(ЭтотОбъект, НавигационнаяСсылка, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыплачиватьКомпенсациюНеотработанныхДнейЧасовПриУвольненииПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнениеКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ДосрочноеУвольнениеКлиентСервер");
МодульДосрочноеУвольнениеКлиентСервер.УвольнениеУстановитьВидимостьПолейВводаКомпенсацииНеотработанныхДней(ЭтотОбъект);
МодульДосрочноеУвольнениеКлиентСервер.УстановитьНеобходимостьРасчетаДнейЧасовКомпенсацииЗаНеотработанноеВремя(ЭтотОбъект);
ЗаполнитьКоличествоДнейЧасовКомпенсацииПриУвольнении();
КонецЕсли;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДатаУведомленияОбУвольнении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнениеКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ДосрочноеУвольнениеКлиентСервер");
МодульДосрочноеУвольнениеКлиентСервер.УстановитьНеобходимостьРасчетаДнейЧасовКомпенсацииЗаНеотработанноеВремя(ЭтотОбъект);
ЗаполнитьКоличествоДнейЧасовКомпенсацииПриУвольнении();
КонецЕсли;
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КоличествоДнейЧасовКомпенсацииПриУвольнении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомпенсацияЗаНеотработанныеДниЧасыПриУвольнении(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаУведомленияОПрекращенииОтпускаПоУходуНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыЗаписи = Новый Структура("РежимЗаписи, ИмяПроцедурыПослеЗаписи");
ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Запись;
ПараметрыЗаписи.ИмяПроцедурыПослеЗаписи = "ОткрытьУведомлениеОПрекращенииПособия";
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
Иначе
ОткрытьУведомлениеОПрекращенииПособия(Неопределено, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтотОбъект, "Объект.МесяцНачалаРасчетов", "МесяцНачалаРасчетовСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("МесяцНачалаРасчетовСтрокойНачалоВыбораЗавершение", ЭтотОбъект);
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, ЭтотОбъект, "Объект.МесяцНачалаРасчетов", "МесяцНачалаРасчетовСтрокой", , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойНачалоВыбораЗавершение(ЗначениеВыбрано, ДополнительныеПараметры) Экспорт
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтотОбъект, "Объект.МесяцНачалаРасчетов", "МесяцНачалаРасчетовСтрокой", Направление, Модифицированность);
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияМесяцНачалаРасчетовПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияМесяцНачалаРасчетовПриИзменении()
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияМесяцНачалаРасчетовПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачалаРасчетовСтрокойОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачислитьЗарплатуПриИзменении(Элемент)
Если Объект.НачислитьЗарплату Тогда
ОбновитьМесяцНачалаРасчетов(ЭтотОбъект);
КонецЕсли;
УстановитьДоступностьМесяцаНачалаРасчетов(ЭтотОбъект);
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ОтразитьВТрудовойКнижкеПриИзменении(Элемент)
УстановитьДоступностьОтображенияВТрудовойКнижке();
Если Не Объект.ОтразитьВТрудовойКнижке Тогда
Элементы.ВторойДокументОснованиеГруппа.Скрыть();
КонецЕсли;
ОбновитьИнформациюОБудущихМероприятиях();
Если Не Объект.УвольнениеСОсновногоМестаРаботы Тогда
ЭлектронныеТрудовыеКнижкиВызовСервера.ЗапомнитьОтражениеВТрудовойКнижкеСовместительств(Объект.ОтразитьВТрудовойКнижке);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеДокументаПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаПриИзменении(Объект.Организация, "Увольнение", Объект.НаименованиеДокумента);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаОбработкаВыбора(
Объект.НаименованиеДокумента, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеДокументаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеВторогоДокументаОснованияПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаПриИзменении(Объект.Организация, "Увольнение", Объект.НаименованиеВторогоДокументаОснования);
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеВторогоДокументаОснованияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеВторогоДокументаОснованияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаОбработкаВыбора(
Объект.НаименованиеВторогоДокументаОснования, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеВторогоДокументаОснованияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЭлектронныеТрудовыеКнижкиКлиент.НаименованиеДокументаАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ДатаВторогоДокументаОснованияПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура СерияВторогоДокументаОснованияПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура НомерВторогоДокументаОснованияПриИзменении(Элемент)
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ПредупреждениеОБудущихМероприятияхТекстВторогоВариантаДекорацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ПриИзмененииБудущихМероприятий", ЭтотОбъект);
ЭлектронныеТрудовыеКнижкиКлиент.ОткрытьРегистрациюОтменыМероприятий(
Объект.Организация, ДанныеРегистраторовБудущихМероприятий, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПредупреждениеОБудущихМероприятияхТекстПервогоВариантаДекорацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ПриИзмененииБудущихМероприятий", ЭтотОбъект);
ЭлектронныеТрудовыеКнижкиКлиент.ОткрытьРегистраторМероприятия(ДанныеРегистраторовБудущихМероприятий, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент");
МодульУчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы["ДекорацияСостояниеОригинала"]);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДополнительныеОтпуска
&НаКлиенте
Процедура ДополнительныеОтпускаВидОтпускаПриИзменении(Элемент)
ДополнительныеОтпускаВидОтпускаПриИзмененииНаСервере(Элементы.ДополнительныеОтпуска.ТекущаяСтрока);
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаВидРасчетаКомпенсацииПриИзменении(Элемент)
РассчитатьСохраняемоеДенежноеСодержание();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаКоличествоДнейКомпенсацииПриИзменении(Элемент)
ДополнительныеОтпускаКоличествоДнейКомпенсацииПриИзмененииНаСервере(Элементы.ДополнительныеОтпуска.ТекущаяСтрока);
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если ИспользуетсяРасчетЗарплаты И РегистрацияНачисленийДоступна Тогда
Если Не ЗначениеЗаполнено(Элемент.ТекущиеДанные.ПризнакКомпенсацииУдержания) Тогда
Элемент.ТекущиеДанные.ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные");
КонецЕсли;
УстановитьТипЗначенияВидаРасчета(Элементы.ДополнительныеОтпуска.ТекущиеДанные, "ПризнакКомпенсацииУдержания", "ВидРасчетаКомпенсацииУдержания");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаПризнакКомпенсацииУдержанияДополнительныхОтпусковПриИзменении(Элемент)
Если ИспользуетсяРасчетЗарплаты И РегистрацияНачисленийДоступна Тогда
УстановитьТипЗначенияВидаРасчета(Элементы.ДополнительныеОтпуска.ТекущиеДанные, "ПризнакКомпенсацииУдержания", "ВидРасчетаКомпенсацииУдержания");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеОтпускаПослеУдаления(Элемент)
ВыполнитьРасчетНачислений();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНачисления
&НаКлиенте
Процедура НачисленияПриИзменении(Элемент)
НачисленияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура НачисленияПриИзмененииНаСервере()
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("НачисленияВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "Начисления", Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияВидРасчетаПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Ложь, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияДатаНачалаПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияДатаОкончанияПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.Начисления.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
Элементы.Начисления.ТекущиеДанные.Сотрудник = Объект.Сотрудник;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "Начисления", Элементы.Начисления.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПередУдалением(Элемент, Отказ)
СотрудникУдаляемойСтроки = Элементы.Начисления.ТекущиеДанные.Сотрудник;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПослеУдаления(Элемент)
РассчитатьСотрудника(СотрудникУдаляемойСтроки, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура НачисленияРезультатПриИзменении(Элемент)
ОбновитьНачисленоИтог(ЭтотОбъект, НачисленияГрупп());
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПособия
&НаКлиенте
Процедура ПособияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("ПособияВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПособияВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "Пособия", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПередУдалением(Элемент, Отказ)
СотрудникУдаляемойСтроки = Элементы.Пособия.ТекущиеДанные.Сотрудник;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.Пособия.ТекущиеДанные.Сотрудник = Объект.Сотрудник;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "Пособия", Элементы.Пособия.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПослеУдаления(Элемент)
РассчитатьСотрудника(СотрудникУдаляемойСтроки, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПособияНачислениеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияДатаНачалаПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияДатаОкончанияПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), Ложь, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.Пособия.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, Элементы.Пособия.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура ПособияПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.Пособия.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПособияПерерасчет
&НаКлиенте
Процедура ПособияПерерасчетВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("ПособияПерерасчетВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "ПособияПерерасчет", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПередУдалением(Элемент, Отказ)
СотрудникУдаляемойСтроки = Элементы.ПособияПерерасчет.ТекущиеДанные.Сотрудник;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.ПособияПерерасчет.ТекущиеДанные.Сотрудник = Объект.Сотрудник;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "ПособияПерерасчет", Элементы.ПособияПерерасчет.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПослеУдаления(Элемент)
РассчитатьСотрудника(СотрудникУдаляемойСтроки, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетНачислениеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетДатаНачалаПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетДатаОкончанияПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), Ложь, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.ПособияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, Элементы.ПособияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.ПособияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУдержания
&НаКлиенте
Процедура УдержанияПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "Удержания", Истина);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияУдержаниеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияДокументОснованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыРасширенныйКлиент.УстановитьОграничениеТипаДокументаУдержанияПоКатегории(
Элемент, Элементы.Удержания.ТекущиеДанные, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.Удержания.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "Удержания", Элементы.Удержания.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Удержания",
Объект.ФизическоеЛицо,
,
ТекущиеДанные.Удержание);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Удержания",
Объект.ФизическоеЛицо,
,
ТекущиеДанные.Удержание);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПослеУдаления(Элемент)
РассчитатьСотрудникаНаСервере(Объект.Сотрудник, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура УдержанияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНдфл
&НаКлиенте
Процедура НДФЛПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "НДФЛ", Истина);
УчетНДФЛКлиент.НДФЛПриАктивизацииСтроки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПередНачаломИзменения(Элемент, Отказ)
УчетНДФЛКлиент.НДФЛПередНачаломИзменения(ЭтотОбъект, Элементы.НДФЛ.ТекущиеДанные, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПередУдалением(Элемент, Отказ)
НДФЛВыделенныеСтроки = Новый Массив;
Для Каждого ИдентификаторСтрок ИЗ Элементы.НДФЛ.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.НДФЛ.НайтиПоИдентификатору(ИдентификаторСтрок);
Если СтрокаТаблицы <> Неопределено Тогда
НДФЛВыделенныеСтроки.Добавить(СтрокаТаблицы.ИдентификаторСтрокиНДФЛ);
КонецЕсли;
КонецЦикла;
УчетНДФЛКлиент.НДФЛПередУдалением(ЭтаФорма, НДФЛВыделенныеСтроки, Отказ);
СотрудникУдаляемойСтроки = Элементы.НДФЛ.ТекущиеДанные.ФизическоеЛицо;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(ИзмененныеДанные, "НДФЛ", Объект.ФизическоеЛицо);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПослеУдаления(Элемент)
УчетНДФЛКлиентРасширенный.УдалитьПримененныеВычеты(ЭтотОбъект);
УчетНДФЛФормыКлиентСервер.УдалитьУчтенныеПриРасчетеНДФЛДокументы(Объект.НДФЛ, Объект.УчтенныеПриРасчетеНДФЛДокументы,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СотрудникУдаляемойСтроки));
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(ИзмененныеДанные, "НДФЛ", Объект.ФизическоеЛицо);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Если ИспользоватьСтатьиФинансирования Тогда
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ПерераспределитьНДФЛ(ТекущиеДанные, РаботаВБюджетномУчреждении);
КонецЕсли;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(РегистрацияНачисленийДоступна), , Ложь);
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
УчетНДФЛКлиент.НДФЛУстановитьДоступностьЭлементовЛичныхВычетов(ЭтотОбъект);
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.НДФЛ.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "НДФЛ", Элементы.НДФЛ.ТекущиеДанные, НоваяСтрока, Копирование);
УчетНДФЛКлиент.НДФЛПриНачалеРедактирования(ЭтотОбъект, Элементы.НДФЛ.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыЛичныеПриИзменении(Элемент)
УчетНДФЛКлиент.НДФЛПриОкончанииРедактирования(ЭтотОбъект);
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(РегистрацияНачисленийДоступна), , Ложь);
УчетНДФЛКлиент.НДФЛУстановитьДоступностьЭлементовЛичныхВычетов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НДФЛВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПримененныеВычетыКДоходам
&НаКлиенте
Процедура Подключаемый_ВычетыКДоходамПередНачаломИзменения(Элемент, Отказ, Копирование, Родитель, Группа)
УчетНДФЛКлиентРасширенный.ПримененныеВычетыКДоходам(ЭтотОбъект, Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыКДоходамПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ВычетыПриОкончанииРедактирования(Элемент.ТекущиеДанные, ОтменаРедактирования, "ФизическоеЛицо,Подразделение");
ОбновитьПредставлениеВычетовКДоходамСтрокиНДФЛ();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПримененныеВычетыНаДетейИИмущественные
&НаКлиенте
Процедура Подключаемый_ВычетыНаДетейИИмущественныеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
УчетНДФЛКлиент.МожноИзменятьПримененныеВычеты(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыНаДетейИИмущественныеПередНачаломИзменения(Элемент, Отказ)
УчетНДФЛКлиентРасширенный.ПримененныеВычетыНаДетейИИмущественныеПередНачаломИзменения(ЭтотОбъект, Элемент, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыНаДетейИИмущественныеПередУдалением(Элемент, Отказ)
УчетНДФЛКлиент.МожноИзменятьПримененныеВычеты(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыНаДетейИИмущественныеПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
УчетНДФЛКлиент.ВычетыПриНачалеРедактирования(Элемент.ТекущиеДанные, НоваяСтрока, Элементы.НДФЛ.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВычетыНаДетейИИмущественныеПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ВычетыПриОкончанииРедактирования(Элемент.ТекущиеДанные, ОтменаРедактирования, "ИдентификаторСтрокиНДФЛ");
ОбновитьПредставлениеВычетовНаДетейИИмущественныхСтрокиНДФЛ();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНачисленияПерерасчет
&НаКлиенте
Процедура НачисленияПерерасчетПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("НачисленияПерерасчетВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "НачисленияПерерасчет", Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
РасчетЗарплатыРасширенныйКлиент.ПередНачаломДобавленияСтрокиПерерасчета(Элемент, Отказ, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередУдалением(Элемент, Отказ)
РасчетЗарплатыРасширенныйКлиент.ПередУдалениемСтрокиПерерасчета(ЭтотОбъект, "НачисленияПерерасчет", Элемент, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
ДобавитьИзмененныеДанныеПерерасчета(Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.НачисленияПерерасчет.ТекущиеДанные.Сотрудник = Объект.Сотрудник;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "НачисленияПерерасчет", Элементы.НачисленияПерерасчет.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ДобавитьИзмененныеДанныеПерерасчета(Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПослеУдаления(Элемент)
ПослеУдаленияПерерасчета();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетНачислениеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетРезультатПриИзменении(Элемент)
ОбновитьПерерасчетИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетДатаНачалаПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетДатаОкончанияПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Ложь, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПогашениеЗаймов
&НаКлиенте
Процедура ПогашениеЗаймовПриИзменении(Элемент)
ПогашениеЗаймовПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПогашениеЗаймовПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.ПогашениеЗаймов.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПогашениеЗаймовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПогашениеЗаймовПослеУдаления(Элемент)
ОбновитьУдержаноИтог(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПогашениеЗаймовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПогашениеЗаймов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВзносы
&НаКлиенте
Процедура ВзносыПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура ВзносыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если Не НоваяСтрока Тогда
Возврат;
КонецЕсли;
Элементы.Взносы.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
ТекущиеДанные = Элементы.Взносы.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ТекущиеДанные.ДатаПолученияДохода = КонецМесяца(Объект.ПериодРегистрации);
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ТекущиеДанные, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВзносыДатаПолученияДоходаПриИзменении(Элемент)
ДанныеТекущейСтроки = Элементы.Взносы.ТекущиеДанные;
УчетСтраховыхВзносовКлиент.ВзносыДатаПолученияДоходаСтрокойПриИзменении(ДанныеТекущейСтроки, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ВзносыДатаПолученияДоходаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДанныеТекущейСтроки = Элементы.Взносы.ТекущиеДанные;
УчетСтраховыхВзносовКлиент.ВзносыДатаПолученияДоходаСтрокойНачалоВыбора(ЭтотОбъект, ДанныеТекущейСтроки, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура ВзносыДатаПолученияДоходаРегулирование(Элемент, Направление, СтандартнаяОбработка)
УчетСтраховыхВзносовКлиент.ВзносыДатаПолученияДоходаСтрокойРегулирование(
Элементы.Взносы.ТекущиеДанные,
"ДатаПолученияДохода",
"ДатаПолученияДоходаСтрокой",
Направление,
Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ВзносыДатаПолученияДоходаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВзносыДатаПолученияДоходаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыКорректировкиВыплаты
&НаКлиенте
Процедура КорректировкиВыплатыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(
КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыКорректировкиВыплаты(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура КорректировкиВыплатыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.КорректировкиВыплаты.ТекущиеДанные.ФизическоеЛицо = Объект.ФизическоеЛицо;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КорректировкиВыплатыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Если ИспользоватьСтатьиФинансирования Тогда
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ПерераспределитьКорректировкиВыплаты(ТекущиеДанные, РаботаВБюджетномУчреждении);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЛьготы
&НаКлиенте
Процедура ЛьготыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("ЛьготыВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "Льготы", Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПередУдалением(Элемент, Отказ)
СотрудникУдаляемойСтроки = Элементы.Льготы.ТекущиеДанные.Сотрудник;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элементы.Льготы.ТекущиеДанные.Сотрудник = Объект.Сотрудник;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "Льготы", Элементы.Льготы.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПослеУдаления(Элемент)
РассчитатьСотрудника(СотрудникУдаляемойСтроки, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыНачислениеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Ложь, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыРезультатПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыДатаНачалаПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеТаблицыВидовРасчета, Истина, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыДатаОкончанияПриИзменении(Элемент)
ОбновитьНачисленоИтог(ЭтотОбъект, НачисленияГрупп());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыКадровыйРезерв
&НаКлиенте
Процедура Подключаемый_КадровыйРезервПриАктивизацииСтроки(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
МодульКлиент.КадровыйРезервПриАктивизацииСтрокиДляОбщихДокументов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУправленческиеНачисления
&НаКлиенте
Процедура УправленческиеНачисленияПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтотОбъект, "УправленческиеНачисления", Истина);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтотОбъект, "УправленческиеНачисления", Элементы.УправленческиеНачисления.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриОкончанииРедактированияСтрокиНачисленияЗарплаты(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПередУдалением(Элемент, Отказ)
СотрудникУдаляемойСтроки = Элементы.УправленческиеНачисления.ТекущиеДанные.Сотрудник;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПослеУдаления(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПослеУдаленияСтрокиНачисленияЗарплаты(ЭтотОбъект, СотрудникУдаляемойСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияНачислениеПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриИзмененииНачисленияСтрокиНачисленияЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияДатаНачалаПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриИзмененииДатыНачалаСтрокиНачисленияЗарплаты(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияДатаОкончанияПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриИзмененииДатыОкончанияСтрокиНачисленияЗарплаты(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.УправленческиеНачисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтотОбъект, Элементы.УправленческиеНачисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.УправленческиеНачисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура УправленческиеНачисленияПодробно(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриНажатииКнопкиПоказатьПодробностиРасчета(ЭтотОбъект, Элементы.УправленческиеНачисленияПодробно);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_УправленческиеНачисленияОтменитьИсправление(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправленческаяЗарплатаКлиент");
МодульУправленческаяЗарплатаКлиент.ПриОтменеИсправленияНачисленияЗарплаты(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьВосстановлениеВДолжности()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументУвольнения", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВосстановлениеВДолжности.Ссылка,
| ВосстановлениеВДолжности.ОснованиеВосстановленияВДолжности,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ВосстановлениеВДолжности.Ссылка)
|ИЗ
| Документ.ВосстановлениеВДолжности КАК ВосстановлениеВДолжности
|ГДЕ
| ВосстановлениеВДолжности.ДокументУвольнения = &ДокументУвольнения
| И ВосстановлениеВДолжности.Проведен
|
|УПОРЯДОЧИТЬ ПО
| ВосстановлениеВДолжности.Дата";
Если РедактированиеСтрокиСписочногоДокумента Тогда
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И ВосстановлениеВДолжности.Проведен",
"И ВосстановлениеВДолжности.Проведен
| И ВосстановлениеВДолжности.Сотрудник = &Сотрудник");
КонецЕсли;
ВидимостьГруппыВосстановлениеВДолжности = Ложь;
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ТолькоПросмотр = Истина;
ВидимостьГруппыВосстановлениеВДолжности = Истина;
ВосстановлениеВДолжности = Выборка.Ссылка;
ТекстЗаголовка = Новый ФорматированнаяСтрока(
НСтр("ru='Действие приказа отменено в связи с'") + " ",
Выборка.ОснованиеВосстановленияВДолжности + ", " + НСтр("ru='см'") + ". ",
Новый ФорматированнаяСтрока(Выборка.СсылкаПредставление, , , , "ПоказатьВосстановлениеВДолжности"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ДекорацияВосстановлениеВДолжности",
"Заголовок",
ТекстЗаголовка);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ГруппаВосстановлениеВДолжности",
"Видимость",
ВидимостьГруппыВосстановлениеВДолжности);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоказателиПереработокСуммированногоУчета(МенеджерРасчета)
Если Не ИспользоватьОплатуПереработокСуммированногоУчета Тогда
Возврат;
КонецЕсли;
ПереработаноВПределах2Часов = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.ПереработаноПоСуммированномуУчетуВПределах2Часов");
Переработано = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.ПереработаноПоСуммированномуУчету");
Если ПереработаноВПределах2Часов = Неопределено Или Переработано = Неопределено Тогда
Возврат;
КонецЕсли;
Если Объект.Сверхурочно1_5 > 0 Тогда
МенеджерРасчета.ДобавитьЗначениеОпределяющегоПоказателя(
Объект.Сотрудник,
Объект.Организация,
ПереработаноВПределах2Часов,
Объект.Сверхурочно1_5,
НачалоМесяца(Объект.ДатаУвольнения));
КонецЕсли;
Если Объект.Сверхурочно1_5 + Объект.Сверхурочно2 > 0 Тогда
МенеджерРасчета.ДобавитьЗначениеОпределяющегоПоказателя(
Объект.Сотрудник,
Объект.Организация,
Переработано,
Объект.Сверхурочно1_5 + Объект.Сверхурочно2,
НачалоМесяца(Объект.ДатаУвольнения));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РасчетДенежногоСодержанияПриИзмененииНаСервере()
ОчиститьДанныеСреднегоЗаработка();
ОчиститьНачисления();
ОбновитьФормуПоВидуДоговора();
ЗаполнитьПериодРасчетаСреднегоЗаработка();
ЗаполнитьПериодРасчетаСреднегоЗаработкаФСС();
КонецПроцедуры
&НаКлиенте
Процедура РасчетДенежногоСодержанияПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
РасчетДенежногоСодержанияПриИзмененииНаСервере();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПричинаУвольненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АнализТекучестиПерсонала") И НЕ Объект.Сотрудник.Пустая() Тогда
МодульАнализТекучестиПерсоналаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("АнализТекучестиПерсоналаКлиент");
МодульАнализТекучестиПерсоналаКлиент.ОткрытьФормуВводаПричинУвольнения(ЭтотОбъект, Объект.Сотрудник);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПричинуУвольнения()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АнализТекучестиПерсонала") Тогда
МодульАнализТекучестиПерсонала = ОбщегоНазначения.ОбщийМодуль("АнализТекучестиПерсонала");
МодульАнализТекучестиПерсонала.ОбновитьПричинуУвольнения(ЭтотОбъект, Объект.Сотрудник);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьВидимостьПричиныУвольнения()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.АнализТекучестиПерсонала") Тогда
МодульАнализТекучестиПерсонала = ОбщегоНазначения.ОбщийМодуль("АнализТекучестиПерсонала");
МодульАнализТекучестиПерсонала.ОбновитьВидимостьПричиныУвольнения(ЭтотОбъект, Объект.Сотрудник);
МодульАнализТекучестиПерсонала.ОбновитьПричинуУвольнения(ЭтотОбъект, Объект.Сотрудник);
Иначе
Элементы.ПричинаУвольнения.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПричинаУвольненияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаСервере
Функция ПроинициализированныйМенеджерРасчета(ПериодЗаполнения, Сотрудники)
Если ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент)
Или Объект.МесяцНачалаРасчетов = НачалоМесяца(Объект.ДатаУвольнения) Тогда
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
Иначе
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчетаПоПериоду(ПериодЗаполнения, Объект.Организация);
КонецЕсли;
МенеджерРасчета.НастройкиРасчета.Сотрудники = Сотрудники;
Для Каждого Сотрудник Из Сотрудники Цикл
МенеджерРасчета.ДобавитьДатуЗавершенияРаботы(Сотрудник, Объект.ДатаУвольнения);
КонецЦикла;
МенеджерРасчета.ДополнительныеСвойства.Вставить("ДанныеДляУчетаПособийПриУвольнении", ДанныеДляУчетаПособийПриУвольнении());
ИсправлениеДокументовРасчетЗарплаты.НастроитьМенеджерРасчета(МенеджерРасчета, ЭтаФорма, ОписаниеДокумента(ЭтаФорма));
МенеджерРасчета.ИсключаемыйРегистратор = СсылкаНаОбъект;
Возврат МенеджерРасчета;
КонецФункции
&НаСервере
Функция СотрудникиДокумента()
Сотрудники = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодработки") И Сотрудники <> Неопределено Тогда
ПараметрыПолученияПодработок = КадровыйУчет.ПараметрыДляЗапросВТРабочиеМестаСотрудниковПоСпискуСотрудников(Сотрудники, , КонецМесяца(Объект.ПериодРегистрации));
МассивПодработок = КадровыйУчетРасширенный.ПодработкиСотрудников(Истина, ПараметрыПолученияПодработок);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Сотрудники, МассивПодработок, Истина);
КонецЕсли;
Возврат Сотрудники;
КонецФункции
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ОбновитьПодключаемыеКоманды(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
#Область ОбработчикиСобытийПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Команда, Объект)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Контекст, Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийСледующемуНачалоВыбора(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_Исправить(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.Исправить(ЭтотОбъект, СсылкаНаОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПерейтиКИсправлению(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.ПерейтиКИсправлению(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПерейтиКИсправленному(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.ПерейтиКИсправленному(ЭтотОбъект, СсылкаНаИсправленныйДокумент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)
БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура РаспределитьЗависимыеРезультаты(ПараметрыДляРаспределения) Экспорт
Если ПараметрыДляРаспределения.РаспределятьЗависимыеТаблицы Тогда
ОбновитьБухучетРезультатовРасчетаНаСервере(ПараметрыДляРаспределения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачисленияОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачисленияПерерасчетОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачисленияПерерасчетРазрешеноРедактироватьСторно(Команда)
РасчетЗарплатыРасширенныйКлиент.НастроитьРедактированиеСторно(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПособияОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПособияПерерасчетОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_УдержанияОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НДФЛОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьНачисленияСотрудника(Сотрудники, СохранятьИсправления = Истина) Экспорт
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени("РасчетДокументаУвольнение");
РассчитатьНачисленияНаСервере();
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьНачисления(Команда) Экспорт
ВыполнитьОбработчикиОжиданияФормы();
ОчиститьСообщения();
ОбновитьРасчетДенежногоСодержания = ОбновитьРасчетДенежногоСодержания Или Не РасчетДенежногоСодержанияРедактировался;
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект)) Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени("РасчетДокументаУвольнение");
РассчитатьНачисленияНаСервере(Истина);
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтотОбъект);
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработок(Команда)
Оповещение = Новый ОписаниеОповещения("ОткрытьСреднийЗаработокЗавершение", ЭтотОбъект);
УчетСреднегоЗаработкаКлиент.ОткрытьФормуВводаСреднегоЗаработкаОбщий(ПараметрыРедактированияСреднегоЗаработка(КадровыйУчетРасширенныйКлиентСервер.ЭтоСреднечасовойЗаработокВДокументеУвольнение(), Ложь), ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования <> Неопределено Тогда
ПерезаполнятьСреднийЗаработок = Ложь;
ПеренестиДанныеУчетаСреднегоЗаработкаВДокумент(РезультатРедактирования);
ВыполнитьРасчетНачислений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокВыходногоПособия(Команда)
Оповещение = Новый ОписаниеОповещения("ОткрытьСреднийЗаработокВыходногоПособияЗавершение", ЭтотОбъект);
УчетСреднегоЗаработкаКлиент.ОткрытьФормуВводаСреднегоЗаработкаОбщий(ПараметрыРедактированияСреднегоЗаработка(ИспользуетсяСреднечасовойЗаработок, Истина), ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокВыходногоПособияЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования <> Неопределено Тогда
ПерезаполнятьСреднийЗаработок = Ложь;
ПеренестиДанныеУчетаСреднегоЗаработкаВДокумент(РезультатРедактирования);
ВыполнитьРасчетНачислений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокСФР(Команда)
Оповещение = Новый ОписаниеОповещения("ОткрытьСреднийЗаработокСФРЗавершение", ЭтотОбъект);
УчетСреднегоЗаработкаКлиент.ОткрытьФормуВводаСреднегоЗаработкаФСС(ПараметрыРедактированияСреднегоЗаработкаФСС(), ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокСФРЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования = Неопределено Тогда
Возврат;
КонецЕсли;
ПерезаполнятьСреднийЗаработокСФР = Ложь;
ПеренестиДанныеУчетаСреднегоЗаработкаФССВДокумент(РезультатРедактирования);
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДенежноеСодержание(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Оповещение = Новый ОписаниеОповещения("ОткрытьОткрытьДенежноеСодержаниеЗавершение", ЭтотОбъект);
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("РасчетДенежногоСодержанияКлиент");
Модуль.ОткрытьФормуВводаСохраняемогоДенежногоСодержания(СтруктураОбъекта, "Увольнение", ОпределитьПравилаРасчетаКомпенсацииОтпуска(), ЭтаФорма, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДенежноеСодержаниеВыходногоПособия(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Оповещение = Новый ОписаниеОповещения("ОткрытьОткрытьДенежноеСодержаниеЗавершение", ЭтотОбъект);
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("РасчетДенежногоСодержанияКлиент");
Модуль.ОткрытьФормуВводаСохраняемогоДенежногоСодержания(СтруктураОбъекта, "Увольнение","ВыходноеПособие", ЭтаФорма, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьОткрытьДенежноеСодержаниеЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования <> Неопределено Тогда
ОбновитьДанныеДляРасчетаСохраняемогоЗаработка = Ложь;
РасчетДенежногоСодержанияРедактировался = РасчетДенежногоСодержанияРедактировался(Объект.ДенежноеСодержание);
ВыполнитьРасчетНачислений();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОпределитьПравилаРасчетаКомпенсацииОтпуска() Экспорт
РасчетПоДенежномуСодержанию = Ложь;
НазначениеРасчетаСтрока = "СохраняемоеДенежноеСодержание";
ПоказательДенежноеСодержание = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СохраняемоеДенежноеСодержание");
Если (Объект.ПризнакКомпенсацииУдержанияОтпуска <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать)
И ЗначениеЗаполнено(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска) Тогда
РасчетПоДенежномуСодержанию =
ВидаРасчетаСодержитПоказатель(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска, ПоказательДенежноеСодержание);
ИначеЕсли Объект.ДополнительныеОтпуска.Количество() > 0 Тогда
Для Каждого СтрокаКомпенсацииДополнительногоОтпуска Из Объект.ДополнительныеОтпуска Цикл
Если (СтрокаКомпенсацииДополнительногоОтпуска.ПризнакКомпенсацииУдержания <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать)
И ЗначениеЗаполнено(СтрокаКомпенсацииДополнительногоОтпуска.ВидРасчетаКомпенсацииУдержания) Тогда
РасчетПоДенежномуСодержанию =
ВидаРасчетаСодержитПоказатель(СтрокаКомпенсацииДополнительногоОтпуска.ВидРасчетаКомпенсацииУдержания, ПоказательДенежноеСодержание);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если РасчетПоДенежномуСодержанию Тогда
НазначениеРасчетаСтрока = "ЕжегодныйОтпуск"
КонецЕсли;
Возврат НазначениеРасчетаСтрока;
КонецФункции
&НаСервере
Функция ВидаРасчетаСодержитПоказатель(ВидРасчета, Показатель)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ВидРасчета);
Запрос.УстановитьПараметр("Показатель", Показатель);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| НачисленияПоказатели.Показатель КАК Показатель
|ИЗ
| ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
|ГДЕ
| НачисленияПоказатели.Ссылка = &Ссылка
| И НачисленияПоказатели.Показатель = &Показатель
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| УдержанияПоказатели.Показатель
|ИЗ
| ПланВидовРасчета.Удержания.Показатели КАК УдержанияПоказатели
|ГДЕ
| УдержанияПоказатели.Ссылка = &Ссылка
| И УдержанияПоказатели.Показатель = &Показатель";
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
Возврат Не РезультатЗапроса.Пустой();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция РасчетДенежногоСодержанияРедактировался(ДенежноеСодержание)
Для каждого СтрокаТЧ Из ДенежноеСодержание Цикл
Если СтрокаТЧ.ФиксРасчет Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Функция ПараметрыРедактированияСреднегоЗаработка(ЭтоСреднечасовойЗаработок, ЭтоВыходноеПособие)
ПараметрыРедактирования = УчетСреднегоЗаработкаКлиентСервер.ПараметрыРедактированияОбщегоСреднегоЗаработкаПоДокументу();
ПараметрыРедактирования.ДокументСсылка = СсылкаНаОбъект;
ПараметрыРедактирования.Сотрудник = Объект.Сотрудник;
ПараметрыРедактирования.Организация = Объект.Организация;
ПараметрыРедактирования.ДатаНачалаСобытия = Объект.ДатаУвольнения + 86400;
Если ЭтоУвольнениеВПоследнийДеньМесяца(Объект) Тогда
ПараметрыРедактирования.ДатаНачалаСобытия = НачалоМесяца(ДобавитьМесяц(Объект.ДатаУвольнения, 1));
КонецЕсли;
Если ЭтоВыходноеПособие Тогда
ПараметрыРедактирования.Начисление = Объект.ВыходноеПособие;
Иначе
ПараметрыРедактирования.Начисление = Объект.ВидРасчетаКомпенсацииУдержанияОтпуска;
СпособыРасчета = Новый Массив;
Для Каждого СпособРасчета Из СпособыРасчетаСреднегоЗаработка Цикл
СпособыРасчета.Добавить(СпособРасчета.Значение);
КонецЦикла;
ПараметрыРедактирования.СпособыРасчета = СпособыРасчета;
КонецЕсли;
ПараметрыРедактирования.НачалоПериодаРасчета = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ПараметрыРедактирования.ОкончаниеПериодаРасчета = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ПараметрыРедактирования.ЭтоСреднечасовойЗаработок = ЭтоСреднечасовойЗаработок;
ПараметрыРедактирования.ФиксПериодРасчета = Объект.ФиксПериодРасчетаСреднегоЗаработка;
Если РассчитыватьСреднийЗаработокПриЗаполненииДокумента() Тогда
ДанныеДляПроведения = ДанныеДокументаДляПроведения();
ДанныеДляПроведения.МенеджерВременныхТаблиц = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПослеПодготовкиДанныхДляПроведенияДокументаРасчетаЗарплаты(ДанныеДляПроведения);
КонецЕсли;
ПараметрыРедактирования.ДокументВладелецДанныеАдрес = ПоместитьВоВременноеХранилище(ДанныеДляПроведения, Новый УникальныйИдентификатор);
КонецЕсли;
УчетСреднегоЗаработка.ЗаполнитьТаблицыДанныхСреднегоЗаработкаПоДокументу(Объект, ПараметрыРедактирования);
Возврат ПараметрыРедактирования;
КонецФункции
&НаСервере
Функция ПараметрыРедактированияСреднегоЗаработкаФСС()
ПараметрыРедактирования = УчетПособийСоциальногоСтрахованияКлиентСервер.ПараметрыРедактированияСреднегоЗаработкаФССПоДокументу();
ПараметрыРедактирования.ДокументСсылка = Объект.Ссылка;
ПараметрыРедактирования.Сотрудник = Объект.Сотрудник;
ПараметрыРедактирования.Организация = Объект.Организация;
ПараметрыРедактирования.ДатаНачалаСобытия = Объект.ДатаУвольнения;
ПараметрыРедактирования.НачалоПериодаРасчета = Дата(?(Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = 0, 1, Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод), 1, 1);
ПараметрыРедактирования.ОкончаниеПериодаРасчета = Дата(?(Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = 0, 1, Объект.ПериодРасчетаСреднегоЗаработкаВторойГод), 12, 31);
ПараметрыРедактирования.ФиксПериодРасчета = Объект.ФиксПериодРасчетаСреднегоЗаработкаСФР;
ПараметрыРедактирования.ГодыПериодаРасчета = УчетПособийСоциальногоСтрахования.ГодыПериодаРасчетаСреднего(Объект);
ПараметрыРедактирования.ПорядокРасчета = ПорядокРасчетаСреднегоЗаработкаФСС();
ПараметрыРедактирования.ПараметрыРасчета = ПараметрыРасчетаСреднегоДневногоЗаработкаФСС();
ПараметрыРедактирования.ИспользоватьДниБолезниУходаЗаДетьми = ПараметрыРедактирования.ПараметрыРасчета.ИспользоватьДниБолезниУходаЗаДетьми;
ПараметрыРедактирования.УчитыватьЗаработокПредыдущихСтрахователей = Объект.УчитыватьЗаработокПредыдущихСтрахователей;
УчетПособийСоциальногоСтрахованияРасширенный.ЗаполнитьТаблицыДанныхСреднегоЗаработкаФССПоДокументу(Объект, ПараметрыРедактирования);
Возврат ПараметрыРедактирования;
КонецФункции
&НаСервере
Функция ДанныеДокументаДляПроведения()
ОтменятьТранзакцию = Ложь;
Если Не ТранзакцияАктивна() Тогда
НачатьТранзакцию();
ОтменятьТранзакцию = Истина;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ДокументОбъект = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(ДокументОбъект);
Если Не СсылкаНаОбъект.Пустая() Тогда
КопияДокумента = ОбщегоНазначенияБЗК.СкопироватьДокументБезБизнесЛогики(ДокументОбъект);
Иначе
КопияДокумента = ДокументОбъект;
КонецЕсли;
ВременнаяСсылка = Документы.Увольнение.ПолучитьСсылку();
КопияДокумента.УстановитьСсылкуНового(ВременнаяСсылка);
КопияДокумента.ДополнительныеСвойства.Вставить("ПроцессыОбработкиДокументов_ЗаписатьБезПроверкиИсполнителяЭтапа");
КопияДокумента.Записать(РежимЗаписиДокумента.Запись);
УстановитьПривилегированныйРежим(Ложь);
РеквизитыДляПроведения = Документы.Увольнение.РеквизитыДляПроведения(КопияДокумента.Ссылка);
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Документы.Увольнение.СоздатьВТКадровыеДанныеУвольняемыхСотрудников(МенеджерВременныхТаблиц, КопияДокумента.Ссылка);
ДанныеДляПроведения = Документы.Увольнение.ДанныеДляПроведения(РеквизитыДляПроведения, МенеджерВременныхТаблиц, Объект.ПериодРегистрации, Объект.Организация);
ДанныеДляПроведения.Вставить("ДокументСсылка", КопияДокумента.Ссылка);
ДанныеДляПроведения.Вставить("ПериодРегистрации", Объект.ПериодРегистрации);
ИсправлениеДокументовЗарплатаКадры.ДополнитьДанныеДляВременнойРегистрации(ДанныеДляПроведения, ЭтотОбъект);
Если ОтменятьТранзакцию Тогда
ОтменитьТранзакцию();
КонецЕсли;
Возврат ДанныеДляПроведения;
КонецФункции
&НаКлиенте
Процедура НачисленияПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.НачисленияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.НачисленияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПособияПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.ПособияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.ПособияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПособияПерерасчетПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.ПособияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.ПособияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ЛьготыПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.ЛьготыПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.ЛьготыПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура УдержанияПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.УдержанияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.УдержанияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПерерасчетПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Не Элементы.НачисленияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(СсылкаНаОбъект, Элементы.НачисленияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура РегистрНалоговогоУчетаПоНДФЛ(Команда)
НДФЛТекущиеДанные = Элементы.НДФЛ.ТекущиеДанные;
Если НДФЛТекущиеДанные <> Неопределено Тогда
РегистрНалоговогоУчетаПоНДФЛ = НДФЛПодробнееНаСервере(НДФЛТекущиеДанные.ФизическоеЛицо);
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Отчет.РегистрНалоговогоУчетаПоНДФЛ", "РегистрНалоговогоУчетаПоНДФЛ",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка), ЭтотОбъект, Новый Структура("ПечатаемыйДокумент", РегистрНалоговогоУчетаПоНДФЛ));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КарточкаУчетаПоСтраховымВзносам(Команда)
ВзносыТекущиеДанные = Элементы.Взносы.ТекущиеДанные;
Если ВзносыТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КарточкаУчетаПоСтраховымВзносам = КарточкаУчетаПоСтраховымВзносамНаСервере(ВзносыТекущиеДанные.ФизическоеЛицо);
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(
"Отчет.КарточкаУчетаПоСтраховымВзносам",
"КарточкаУчетаПоСтраховымВзносамПодробнее",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка),
ЭтотОбъект,
Новый Структура("ПечатаемыйДокумент", КарточкаУчетаПоСтраховымВзносам));
КонецПроцедуры
&НаКлиенте
Процедура ОК(Команда)
ЗавершитьРедактированиеСтрокиДокумента();
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьРедактированиеСтрокиДокумента()
ОчиститьСообщения();
Отказ = Ложь;
Если Модифицированность Тогда
Если Не ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
Если Не Отказ Тогда
ПроверитьПересечениеПериодовОтсутствияНаКлиенте(Отказ, Неопределено, Истина);
КонецЕсли;
Если Не Отказ Тогда
ОписаниеДокумента = СтруктураСОписаниемДокумента();
Модифицированность = Ложь;
КонецЕсли;
Иначе
ОписаниеДокумента = Неопределено;
КонецЕсли;
Если Не Отказ Тогда
Закрыть(ОписаниеДокумента);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандаПровестиИЗакрыть(Команда)
ВыполнитьОбработчикиОжиданияФормы();
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ЗаписатьНаКлиенте(Истина, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура КомандаПровести(Команда)
ВыполнитьОбработчикиОжиданияФормы();
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура КомандаЗаписать(Команда)
ВыполнитьОбработчикиОжиданияФормы();
ПараметрыЗаписи = Новый Структура("РежимЗаписи", ?(Объект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьПределДоходаНеОблагаемогоВзносами(Команда)
Объект.ФиксПределДоходаНеОблагаемогоСтраховымиВзносами = Ложь;
РассчитатьПределДоходаНеОблагаемогоСтраховымиВзносами();
ВыполнитьРасчетНачислений();
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьПределДоходаНеОблагаемогоНДФЛ(Команда)
Объект.ФиксПределДоходаНеОблагаемогоНДФЛ = Ложь;
РассчитатьПределДоходаНеОблагаемогоНДФЛ();
ВыполнитьРасчетНачислений();
КонецПроцедуры
#Область Подключаемый_КадровыйРезерв
&НаКлиенте
Процедура Подключаемый_КадровыйРезервОставить(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
МодульКлиент.КадровыйРезервОставитьДляОбщихДокументов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КадровыйРезервИсключить(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КадровыйРезервКлиент");
МодульКлиент.КадровыйРезервИсключитьДляОбщихДокументов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания()
ОписаниеДокумента = ОписаниеДокумента(ЭтаФорма);
ОбъектСтруктура = Новый Структура;
ОбъектСтруктура.Вставить("Ссылка", Объект.Ссылка);
ОбъектСтруктура.Вставить("Сотрудник", Объект.Сотрудник);
ОбъектСтруктура.Вставить("Организация", Объект.Организация);
ОбъектСтруктура.Вставить("ПериодРегистрации", Объект.ПериодРегистрации);
ОбъектСтруктура.Вставить("ДатаНачалаСобытия", Объект.ДатаУвольнения);
ОбъектСтруктура.Вставить("ДенежноеСодержание", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.ДенежноеСодержание.Выгрузить()));
ОбъектСтруктура.Вставить("ДенежноеСодержаниеФактическиеНачисления", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.ДенежноеСодержаниеФактическиеНачисления.Выгрузить()));
ОбъектСтруктура.Вставить("КоэффициентыРаспределенияДенежногоСодержания", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.КоэффициентыРаспределенияДенежногоСодержания.Выгрузить()));
ОбъектСтруктура.Вставить("ПериодРасчетаСохраняемогоСодержанияНачало", Объект.ПериодРасчетаСохраняемогоСодержанияНачало);
ОбъектСтруктура.Вставить("ПериодРасчетаСохраняемогоСодержанияОкончание", Объект.ПериодРасчетаСохраняемогоСодержанияОкончание);
ОбъектСтруктура.Вставить("ФиксПериодРасчетаСохраняемогоСодержания", Объект.ФиксПериодРасчетаСохраняемогоСодержания);
ОбъектСтруктура.Вставить("ДолжностьЗамещаласьМенее12Месяцев", Объект.ДолжностьЗамещаласьМенее12Месяцев);
ОбъектСтруктура.Вставить("СохраняемоеДенежноеСодержание", Объект.СохраняемоеДенежноеСодержание);
ОбъектСтруктура.Вставить("МесячноеДенежноеСодержание", Объект.МесячноеДенежноеСодержание);
ОбъектСтруктура.Вставить("НазначенияРасчетаДенежногоСодержания", ЭтаФорма.НазначенияРасчетаДенежногоСодержания);
ОбъектСтруктура.Вставить("УникальныйИдентификатор", ЭтаФорма.УникальныйИдентификатор);
ОбъектСтруктура.Вставить("ПериодРасчета", Объект[ОписаниеДокумента.МесяцНачисленияИмя]);
ОбъектСтруктура.Вставить("ДатаРасчетаДенежногоСодержания", Объект.ДатаРасчетаДенежногоСодержания);
Возврат ОбъектСтруктура;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборОтработанныхДней(Команда)
ВыбранныеДни = Новый Массив;
Для Каждого ОтработанныйДень Из Объект.ОтработанныеДни Цикл
Если ОтработанныйДень.Часы = 0 Тогда
ВыбранныеДни.Добавить(ОтработанныйДень.Дата);
КонецЕсли;
КонецЦикла;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВыбранныеДни", ВыбранныеДни);
ПараметрыФормы.Вставить("Документ", СсылкаНаОбъект);
ПараметрыФормы.Вставить("ИсправленныйДокумент", СсылкаНаИсправленныйДокумент);
ПараметрыФормы.Вставить("КоличествоДней", Объект.ДниНакопленныхОтгулов);
ПараметрыФормы.Вставить("НачалоОтгула", Объект.ДатаУвольнения);
ПараметрыФормы.Вставить("Сотрудник", Объект.Сотрудник);
ПараметрыФормы.Вставить("Компенсация", Истина);
ОткрытьФорму("ОбщаяФорма.ВыборОтработанныхДнейОтгулов", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграцииС1САрхивом(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивомКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменСАрхивомКлиент");
МодульОбменСАрхивомКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуИнтеграцииС1САрхивомНаСервере(Знач Параметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивом = ОбщегоНазначения.ОбщийМодуль("ОбменСАрхивом");
МодульОбменСАрхивом.ВыполнитьПодключаемуюКоманду(ЭтотОбъект, Параметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ИнтеграцияС1САрхивом_Нажатие(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивомКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменСАрхивомКлиент");
МодульОбменСАрхивомКлиент.Нажатие(Элемент, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборОтработанныхЧасов(Команда)
ВыбранныеДни = Новый Массив;
Для Каждого ОтработанныйДень Из Объект.ОтработанныеДни Цикл
Если ОтработанныйДень.Часы <> 0 Тогда
ВыбранныеДни.Добавить(ОтработанныйДень.Дата);
КонецЕсли;
КонецЦикла;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВыбранныеДни", ВыбранныеДни);
ПараметрыФормы.Вставить("Документ", СсылкаНаОбъект);
ПараметрыФормы.Вставить("ИсправленныйДокумент", СсылкаНаИсправленныйДокумент);
ПараметрыФормы.Вставить("КоличествоЧасов", Объект.ЧасыНакопленныхОтгулов);
ПараметрыФормы.Вставить("НачалоОтгула", Объект.ДатаУвольнения);
ПараметрыФормы.Вставить("Сотрудник", Объект.Сотрудник);
ПараметрыФормы.Вставить("Компенсация", Истина);
ПараметрыФормы.Вставить("ВыборОтработанныхЧасов", Истина);
ОткрытьФорму("ОбщаяФорма.ВыборОтработанныхДнейОтгулов", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьОтчетПоПроблемам(ЭлементИлиКоманда, НавигационнаяСсылка, СтандартнаяОбработка)
КонтрольВеденияУчетаКлиентБЗК.ОткрытьОтчетПоПроблемамОбъекта(ЭтотОбъект, Объект.Ссылка, СтандартнаяОбработка);
КонецПроцедуры
#Область Подключаемый_КадровыйРезерв
&НаСервере
Процедура ЗаполнитьКадровыйРезерв()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульФормы = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервФормы");
МодульФормы.ЗаполнитьКадровыйРезервВДокументеУвольнение(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПриПолученииДанныхНаСервере
&НаСервере
Процедура ПриПолученииДанныхНаСервере()
РасчетДенежногоСодержанияРедактировался = РасчетДенежногоСодержанияРедактировался(Объект.ДенежноеСодержание);
НовыйДокумент = Не РедактированиеСтрокиСписочногоДокумента
И (Не Параметры.Свойство("Ключ") Или Параметры.Ключ.Пустая());
НачатьИнициализациюФормы();
ЗарплатаКадрыРасширенный.ИзменитьРеквизитыФормы(ЭтотОбъект);
ЗавершитьИнициализациюФормы(НовыйДокумент);
РеквизитыКДобавлению.Очистить();
РеквизитыКУдалению.Очистить();
ОбновитьСтраницуУведомленияОПрекращенииПособия();
ОбновитьЭлементыПособий();
ОбновитьСправкиСотрудника();
УстановитьВидимостьКолонокПрогрессивногоНалога(Объект.ПланируемаяДатаВыплаты);
ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС();
УстановитьПредставлениеОтработанныхДней();
КонецПроцедуры
&НаСервере
Процедура НачатьИнициализациюФормы()
РасчетЗарплатыРасширенныйФормы.ПодготовитьФормуДляПредварительногоРасчетаНачислений(ЭтотОбъект);
УстановитьДоступностьРегистрацииНачислений();
УстановитьПривилегированныйРежим(Истина);
УстановитьФункциональныеОпцииФормы();
СпособУдержанияИзлишнеНачисленныхОтпускных = ПолучитьФункциональнуюОпцию("СпособУдержанияИзлишнеНачисленныхОтпускных");
ИспользуетсяРасчетЗарплаты = ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная");
РаботаВБюджетномУчреждении = ПолучитьФункциональнуюОпцию("РаботаВБюджетномУчреждении");
ИспользоватьСтатьиФинансирования = ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплатаРасширенный");
ДоступенВводНового = Пользователи.РолиДоступны("ДобавлениеИзменениеКадровогоСостоянияРасширенная", , Ложь);
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
УстановитьИспользованиеСреднечасовогоЗаработка();
УстановитьИспользованиеОплатыПереработокСуммированногоУчета();
ЗаполнитьИнформациюЗаполненностиДанных();
ЗаполнитьИнформациюОЗаполненностиДанныхСреднегоФСС();
ЗаполнитьСтруктуруРеквизитовИСпособовРасчетаОтпуска();
Элементы.ДнейЧасовВыходногоПособия.Подсказка = НадписьДнейЧасов();
Элементы.СреднемесячноеКоличествоДнейЧасов.Заголовок = ЗаголовокСреднемесячногоКоличестваДнейЧасов();
ДополнитьФорму(Истина);
КонецПроцедуры
&НаСервере
Процедура ЗавершитьИнициализациюФормы(НовыйДокумент)
ДополнитьФорму(Ложь);
ДополнитьФорму();
УстановитьПривилегированныйРежим(Истина);
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
ПрочитатьРеквизитыИсправления();
КонецЕсли;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
ДанныеВРеквизиты();
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтотОбъект, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтотОбъект, "Объект.МесяцНачалаРасчетов", "МесяцНачалаРасчетовСтрокой");
ОбновитьИтоги(ЭтотОбъект, НачисленияГрупп());
Если РедактированиеСтрокиСписочногоДокумента Тогда
Если ИспользуетсяРасчетЗарплаты И Не ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений И Объект.ДокументРассчитан Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
ЗаполнитьВторичныеДанныеСотрудникаВФорме(НовыйДокумент);
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтотОбъект, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
РасчетЗарплатыРасширенныйФормы.УстановитьДоступныеХарактерыВыплаты(Элементы);
ЗагрузитьНастройки();
УстановитьДоступностьЭлементовФормы(ЭтотОбъект, Объект);
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтотОбъект);
УстановитьОтметкуНезаполненногоДнейКомпенсацииУдержанияОтпуска();
УстановитьВидимостьПерерасчетов();
УстановитьВидимостьРасчетныхПолей();
УстановитьВидимостьСуммированногоУчета();
УстановитьСтраницуОсновногоСреднегоЗаработка();
ОбновитьДанныеОстатковОтгулов();
УстановитьТипОснованияУвольнения();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(Ложь);
УстановитьДоступностьОтображенияВТрудовойКнижке();
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеЗавершитьИнициализациюФормы(ЭтотОбъект, НовыйДокумент);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
МодульОбразовательныеУчрежденияФормы = ОбщегоНазначения.ОбщийМодуль("ОбразовательныеУчрежденияФормы");
МодульОбразовательныеУчрежденияФормы.УвольнениеЗавершитьИнициализациюФормы(ЭтотОбъект);
КонецЕсли;
УчетСтраховыхВзносов.УстановитьВидимостьКолонокТаблицыСтраховыхВзносов(ЭтотОбъект, Объект.ПериодРегистрации);
ЗарплатаКадрыРасширенный.УстановитьВидимостьКомандПечатиМногофункциональногоДокумента(ЭтотОбъект);
ОбновитьФормуПоВидуДоговора();
НастроитьОтображениеДнейКомпенсации(Не Объект.ФиксКоличествоДнейКомпенсацииОтпуска);
ПроверитьВосстановлениеВДолжности();
УстановитьВидимостьСтраницыСправокПриУвольнении();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСтраницыСправокПриУвольнении()
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СправкиПриУвольнении",
"Видимость",
Не РедактированиеСтрокиСписочногоДокумента
И ЗначениеЗаполнено(Объект.Сотрудник)
И Объект.УвольнениеСОсновногоМестаРаботы);
КонецПроцедуры
&НаСервере
Процедура ДополнитьФорму(ОтложенноеИзменение = Неопределено)
Если ОтложенноеИзменение = Неопределено Тогда
УстановитьПривилегированныйРежим(Истина);
РасчетЗарплатыРасширенныйФормы.ДокументыНачисленийДополнитьФормуРезультатыРаспределения(ЭтотОбъект, ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна));
Если РегистрацияНачисленийДоступна Тогда
УчетНДФЛФормы.ДополнитьФормуПанельюВычетов(ЭтотОбъект);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульФормы = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервФормы");
МодульФормы.ДополнитьФормуДокументаКадровымРезервом(ЭтотОбъект);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЗарплатаКадрыРасширенный.МногофункциональныеДокументыДобавитьЭлементыФормы(ЭтотОбъект, НСтр("ru='Расчет утвердил'"), "РасчетчикГруппа", "ДокументРассчитан", "Рассчитал");
ЗарплатаКадры.КлючевыеРеквизитыЗаполненияФормыЗаполнитьПредупреждения(ЭтотОбъект);
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
УстановитьПривилегированныйРежим(Ложь);
Иначе
УстановитьПривилегированныйРежим(Истина);
Если ОтложенноеИзменение Тогда
ДобавлятьЭлементыФормы = Ложь;
ДобавлятьРеквизитыФормы = Истина;
Иначе
ДобавлятьЭлементыФормы = Истина;
ДобавлятьРеквизитыФормы = Ложь;
КонецЕсли;
ДополнительныеПараметры = Новый Структура(
"КонтролируемыеПоля,
|ДобавлятьЭлементыФормы,
|ДобавлятьРеквизитыФормы,
|ОтложенноеИзменение");
ДополнительныеПараметры.ДобавлятьЭлементыФормы = ДобавлятьЭлементыФормы;
ДополнительныеПараметры.ДобавлятьРеквизитыФормы = ДобавлятьРеквизитыФормы;
ДополнительныеПараметры.ОтложенноеИзменение = ОтложенноеИзменение;
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна), "Удержания", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(РегистрацияНачисленийДоступна), "", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.ДокументыВыполненияНачисленийДополнитьФорму(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыСохраняемоеДенежноеСодержание(), "Начисления", , Ложь,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
МодульЛьготыСотрудников.ДокументыВыполненияНачисленийДополнитьФорму(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна), "ЛьготыАвтоКоманды",,, РегистрацияНачисленийДоступна, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, СсылкаНаОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПриДополненииФормыДокументаУвольнение(ЭтотОбъект, ДополнительныеПараметры);
КонецЕсли;
КадровыеРешенияФормы.ДополнитьФормуКадровогоДокумента(ЭтотОбъект, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеДополнитьФорму(ЭтотОбъект, ОтложенноеИзменение);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаДополнитьФорму(
ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда(), ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
ИсправлениеДокументовЗарплатаКадры.ГруппаИсправлениеДополнитьФорму(
ЭтотОбъект, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
РасчетЗарплатыРасширенныйФормы.ПорядокВыплатыЗарплатыДополнитьФорму(
ЭтотОбъект,, ДобавлятьЭлементыФормы И ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ОбъектПриЧтенииНаСервереПроцентЕНВД(
ЭтотОбъект, Объект.Организация, Объект.ПериодРегистрации, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ЗаписатьИЗакрытьНаКлиенте(Результат, ДополнительныеПараметры) Экспорт
ПараметрыЗаписи = Новый Структура("РежимЗаписи", ?(Объект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
ЗаписатьНаКлиенте(Истина, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура УстановитьФункциональныеОпцииФормы()
ПараметрыФО = Новый Структура("Организация, Период", Объект.Организация, Объект.ПериодРегистрации);
УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФО);
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьРассчитанныеДанныеНаКлиенте()
ОчиститьРассчитанныеДанные();
КонецПроцедуры
&НаСервере
Процедура ОчиститьРассчитанныеДанные()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Объект.Начисления.Очистить();
Объект.НачисленияПерерасчет.Очистить();
Объект.РаспределениеПоТерриториямУсловиямТруда.Очистить();
Объект.Пособия.Очистить();
Объект.ПособияПерерасчет.Очистить();
Объект.СотрудникиПерерасчет.Очистить();
Объект.Показатели.Очистить();
Объект.Удержания.Очистить();
Объект.ПогашениеЗаймов.Очистить();
Объект.Взносы.Очистить();
Объект.Льготы.Очистить();
Объект.УправленческиеНачисления.Очистить();
Объект.НДФЛ.Очистить();
Объект.УчтенныеПриРасчетеНДФЛДокументы.Очистить();
Объект.КорректировкиВыплаты.Очистить();
Объект.ПримененныеВычетыНаДетейИИмущественные.Очистить();
ОбновитьИтоги(ЭтотОбъект, НачисленияГрупп());
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьОтображениеЭлементовПоОснованиюУвольнения()
УстановитьТипОснованияУвольнения();
ВидимостьНДФЛиВзносы = Не КадровыйУчетРасширенный.ЭтоОснованиеУвольненияВСвязиСоСмертьюСотрудника(Объект.СтатьяТКРФ);
Если Не ВидимостьНДФЛиВзносы Тогда
Если Объект.НДФЛ.Количество() > 0
Или Объект.Взносы.Количество() > 0 Тогда
ВидимостьНДФЛиВзносы = Истина;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ГруппаНДФЛ",
"Видимость",
ВидимостьНДФЛиВзносы);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"УдержанНДФЛ",
"Видимость",
ВидимостьНДФЛиВзносы);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ГруппаВзносы",
"Видимость",
ВидимостьНДФЛиВзносы);
КонецПроцедуры
#Область ИсправлениеДокументов
&НаКлиенте
Процедура УстановитьПоляИсправленияНаКлиенте() Экспорт
УстановитьПоляИсправления(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПоляИсправления(Форма)
ИсправлениеДокументовЗарплатаКадрыКлиентСервер.УстановитьПоляИсправления(Форма);
КонецПроцедуры
#КонецОбласти
#Область ЗаполнениеИРасчетНачислений
&НаКлиенте
Процедура ВыполнитьРасчетНачислений()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
ЗарплатаКадрыРасширенныйКлиент.ПодключитьОбработчикОжиданияАвтоматическогоРасчета(
ЭтотОбъект, РегистрацияНачисленийДоступна, "РассчитатьНачисленияНаКлиенте", , "ОчиститьРассчитанныеДанныеНаКлиенте");
ПодключитьОбработчикОжиданияФормы("РассчитатьНачисленияНаКлиенте", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьНачисленияНаКлиенте()
Если ПодключенОбработчикОжидания("РассчитатьНачисленияНаКлиенте") Тогда
ОчиститьСообщения();
ВыполнитьРасчетНачисленийНаСервере();
ОтключитьОбработчикОжиданияФормы("РассчитатьНачисленияНаКлиенте");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьРасчетНачисленийНаСервере()
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
ВремяНачалаЗамера = ОценкаПроизводительности.НачатьЗамерВремени();
РассчитатьНачисленияНаСервере();
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтотОбъект);
ОценкаПроизводительности.ЗакончитьЗамерВремени("РасчетДокументаУвольнение", ВремяНачалаЗамера);
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
КонецЕсли;
ПроверитьОстатокОтработанныхДней();
КонецПроцедуры
#Область РассчитатьНачисленияНаСервере
&НаСервере
Процедура РассчитатьНачисленияНаСервере(ВыводитьСообщения = Ложь, ПервичнаяИнициализацияФормы = Ложь)
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ОбновитьДанныеПоСотруднику Тогда
ОбновитьДанныеПоСотруднику();
ОбновитьДанныеПоСотруднику = Ложь;
КонецЕсли;
ОчиститьРассчитанныеДанные();
ЗаполнитьВидРасчетаКомпенсацииУдержанияОтпуска(ПервичнаяИнициализацияФормы);
ЗаполнитьВидыРасчетовДополнительныхОтпусков();
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеЗаполнитьНачислениеКомпенсацииЗаНеотработанноеВремя(ЭтотОбъект);
КонецЕсли;
Документ = РеквизитФормыВЗначение("Объект");
УстановитьПривилегированныйРежим(Ложь);
Отказ = Ложь;
Документы.Увольнение.ПроверитьЗаполнениеКомпенсацииДополнительныхОтпусков(Документ, Отказ, ВыводитьСообщения);
УстановитьПривилегированныйРежим(Истина);
Если Не ЗначениеЗаполнено(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска)
И Объект.ПризнакКомпенсацииУдержанияОтпуска <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать
И Не (СпособУдержанияИзлишнеНачисленныхОтпускных = ПредопределенноеЗначение("Перечисление.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм")
И Объект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом")) Тогда
Отказ = Истина;
Если ВыводитьСообщения И ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не указан вид расчета компенсации (удержания) отпуска'"),,"Объект.ВидРасчетаКомпенсацииУдержанияОтпуска");
КонецЕсли;
КонецЕсли;
Для Каждого СтрокаДополнительныеОтпуска Из Объект.ДополнительныеОтпуска Цикл
НадоЗаполнятьВидРасчета = Документы.Увольнение.НеобходимоЗаполнитьВидРасчетаКомпенсацииУдержания(
СтрокаДополнительныеОтпуска.ПризнакКомпенсацииУдержания, СпособУдержанияИзлишнеНачисленныхОтпускных, СтрокаДополнительныеОтпуска.ВидРасчетаКомпенсацииУдержания);
Если НадоЗаполнятьВидРасчета Тогда
Отказ = Истина;
Если ВыводитьСообщения И ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не указан вид расчета компенсации (удержания) отпуска'"), ,
"Объект.ДополнительныеОтпуска[" + Формат(СтрокаДополнительныеОтпуска.НомерСтроки - 1, "ЧГ=") + "]ВидРасчетаКомпенсацииУдержания");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(Объект.ВыходноеПособие)
И ЗначениеЗаполнено(Объект.ДнейЧасовВыходногоПособия) Тогда
Отказ = Истина;
Если ВыводитьСообщения И ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не указан вид расчета выходного пособия'"),,"Объект.ВыходноеПособие");
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеПроверкаЗаполненияПриРасчете(
ЭтотОбъект, Отказ, ВыводитьСообщения, ОграниченияНаУровнеЗаписей);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ПланируемаяДатаВыплаты)
И (Объект.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Межрасчет
Или Объект.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Аванс) Тогда
Отказ = Истина;
Если ВыводитьСообщения И ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не заполнена дата выплаты'"),,"Объект.ПланируемаяДатаВыплаты");
КонецЕсли;
КонецЕсли;
Если Не Отказ Тогда
ЗаполнитьНаСервере();
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтотОбъект, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводНачисленийЗаполнитьВторичныеДанныеПоказателей(ЭтотОбъект, МассивОписанийТаблицФормы);
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Взносы, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПредставлениеРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
ОбновитьИтоги(ЭтотОбъект, НачисленияГрупп());
КонецЕсли;
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтотОбъект);
УстановитьСвойствоДокументРассчитан();
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтотОбъект);
УстановитьСтраницуОсновногоСреднегоЗаработка();
УстановитьОтображениеЭлементовПоОснованиюУвольнения();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидРасчетаКомпенсацииУдержанияОтпуска(ПервичнаяИнициализацияФормы)
БылоВидРасчетаКомпенсацииУдержанияОтпуска = Объект.ВидРасчетаКомпенсацииУдержанияОтпуска;
Если ИспользоватьНачисления(Объект.ПризнакКомпенсацииУдержанияОтпуска) Тогда
ДополнительныеПараметрыВыбора = Документы.Увольнение.ДополнительныеПараметрыВыбораНачислений(Объект, "ВидРасчетаКомпенсацииУдержанияОтпуска");
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчетаКомпенсацииУдержанияОтпуска", ДополнительныеПараметрыВыбора, ПервичнаяИнициализацияФормы);
ИначеЕсли ИспользоватьУдержания(Объект.ПризнакКомпенсацииУдержанияОтпуска) Тогда
ДополнительныеПараметрыВыбора = Документы.Увольнение.ДополнительныеПараметрыВыбораУдержаний(Объект, "ВидРасчетаКомпенсацииУдержанияОтпуска");
КатегорияУдержания = ДополнительныеПараметрыВыбора["Отбор.КатегорияНачисленияИлиНеоплаченногоВремени"];
Если ДополнительныеПараметрыВыбора["ОтборНачисленийГосслужбы"] <> Неопределено Тогда
ОтборНачисленийГосслужбы = ДополнительныеПараметрыВыбора["ОтборНачисленийГосслужбы"];
ДополнительныеПараметрыВыбора.Удалить("ОтборНачисленийГосслужбы");
КонецЕсли;
ПараметрыВыбораИзменились = ОбщегоНазначенияБЗК.УстановитьПараметрыВыбора(Элементы.ВидРасчетаКомпенсацииУдержанияОтпуска, ДополнительныеПараметрыВыбора);
Если Не ЗначениеЗаполнено(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска) Или (Не ПервичнаяИнициализацияФормы И ПараметрыВыбораИзменились) Тогда
ДополнительныйОтбор = Новый Структура("ВидОтпуска", ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"));
Если ЗначениеЗаполнено(ОтборНачисленийГосслужбы) Тогда
ДополнительныйОтбор.Вставить("Ссылка",ОтборНачисленийГосслужбы);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.ЗаполнитьУдержаниеВФормеДокументаПоРоли(ЭтотОбъект, Объект.ВидРасчетаКомпенсацииУдержанияОтпуска, КатегорияУдержания, ДополнительныйОтбор);
КонецЕсли;
КонецЕсли;
УстановитьЗначение = Не ПервичнаяИнициализацияФормы И БылоВидРасчетаКомпенсацииУдержанияОтпуска <> Объект.ВидРасчетаКомпенсацииУдержанияОтпуска;
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(УстановитьЗначение);
Если БылоВидРасчетаКомпенсацииУдержанияОтпуска <> Объект.ВидРасчетаКомпенсацииУдержанияОтпуска Тогда
ЗаполнитьПериодРасчетаСреднегоЗаработка();
КонецЕсли;
ДополнительныеПараметрыВыбора = Документы.Увольнение.ДополнительныеПараметрыВыбораНачислений(Объект, "ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха");
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха",
ДополнительныеПараметрыВыбора, ПервичнаяИнициализацияФормы, , , Истина);
ДополнительныеПараметрыВыбора = Документы.Увольнение.ДополнительныеПараметрыВыбораНачислений(Объект, "ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха");
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха",
ДополнительныеПараметрыВыбора, ПервичнаяИнициализацияФормы, , , Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидРасчетаВыходногоПособия()
Если ЗначениеЗаполнено(Объект.ДнейЧасовВыходногоПособия)
И Не ЗначениеЗаполнено(Объект.ВыходноеПособие) Тогда
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВыходноеПособие");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидРасчетаМесячноеДенежноеСодержание()
Если ЗначениеЗаполнено(Объект.КоличествоМесяцевВыплатыДенежногоСодержания)
И Не ЗначениеЗаполнено(Объект.ВидРасчетаМесячноеДенежноеСодержание) Тогда
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчетаМесячноеДенежноеСодержание");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИспользоватьНачисления(ПризнакКомпенсацииУдержания)
Возврат ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные;
КонецФункции
&НаСервере
Функция ИспользоватьУдержания(ПризнакКомпенсацииУдержания)
Возврат ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом
И СпособУдержанияИзлишнеНачисленныхОтпускных <> Перечисления.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм;
КонецФункции
&НаСервере
Процедура ЗаполнитьВидыРасчетовДополнительныхОтпусков()
Если Объект.РасчетДенежногоСодержания Тогда
КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеКомпенсацияОтпуска");
КатегорияУдержания = ПредопределенноеЗначение("Перечисление.КатегорииУдержаний.ДенежноеСодержаниеУдержаниеЗаНеотработанныеДниОтпуска");
Иначе
КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска");
КатегорияУдержания = ПредопределенноеЗначение("Перечисление.КатегорииУдержаний.УдержаниеЗаНеотработанныеДниОтпуска");
КонецЕсли;
ШаблонОтбораОтпуск = Новый ФиксированнаяСтруктура("ВАрхиве", Ложь);
Если ПолучитьФункциональнуюОпцию("ИспользоватьРасчетСохраняемогоДенежногоСодержания") Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
ОтборНачисленийГосслужбы = Модуль.НачисленияКомпенсацииГосслужащим(КатегорияНачисления, Объект.ДатаУвольнения, Ложь);
ОтборУдержанийГосслужбы = Модуль.НачисленияКомпенсацииГосслужащим(КатегорияУдержания, Объект.ДатаУвольнения, Ложь);
КонецЕсли;
Для Каждого ДополнительныйОтпуск Из Объект.ДополнительныеОтпуска Цикл
ТекущаяКатегория = Неопределено;
Если ИспользоватьНачисления(ДополнительныйОтпуск.ПризнакКомпенсацииУдержания) Тогда
Если ТипЗнч(ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания) = Тип("ПланВидовРасчетаСсылка.Начисления") Тогда
ТекущаяКатегория = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания, "КатегорияНачисленияИлиНеоплаченногоВремени");
КонецЕсли;
Если ТекущаяКатегория <> КатегорияНачисления Тогда
ОтборОтпуск = Новый Структура(ШаблонОтбораОтпуск);
ОтборОтпуск.Вставить("КатегорияНачисленияИлиНеоплаченногоВремени", КатегорияНачисления);
ОтборОтпуск.Вставить("ВидОтпуска", ДополнительныйОтпуск.ВидОтпуска);
Если ЗначениеЗаполнено(ОтборНачисленийГосслужбы) Тогда
ОтборОтпуск.Вставить("Ссылка", ОтборНачисленийГосслужбы);
КонецЕсли;
ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания = ПланыВидовРасчета.Начисления.НачислениеПоУмолчанию(ОтборОтпуск, "СообщатьОбОшибке");
КонецЕсли;
ИначеЕсли ИспользоватьУдержания(ДополнительныйОтпуск.ПризнакКомпенсацииУдержания) Тогда
Если ТипЗнч(ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания) = Тип("ПланВидовРасчетаСсылка.Удержания") Тогда
ТекущаяКатегория = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания, "КатегорияУдержания");
КонецЕсли;
Если ТекущаяКатегория <> КатегорияУдержания Тогда
ДополнительныйОтбор = Новый Структура("ВидОтпуска", ДополнительныйОтпуск.ВидОтпуска);
Если ЗначениеЗаполнено(ОтборУдержанийГосслужбы) Тогда
ДополнительныйОтбор.Вставить("Ссылка", ОтборУдержанийГосслужбы);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.ЗаполнитьУдержаниеВФормеДокументаПоРоли(ЭтотОбъект, ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания, КатегорияУдержания, ДополнительныйОтбор);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Для каждого ДополнительныйОтпуск Из Объект.ДополнительныеОтпуска Цикл
Если Не ЗначениеЗаполнено(ДополнительныйОтпуск.ПризнакКомпенсацииУдержания) Тогда
Продолжить;
КонецЕсли;
НадоЗаполнятьВидРасчета = Документы.Увольнение.НеобходимоЗаполнитьВидРасчетаКомпенсацииУдержания(
ДополнительныйОтпуск.ПризнакКомпенсацииУдержания, СпособУдержанияИзлишнеНачисленныхОтпускных, ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания);
Если НадоЗаполнятьВидРасчета Тогда
Если ИспользоватьНачисления(ДополнительныйОтпуск.ПризнакКомпенсацииУдержания) Тогда
ОтборОтпуск = Новый Структура(ШаблонОтбораОтпуск);
ОтборОтпуск.Вставить("КатегорияНачисленияИлиНеоплаченногоВремени", КатегорияНачисления);
ОтборОтпуск.Вставить("ВидОтпуска", ДополнительныйОтпуск.ВидОтпуска);
ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания = ПланыВидовРасчета.Начисления.НачислениеПоУмолчанию(ОтборОтпуск, "СообщатьОбОшибке");
ИначеЕсли ИспользоватьУдержания(ДополнительныйОтпуск.ПризнакКомпенсацииУдержания) Тогда
ДополнительныйОтбор = Новый Структура("ВидОтпуска", ДополнительныйОтпуск.ВидОтпуска);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьУдержаниеВФормеДокументаПоРоли(ЭтотОбъект, ДополнительныйОтпуск.ВидРасчетаКомпенсацииУдержания, КатегорияУдержания, ДополнительныйОтбор);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура РассчитатьСотрудника(Сотрудник, ОписаниеТаблицы) Экспорт
РассчитатьСотрудникаНаСервере(Сотрудник, ОписаниеТаблицы);
КонецПроцедуры
&НаСервере
Процедура РассчитатьСотрудникаНаСервере(Сотрудник, ОписаниеТаблицы = Неопределено)
УстановитьПривилегированныйРежим(Истина);
ПериодЗаполнения = Документы.Увольнение.ПериодЗаполненияДокумента(Объект, Объект.ПериодРегистрации);
Сотрудники = СотрудникиДокумента();
МенеджерРасчета = ПроинициализированныйМенеджерРасчета(ПериодЗаполнения, Сотрудники);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьИсточникиИзмененийМенеджераРасчета(МенеджерРасчета, ИзмененныеДанные);
ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.РассчитатьЗарплату();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Взносы, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтотОбъект, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводНачисленийЗаполнитьВторичныеДанныеПоказателей(ЭтотОбъект, МассивОписанийТаблицФормы);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПредставлениеРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
ОбновитьИтоги(ЭтотОбъект, НачисленияГрупп());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере()
ИсключаемыеРегистраторы = ИсключаемыеРегистраторы();
УстановитьПривилегированныйРежим(Истина);
ПериодЗаполнения = Документы.Увольнение.ПериодЗаполненияДокумента(Объект, Объект.ПериодРегистрации);
Сотрудники = СотрудникиДокумента();
МенеджерРасчета = ПроинициализированныйМенеджерРасчета(ПериодЗаполнения, Сотрудники);
МенеджерРасчета.НастройкиРасчета.ОкончательныйРасчет = Истина;
МенеджерРасчета.НастройкиРасчета.ИсключатьРанееОплаченныеПериоды = Ложь;
МенеджерРасчета.НастройкиРасчета.ИсключатьСтрокиПолностьюВытесненныхНачислений = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПриИнициализацииМенеджераРасчетаДляЗаполненияДокументаРасчетаЗарплаты(МенеджерРасчета);
КонецЕсли;
Организация = Объект.Организация;
МесяцНачисления = НачалоМесяца(Объект.ПериодРегистрации);
НачалоПериода = Объект.МесяцНачалаРасчетов;
Если ЭтоУвольнениеБудущимМесяцем(Объект) Тогда
ОкончаниеПериода = Макс(КонецМесяца(МесяцНачисления), КонецДня(Объект.ДатаУвольнения));
Иначе
ОкончаниеПериода = Мин(КонецМесяца(МесяцНачисления), КонецДня(Объект.ДатаУвольнения));
КонецЕсли;
ПериодВыявления = Новый СтандартныйПериод;
ПериодВыявления.ДатаНачала = ПериодЗаполнения.ДатаНачала;
ПериодВыявления.ДатаОкончания = ОкончаниеПериода;
ПараметрыИсправленного = Неопределено;
ЭтоИсправление = ИсправлениеДокументовЗарплатаКадрыКлиентСервер.ЭтоИсправление(ЭтотОбъект, ПараметрыИсправленного);
ОтменятьТранзакцию = Ложь;
ПродлеватьТранзакцию = Ложь;
Если ЭтоИсправление Тогда
Если Не ТранзакцияАктивна() Тогда
НачатьТранзакцию();
ОтменятьТранзакцию = Истина;
ПродлеватьТранзакцию = Истина;
КонецЕсли;
Отказ = Ложь;
ДокументОбъект = РеквизитФормыВЗначение("Объект");
ИсправлениеПериодическихСведений.ПолучитьПрежнийИсправленный(ДокументОбъект, Отказ, РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
ДокументИсправление = ?(ЗначениеЗаполнено(СсылкаНаОбъект), СсылкаНаОбъект, Документы.Увольнение.ПолучитьСсылку());
ИсправлениеПериодическихСведений.ИсправлениеПериодическихСведений(ДокументОбъект, Отказ, РежимПроведенияДокумента.Неоперативный, ДокументИсправление, ПараметрыИсправленного.Ссылка);
УправлениеШтатнымРасписанием.СторнироватьДвиженияДокумента(ДокументОбъект.Движения, ПараметрыИсправленного.Ссылка);
Если Не МенеджерРасчета.ЭтоИсправлениеТекущимПериодом Тогда
РегистрыРасчета.Начисления.ПриОтменеИсправленияВТекущемПериоде(ПараметрыИсправленного.Ссылка);
КонецЕсли;
КонецЕсли;
ЗаполнитьПоказателиПереработокСуммированногоУчета(МенеджерРасчета);
ДополнительныеВидыРасчета = РасчетЗарплатыРасширенный.ДополнительныеНачисленияОсновныхВидовРасчета(ВидыРасчетаДокумента());
ЗаполнятьОтрицательныеНачисленияЗаОтпуск = Истина;
ЗаполнятьКомпенсациюНеИспользованныхОтгулов = Истина;
СохранитьСреднийЗаработок = Не ПерезаполнятьСреднийЗаработок;
Если Не СохранитьСреднийЗаработок И РассчитыватьСреднийЗаработокПриЗаполненииДокумента() Тогда
ТаблицаНачислений = ТаблицаСпециализированныхНачислений(МенеджерРасчета);
ЗаполнитьОтрицательныеНачисленияЗаОтпуск(ТаблицаНачислений, МенеджерРасчета);
КомпенсируемыеДниОтгулов = Новый Соответствие;
КомпенсируемыеЧасыОтгулов = Новый Соответствие;
ЗаполнитьКомпенсациюНеИспользованныхОтгулов(ТаблицаНачислений, МенеджерРасчета, КомпенсируемыеДниОтгулов, КомпенсируемыеЧасыОтгулов);
ЗаполнитьНачисления(ПериодВыявления, ИсключаемыеРегистраторы, МенеджерРасчета, ТаблицаНачислений);
СформироватьЗаписиПерерасчета(МенеджерРасчета);
ЗаполнитьЗависимыеНачисленияКомпенсацииОтгуловПрошлыхПериодов(МенеджерРасчета);
ЗаполнитьЗначенияПоказателейКомпенсацииОтгулов(КомпенсируемыеДниОтгулов, МенеджерРасчета, Истина);
ЗаполнитьЗначенияПоказателейКомпенсацииОтгулов(КомпенсируемыеЧасыОтгулов, МенеджерРасчета, Ложь);
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления = Истина;
МенеджерРасчета.РассчитатьЗарплату();
ТаблицаРассчитанныхНачислений = МенеджерРасчета.Зарплата.Начисления.Скопировать();
ТаблицаРассчитанныхУдержаний = МенеджерРасчета.Зарплата.Удержания.Скопировать();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
ПериодВыявления = Неопределено;
ЗаполнятьОтрицательныеНачисленияЗаОтпуск = Ложь;
ЗаполнятьКомпенсациюНеИспользованныхОтгулов = Ложь;
Если Не ТранзакцияАктивна() Тогда
НачатьТранзакцию();
ОтменятьТранзакцию = Истина;
КонецЕсли;
ДанныеДляПроведения = ДанныеДокументаДляПроведения();
ИсключаемыеРегистраторы.Добавить(ДанныеДляПроведения.ДокументСсылка);
Отказ = Ложь;
НаборыЗаписей = ЗарплатаКадры.НаборыЗаписейРегистратора(Метаданные.Документы.Увольнение, ДанныеДляПроведения.ДокументСсылка);
ИсправлениеДокументовРасчетЗарплаты.ПриВременнойРегистрацииИсправления(НаборыЗаписей, ДанныеДляПроведения);
РасчетЗарплатыРасширенный.СформироватьДвиженияНачислений(
НаборыЗаписей, Отказ, Объект.Организация, КонецМесяца(Объект.ПериодРегистрации), ДанныеДляПроведения.Начисления, ДанныеДляПроведения.ПоказателиНачислений, Истина);
ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
ДанныеДляПроведенияУчетЗарплаты.Движения = НаборыЗаписей;
ДанныеДляПроведенияУчетЗарплаты.Организация = Объект.Организация;
ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = Объект.ПериодРегистрации;
ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
УчетНачисленнойЗарплаты.ЗарегистрироватьОтработанноеВремя(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.ОтработанноеВремяПоСотрудникам, Истина);
НаборыЗаписей.ДанныеОВремениДляРасчетаСреднегоОбщий.ДополнительныеСвойства.Вставить("ИсключаемыйРегистратор", СсылкаНаОбъект);
УчетСреднегоЗаработка.ЗарегистрироватьДанныеСреднегоЗаработка(НаборыЗаписей, Отказ, ДанныеДляПроведения.НачисленияДляСреднегоЗаработка, Истина);
ЗаполнитьПериодРасчетаСреднегоЗаработка();
ОчиститьРассчитанныеДанные();
Если ОтменятьТранзакцию = Истина И ПродлеватьТранзакцию = Ложь Тогда
ОтменитьТранзакцию();
ИначеЕсли ПродлеватьТранзакцию = Истина Тогда
НаборыЗаписей.Начисления.Очистить();
НаборыЗаписей.Начисления.Записать();
КонецЕсли;
Иначе
Если ПерезаполнятьСреднийЗаработок Тогда
ОбновитьДанныеДляРасчетаСреднего();
КонецЕсли;
КонецЕсли;
Если ПерезаполнятьСреднийЗаработокСФР Тогда
ОбновитьДанныеДляРасчетаСреднегоФСС();
КонецЕсли;
Если ОбновитьРасчетДенежногоСодержания Тогда
ОбновитьДанныеДляРасчетаСохраняемогоДенежногоСодержания();
КонецЕсли;
ЗначенияПоказателейДляВыходногоПособия = Неопределено;
ЗначенияПоказателейДляКомпенсаций = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
МодульРасчетДенежногоСодержания = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
ЗначенияПоказателейСохраняемогоДенежногоСодержания = МодульРасчетДенежногоСодержания.ЗначенияПоказателейСохраняемогоДенежногоСодержания(СтруктураОбъекта);
ЗначенияПоказателейДляВыходногоПособия = МодульРасчетДенежногоСодержания.ЗначенияПоказателейСохраняемогоДенежногоСодержанияПоНазначению(ЗначенияПоказателейСохраняемогоДенежногоСодержания, "ВыходноеПособие");
ЗначенияПоказателейДляКомпенсаций = МодульРасчетДенежногоСодержания.ЗначенияПоказателейСохраняемогоДенежногоСодержанияПоНазначению(ЗначенияПоказателейСохраняемогоДенежногоСодержания, "ЕжегодныйОтпуск");
КонецЕсли;
Если Не Объект.ФиксПределДоходаНеОблагаемогоНДФЛ Тогда
РассчитатьПределДоходаНеОблагаемогоНДФЛ();
КонецЕсли;
Если Не Объект.ФиксПределДоходаНеОблагаемогоСтраховымиВзносами Тогда
РассчитатьПределДоходаНеОблагаемогоСтраховымиВзносами();
КонецЕсли;
ПерезаполнятьСреднийЗаработок = Истина;
ПерезаполнятьСреднийЗаработокСФР = Истина;
ТаблицаНачислений = ТаблицаСпециализированныхНачислений(МенеджерРасчета);
ЗаполнитьВыходноеПособие(ТаблицаНачислений, МенеджерРасчета, ДополнительныеВидыРасчета, ЗначенияПоказателейДляВыходногоПособия);
ЗаполнитьКомпенсацииЗаОтпуск(ТаблицаНачислений, МенеджерРасчета, ДополнительныеВидыРасчета, ЗначенияПоказателейДляКомпенсаций);
Если ЗаполнятьКомпенсациюНеИспользованныхОтгулов Тогда
КомпенсируемыеДниОтгулов = Новый Соответствие;
КомпенсируемыеЧасыОтгулов = Новый Соответствие;
ЗаполнитьКомпенсациюНеИспользованныхОтгулов(ТаблицаНачислений, МенеджерРасчета, КомпенсируемыеДниОтгулов, КомпенсируемыеЧасыОтгулов);
КонецЕсли;
Если ЗаполнятьОтрицательныеНачисленияЗаОтпуск Тогда
ЗаполнитьОтрицательныеНачисленияЗаОтпуск(ТаблицаНачислений, МенеджерРасчета);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеЗаполнитьКомпенсациюЗаНеотработанноеВремя(ЭтотОбъект, ТаблицаНачислений, МенеджерРасчета, ДополнительныеВидыРасчета);
КонецЕсли;
Если СохранитьСреднийЗаработок Или Не РассчитыватьСреднийЗаработокПриЗаполненииДокумента() Тогда
ЗаполнитьНачисления(ПериодВыявления, ИсключаемыеРегистраторы, МенеджерРасчета, ТаблицаНачислений);
СформироватьЗаписиПерерасчета(МенеджерРасчета);
Иначе
МенеджерРасчета.ЗаполнитьНачисленияСотрудниковЗаПериод(Сотрудники, ТаблицаНачислений, ПериодВыявления);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаРассчитанныхНачислений, МенеджерРасчета.Зарплата.Начисления);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаРассчитанныхУдержаний, МенеджерРасчета.Зарплата.Удержания);
КонецЕсли;
Если ЗаполнятьКомпенсациюНеИспользованныхОтгулов Тогда
ЗаполнитьЗависимыеНачисленияКомпенсацииОтгуловПрошлыхПериодов(МенеджерРасчета);
ЗаполнитьЗначенияПоказателейКомпенсацииОтгулов(КомпенсируемыеДниОтгулов, МенеджерРасчета, Истина);
ЗаполнитьЗначенияПоказателейКомпенсацииОтгулов(КомпенсируемыеЧасыОтгулов, МенеджерРасчета, Ложь);
КонецЕсли;
ЗаполнитьУдержания(МенеджерРасчета);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.НастройкиБухучета.КоэффициентыСреднегоЗаработкаДокумента = УчетСреднегоЗаработка.КоэффициентыРаспределенияСреднегоЗаработкаДокумента(Объект, ОписаниеДокумента(ЭтотОбъект));
МенеджерРасчета.НастройкиБухучета.КоэффициентыРаспределенияДенежногоСодержания = Объект.КоэффициентыРаспределенияДенежногоСодержания.Выгрузить();
МенеджерРасчета.ДополнительныеСвойства.Вставить("ДанныеДляУчетаПособийПриУвольнении", ДанныеДляУчетаПособийПриУвольнении());
МенеджерРасчета.РассчитатьЗарплату();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
МенеджерРасчета = Неопределено;
Если ОтменятьТранзакцию = Истина Тогда
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецЕсли;
УстановитьВидимостьПерерасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНачисления(ПериодЗаполнения, ИсключаемыеРегистраторы, МенеджерРасчета, ТаблицаНачислений)
Если Объект.НачислитьЗарплату Тогда
Сотрудники = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник);
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодработки") Тогда
ПараметрыПолученияПодработок = КадровыйУчет.ПараметрыДляЗапросВТРабочиеМестаСотрудниковПоСпискуСотрудников(
Сотрудники, ПериодЗаполнения.ДатаНачала, ПериодЗаполнения.ДатаОкончания);
МассивПодработок = КадровыйУчетРасширенный.ПодработкиСотрудников(Истина, ПараметрыПолученияПодработок);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Сотрудники, МассивПодработок, Истина);
КонецЕсли;
ДанныеПерерасчета = ПерерасчетЗарплаты.ДанныеПерерасчетаПриУвольненииСотрудника(
СсылкаНаОбъект, СсылкаНаИсправленныйДокумент, Сотрудники, Объект.Организация, Объект.ДатаУвольнения,
ПериодЗаполнения, ИсключаемыеРегистраторы, МенеджерРасчета);
МенеджерРасчета.ЗаполнитьНачислениеЗарплаты(ДанныеПерерасчета.ТаблицаСотрудников, , , ТаблицаНачислений);
Если ДанныеПерерасчета.НачисленияПерерасчет.Количество() > 0 Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеПерерасчета.НачисленияПерерасчет, МенеджерРасчета.Зарплата.Начисления);
КонецЕсли;
Если ДанныеПерерасчета.ПособияПерерасчет.Количество() > 0 Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеПерерасчета.ПособияПерерасчет, МенеджерРасчета.Зарплата.Начисления);
КонецЕсли;
Объект.СотрудникиПерерасчет.Загрузить(ДанныеПерерасчета.СотрудникиПерерасчет);
Иначе
МенеджерРасчета.ЗаполнитьНачисленияСотрудникаЗаПериод(Объект.Сотрудник, ТаблицаНачислений);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУдержания(МенеджерРасчета)
ТаблицаУдержаний = МенеджерРасчета.ТаблицаИсходныеДанныеУдержанияПериоды();
ЗаполнитьУдержанияЗаОтпуск(ТаблицаУдержаний, МенеджерРасчета);
ОкончаниеПериода = Макс(Объект.ПериодРегистрации, Объект.ДатаУвольнения);
МенеджерРасчета.ЗаполнитьУдержанияСотрудникаЗаПериод(Объект.Сотрудник, Объект.МесяцНачалаРасчетов, КонецМесяца(ОкончаниеПериода), ТаблицаУдержаний);
ЗаполнитьСторноУдержанийЗаОтпуск(МенеджерРасчета);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ОбучениеРазвитие") Тогда
МодульОбучениеРазвитие = ОбщегоНазначения.ОбщийМодуль("ОбучениеРазвитие");
МодульОбучениеРазвитие.ДополнитьТаблицуУдержанийДаннымиПоУченическимДоговорамСотрудника(Объект.Сотрудник, Объект.ДатаУвольнения, МенеджерРасчета);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.МедицинскоеСтрахование") Тогда
МодульМедицинскоеСтрахование = ОбщегоНазначения.ОбщийМодуль("МедицинскоеСтрахование");
МодульМедицинскоеСтрахование.ДополнитьТаблицуУдержанийИзвестнымиПоказателями(Объект.ДатаУвольнения, МенеджерРасчета);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.УдержанияВДанныеМенеджераРасчета(Объект.Удержания, МенеджерРасчета);
КонецПроцедуры
&НаСервере
Процедура РасчетЗарплатыВДанныеФормы(ДанныеМенеджераРасчета)
ТаблицыНачислений = РасчетЗарплатыРасширенныйФормы.ТаблицыНачисленийФормы();
ТаблицыНачислений.Начисления = Объект.Начисления;
ТаблицыНачислений.НачисленияПерерасчет = Объект.НачисленияПерерасчет;
ТаблицыНачислений.Пособия = Объект.Пособия;
ТаблицыНачислений.ПособияПерерасчет = Объект.ПособияПерерасчет;
ТаблицыНачислений.Льготы = Объект.Льготы;
ТаблицыНачислений.УправленческиеНачисления = Объект.УправленческиеНачисления;
СортироватьРезультатыРасчетаПоФизическимЛицам(ДанныеМенеджераРасчета);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНачисленияВДанныеФормы(ТаблицыНачислений, ДанныеМенеджераРасчета.Начисления, Объект.Организация, Объект.МесяцНачалаРасчетов);
РасчетЗарплатыРасширенныйФормы.СортироватьПерерасчеты(Объект.НачисленияПерерасчет);
ТаблицыУдержаний = РасчетЗарплатыРасширенныйФормы.ТаблицыУдержанийФормы();
ТаблицыУдержаний.Удержания = Объект.Удержания;
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыУдержанияВДанныеФормы(ТаблицыУдержаний, ДанныеМенеджераРасчета.Удержания);
Если Не ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент) Тогда
ПерерасчетЗарплаты.СвернутьНачисленияПерерасчеты(Объект.НачисленияПерерасчет);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыПогашениеЗаймовВДанныеФормы(Объект.ПогашениеЗаймов, ДанныеМенеджераРасчета.ПогашениеЗаймов);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНДФЛВДанныеФормы(Объект.НДФЛ, Объект.ПримененныеВычетыНаДетейИИмущественные, ДанныеМенеджераРасчета.НДФЛ, , Объект.УчтенныеПриРасчетеНДФЛДокументы, СсылкаНаОбъект);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыКорректировкиВыплатыВДанныеФормы(Объект.КорректировкиВыплаты, ДанныеМенеджераРасчета.КорректировкиВыплаты);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыВзносыВДанныеФормы(Объект.Взносы, ДанныеМенеджераРасчета.Взносы);
КонецПроцедуры
&НаСервере
Процедура СортироватьРезультатыРасчетаПоФизическимЛицам(ДанныеЗаполнения)
СортируемыеКоллекции = Новый Массив;
Коллекция = СотрудникиФормыРасширенный.СортируемаяКоллекцияФизическихЛиц(ДанныеЗаполнения.НДФЛ);
Коллекция.ОписаниеКоллекции.Псевдоним = "НДФЛ";
Коллекция.ОписаниеКоллекции.ИмяПоляФизическоеЛицо = "ФизическоеЛицо";
МетаданныеРеквизитов = Метаданные.Документы.НачислениеЗарплаты.ТабличныеЧасти.НДФЛ.Реквизиты;
СотрудникиФормыРасширенный.ДобавитьДополнительноеПолеСортировки(Коллекция, "МесяцНалоговогоПериода", МетаданныеРеквизитов.МесяцНалоговогоПериода.Тип);
СотрудникиФормыРасширенный.ДобавитьДополнительноеПолеСортировки(Коллекция, "Подразделение", МетаданныеРеквизитов.Подразделение.Тип);
СотрудникиФормыРасширенный.ДобавитьДополнительноеПолеСортировки(Коллекция, "КатегорияДохода", МетаданныеРеквизитов.КатегорияДохода.Тип);
СортируемыеКоллекции.Добавить(Коллекция);
УстановитьПривилегированныйРежим(Истина);
ПорядокСортировки = СотрудникиФормыРасширенный.ПорядокСортировкиКоллекцияФизическихЛиц(СортируемыеКоллекции, Объект.Организация, КонецМесяца(Объект.ПериодРегистрации));
УстановитьПривилегированныйРежим(Ложь);
Для Каждого КлючЗначение Из ПорядокСортировки Цикл
ТаблицаИсходныхДанных = ДанныеЗаполнения[КлючЗначение.Ключ];
ТаблицаИсходныхДанных.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число"));
Для Каждого СтрокаПорядка Из КлючЗначение.Значение Цикл
СтрокаТаблицы = ТаблицаИсходныхДанных[СтрокаПорядка.ИндексСтрокиИсходнойТаблицы];
СтрокаТаблицы.Порядок = СтрокаПорядка.Порядок;
КонецЦикла;
ТаблицаИсходныхДанных.Сортировать("Порядок");
ТаблицаИсходныхДанных.Колонки.Удалить("Порядок");
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета)
УвольнениеВСвязиСоСмертью = КадровыйУчетРасширенный.ЭтоОснованиеУвольненияВСвязиСоСмертьюСотрудника(Объект.СтатьяТКРФ);
Сотрудники = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник);
МенеджерРасчета.НастройкиРасчета.ОкончательныйРасчет = Истина;
МенеджерРасчета.НастройкиРасчета.РасчетУвольнения = Истина;
МенеджерРасчета.НастройкиРасчета.Сотрудники = Сотрудники;
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления = Истина;
МенеджерРасчета.НастройкиРасчета.РассчитыватьНДФЛ = Не УвольнениеВСвязиСоСмертью;
МенеджерРасчета.НастройкиРасчета.РассчитыватьЗаймы = Истина;
МенеджерРасчета.НастройкиРасчета.РассчитыватьУдержания = ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты);
МенеджерРасчета.НастройкиРасчета.РассчитыватьВзносы = Не УвольнениеВСвязиСоСмертью;
МенеджерРасчета.НастройкиРасчета.РассчитыватьКорректировкиВыплаты = Истина;
МенеджерРасчета.НастройкиРасчета.СохранятьИсправления = Истина;
МенеджерРасчета.НастройкиРасчета.ИсключатьСтрокиПолностьюВытесненныхНачислений = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПриИнициализацииМенеджераРасчетаДляЗаполненияДокументаРасчетаЗарплаты(МенеджерРасчета);
КонецЕсли;
МенеджерРасчета.НастройкиНДФЛ.Сотрудники = Сотрудники;
МенеджерРасчета.НастройкиНДФЛ.ДатаВыплаты = Объект.ПланируемаяДатаВыплаты;
МенеджерРасчета.НастройкиНДФЛ.ОкончательныйРасчет = Истина;
МенеджерРасчета.НастройкиНДФЛ.ЗасчитыватьДанныеАвансов = Объект.НачислитьЗарплату;
МенеджерРасчета.НастройкиНДФЛ.ДоходПолученНаТерриторииРФ = Объект.ДоходПолученНаТерриторииРФ;
МенеджерРасчета.НастройкиНДФЛ.КатегорииНачисленийДоходовПолученныхНаТерриторииРФ =
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияОтпуска);
МенеджерРасчета.НастройкиЗаймов.Сотрудники = Сотрудники;
МенеджерРасчета.НастройкиЗаймов.ДатаПогашения = Мин(КонецМесяца(Объект.ПериодРегистрации), КонецДня(Объект.ДатаУвольнения));
КонецПроцедуры
&НаСервере
Процедура ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета)
РасчетЗарплатыРасширенныйФормы.НачисленияВДанныеМенеджераРасчета(Объект.Начисления, МенеджерРасчета, Объект.Организация);
ПоказательДней = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.КоличествоДнейОтпуска");
РасчетЗарплатыРасширенныйФормы.УпаковатьИзвестныеПоказателиВМенеджерРасчета(МенеджерРасчета, МенеджерРасчета.Зарплата.Начисления, ПоказательДней);
РасчетЗарплатыРасширенныйФормы.НачисленияПерерасчетВДанныеМенеджераРасчета(Объект.НачисленияПерерасчет, МенеджерРасчета, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.ПособияВДанныеМенеджераРасчета(Объект.Пособия, МенеджерРасчета, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.ПособияПерерасчетВДанныеМенеджераРасчета(Объект.ПособияПерерасчет, МенеджерРасчета, Объект.Организация);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
РасчетЗарплатыРасширенныйФормы.ЛьготыВДанныеМенеджераРасчета(Объект.Льготы, МенеджерРасчета, Объект.Организация);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.УправленческиеНачисленияВДанныеМенеджераРасчета(Объект.УправленческиеНачисления, МенеджерРасчета);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.УдержанияВДанныеМенеджераРасчета(Объект.Удержания, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.КорректировкиВыплатыВДанныеМенеджераРасчета(Объект.КорректировкиВыплаты, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.ПогашениеЗаймовВДанныеМенеджераРасчета(Объект.ПогашениеЗаймов, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.НДФЛВДанныеМенеджераРасчета(Объект.НДФЛ, Объект.ПримененныеВычетыНаДетейИИмущественные, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.ВзносыВДанныеМенеджераРасчета(Объект.Взносы, МенеджерРасчета);
МенеджерРасчета.НастройкиБухучета.КоэффициентыСреднегоЗаработкаДокумента = УчетСреднегоЗаработка.КоэффициентыРаспределенияСреднегоЗаработкаДокумента(Объект, ОписаниеДокумента(ЭтотОбъект));
МенеджерРасчета.НастройкиБухучета.КоэффициентыРаспределенияДенежногоСодержания = Объект.КоэффициентыРаспределенияДенежногоСодержания.Выгрузить();
КонецПроцедуры
&НаСервере
Процедура СформироватьЗаписиПерерасчета(МенеджерРасчета)
ТаблицыНачислений = РасчетЗарплатыРасширенныйФормы.ТаблицыНачисленийФормы();
ТаблицыНачислений.Начисления = Объект.Начисления;
ТаблицыНачислений.Пособия = Объект.Пособия;
ТаблицыНачислений.Льготы = Объект.Льготы;
ТаблицыНачислений.УправленческиеНачисления = Объект.УправленческиеНачисления;
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНачисленияВДанныеФормы(ТаблицыНачислений, МенеджерРасчета.Зарплата.Начисления, Объект.Организация);
Если ИсправлениеДокументовРасчетЗарплаты.ДоначисленияРазрешены(МенеджерРасчета)
И ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент) Тогда
СотрудникДляИсправления = ?(ТипЗнч(СсылкаНаИсправленныйДокумент) = Тип("ДокументСсылка.Увольнение"), Неопределено, Объект.Сотрудник);
ОписаниеТаблицы = КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
ИсправлениеДокументовРасчетЗарплаты.СформироватьДанныеПерерасчетаДляИсправления(
Объект.Организация, Объект.ПериодРегистрации, СсылкаНаИсправленныйДокумент, Объект.Начисления, Объект.НачисленияПерерасчет,
СсылкаНаОбъект, ОписаниеТаблицы, ПолучитьКонтролируемыеПоля(), ОписаниеДокумента(ЭтотОбъект),
СотрудникДляИсправления, Объект.ДоначислитьЗарплатуПриНеобходимости);
ИсправлениеДокументовРасчетЗарплаты.СформироватьДанныеПерерасчетаДляИсправленияПособий(
СсылкаНаИсправленныйДокумент, Объект.ПериодРегистрации, Объект.Пособия, Объект.ПособияПерерасчет, Объект.НачисленияПерерасчет,
КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна), СотрудникДляИсправления);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.НачисленияПерерасчетВДанныеМенеджераРасчета(Объект.НачисленияПерерасчет, МенеджерРасчета, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.ПособияПерерасчетВДанныеМенеджераРасчета(Объект.ПособияПерерасчет, МенеджерРасчета, Объект.Организация);
Объект.Начисления.Очистить();
Объект.Пособия.Очистить();
Объект.Льготы.Очистить();
Объект.УправленческиеНачисления.Очистить();
КонецПроцедуры
&НаСервере
Функция ЗначениеСреднегоЗаработкаДляКомпенсацииОтпуска(ВидОтпуска)
ОписаниеВидаОтпуска = ОстаткиОтпусков.ОписаниеВидаОтпуска(ВидОтпуска, ОтпускВРабочихДняхПоДоговору);
Если ОписаниеВидаОтпуска.СпособРасчетаПоКалендарнымДням = Истина Тогда
Возврат Объект.СреднийЗаработок;
КонецЕсли;
Возврат Объект.СреднийЗаработокПоРабочимДням;
КонецФункции
&НаСервере
Процедура ЗаполнитьКоличествоДнейЧасовКомпенсацииПриУвольнении()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.ЗаполнитьКоличествоДнейЧасовКомпенсацииПриУвольнении(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКомпенсацииЗаОтпуск(ТаблицаНачислений, МенеджерРасчета, ДополнительныеВидыРасчета, ЗначенияПоказателейДляКомпенсаций = Неопределено)
ДатаКомпенсации = НачалоДня(Объект.ДатаУвольнения);
Если Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
ДатаКомпенсации = НачалоДня(Объект.ПериодРегистрации);
КонецЕсли;
ПоказательДней = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.КоличествоДнейКомпенсации");
ПоказательСреднийЗаработок = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СреднийЗаработокОбщий");
ПоказательДенежноеСодержание = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СохраняемоеДенежноеСодержание");
ПоказательМесячноеДенежноеСодержание = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.МесячноеДенежноеСодержание");
ЗначениеПоказателяУчитыватьМРОТ = ?(Объект.УчитыватьМРОТПриОплатеПоСреднемуЗаработку, 1, 0);
ПоказательУчитыватьМРОТ = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.УчитыватьМРОТ");
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаУвольнения + 86400;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = КадровыйУчетРасширенныйКлиентСервер.ЭтоСреднечасовойЗаработокВДокументеУвольнение();
ПоКалендарнымДням = ОстаткиОтпусков.ОписаниеВидаОтпуска(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"), ОтпускВРабочихДняхПоДоговору).СпособРасчетаПоКалендарнымДням;
ЗначенияПоказателейСреднегоЗаработка = Неопределено;
ДатаНачалаРаздельногоРасчетаРКСН = УчетНДФЛРасширенный.ДатаЗаконаПроРКиЕАЭС();
Если Объект.ПризнакКомпенсацииУдержанияОтпуска = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные Тогда
Если Объект.ДнейКомпенсацииУдержанияОтпуска > 0 Тогда
Если ПоКалендарнымДням Тогда
ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
Иначе
ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоШестидневке;
КонецЕсли;
НовыйИнтервал = ТаблицаНачислений.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.Начисление = Объект.ВидРасчетаКомпенсацииУдержанияОтпуска;
НовыйИнтервал.ДатаНачала = ДатаКомпенсации;
НовыйИнтервал.ДатаОкончания = ДатаКомпенсации;
НовыйИнтервал.ПериодРегистрации = Объект.ПериодРегистрации;
НовыйИнтервал.Дополнительно = Новый Структура;
НовыйИнтервал.Дополнительно.Вставить("НачалоРасчетногоПериода", Объект.ПериодРасчетаСреднегоЗаработкаНачало);
НовыйИнтервал.Дополнительно.Вставить("ОкончаниеРасчетногоПериода", Объект.ПериодРасчетаСреднегоЗаработкаОкончание);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДней, Объект.ДнейКомпенсацииУдержанияОтпуска);
Если Объект.РасчетДенежногоСодержания Тогда
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДенежноеСодержание, Объект.СохраняемоеДенежноеСодержание);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательМесячноеДенежноеСодержание, Объект.МесячноеДенежноеСодержание);
ЗначенияПоказателейСреднегоЗаработка = ЗначенияПоказателейДляКомпенсаций;
Иначе
Значение = ЗначениеСреднегоЗаработкаДляКомпенсацииОтпуска(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"));
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательСреднийЗаработок, Значение);
ЗначенияПоказателейСреднегоЗаработка = УчетСреднегоЗаработкаКлиентСервер.ЗначенияПоказателейСреднегоЗаработкаОбщего(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
КонецЕсли;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательУчитыватьМРОТ, ЗначениеПоказателяУчитыватьМРОТ);
Если Не Объект.РасчетДенежногоСодержания И ПолучитьФункциональнуюОпцию("ИндексироватьСреднийЗаработокЧастично") Тогда
УчетСреднегоЗаработка.ДобавитьЗначенияПоказателейЧастичнойИндексацииОтпусков(Объект, МенеджерРасчета, НовыйИнтервал, ПоКалендарнымДням);
КонецЕсли;
ВидыРасчетаДолейРКСН = ДополнительныеВидыРасчета.Получить(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска);
Если ВидыРасчетаДолейРКСН <> Неопределено И Объект.ПланируемаяДатаВыплаты >= ДатаНачалаРаздельногоРасчетаРКСН Тогда
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК, Объект.ПланируемаяДатаВыплаты) Тогда
НоваяСтрока = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НовыйИнтервал);
НоваяСтрока.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН, Объект.ПланируемаяДатаВыплаты) Тогда
НоваяСтрока = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НовыйИнтервал);
НоваяСтрока.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Иначе
НулевыеЗначенияПоказателейРКСН = Справочники.ПоказателиРасчетаЗарплаты.НулевыеЗначенияПоказателейРКСН();
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НовыйИнтервал, МенеджерРасчета, НулевыеЗначенияПоказателейРКСН);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОтборСтрок = Новый Структура("ПризнакКомпенсацииУдержания");
ОтборСтрок.ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные;
НайденныеСтроки = Объект.ДополнительныеОтпуска.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаОтпуска Из НайденныеСтроки Цикл
Если СтрокаОтпуска.ДнейКомпенсацииУдержания = 0 Тогда
Продолжить;
КонецЕсли;
ПолучатьЗначенияПоказателейСреднего = Ложь;
Если ПоКалендарнымДням <> ОстаткиОтпусков.ОписаниеВидаОтпуска(СтрокаОтпуска.ВидОтпуска, ОтпускВРабочихДняхПоДоговору).СпособРасчетаПоКалендарнымДням Тогда
ПоКалендарнымДням = Не ПоКалендарнымДням;
ПолучатьЗначенияПоказателейСреднего = Истина;
ИначеЕсли ЗначенияПоказателейСреднегоЗаработка = Неопределено Тогда
ПолучатьЗначенияПоказателейСреднего = Истина;
КонецЕсли;
Если ПолучатьЗначенияПоказателейСреднего Тогда
Если ПоКалендарнымДням Тогда
ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
Иначе
ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоШестидневке;
КонецЕсли;
ЗначенияПоказателейСреднегоЗаработка = УчетСреднегоЗаработкаКлиентСервер.ЗначенияПоказателейСреднегоЗаработкаОбщего(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
КонецЕсли;
НовыйИнтервал = ТаблицаНачислений.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.Начисление = СтрокаОтпуска.ВидРасчетаКомпенсацииУдержания;
НовыйИнтервал.ДатаНачала = ДатаКомпенсации;
НовыйИнтервал.ДатаОкончания = ДатаКомпенсации;
НовыйИнтервал.ПериодРегистрации = Объект.ПериодРегистрации;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДней, СтрокаОтпуска.ДнейКомпенсацииУдержания);
Если Объект.РасчетДенежногоСодержания Тогда
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДенежноеСодержание, Объект.СохраняемоеДенежноеСодержание);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательМесячноеДенежноеСодержание, Объект.МесячноеДенежноеСодержание);
ЗначенияПоказателейСреднегоЗаработка = ЗначенияПоказателейДляКомпенсаций;
Иначе
Значение = ЗначениеСреднегоЗаработкаДляКомпенсацииОтпуска(СтрокаОтпуска.ВидОтпуска);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательСреднийЗаработок, Значение);
КонецЕсли;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательУчитыватьМРОТ, ЗначениеПоказателяУчитыватьМРОТ);
Если Не Объект.РасчетДенежногоСодержания И ПолучитьФункциональнуюОпцию("ИндексироватьСреднийЗаработокЧастично") Тогда
УчетСреднегоЗаработка.ДобавитьЗначенияПоказателейЧастичнойИндексацииОтпусков(Объект, МенеджерРасчета, НовыйИнтервал, ПоКалендарнымДням);
КонецЕсли;
ВидыРасчетаДолейРКСН = ДополнительныеВидыРасчета.Получить(СтрокаОтпуска.ВидРасчетаКомпенсацииУдержания);
Если ВидыРасчетаДолейРКСН <> Неопределено И Объект.ПланируемаяДатаВыплаты >= ДатаНачалаРаздельногоРасчетаРКСН Тогда
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК, Объект.ПланируемаяДатаВыплаты) Тогда
НоваяСтрока = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НовыйИнтервал);
НоваяСтрока.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН, Объект.ПланируемаяДатаВыплаты) Тогда
НоваяСтрока = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НовыйИнтервал);
НоваяСтрока.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Иначе
НулевыеЗначенияПоказателейРКСН = Справочники.ПоказателиРасчетаЗарплаты.НулевыеЗначенияПоказателейРКСН();
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НовыйИнтервал, МенеджерРасчета, НулевыеЗначенияПоказателейРКСН);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКомпенсациюНеИспользованныхОтгулов(ТаблицаНачислений, МенеджерРасчета, КомпенсируемыеДниОтгулов, КомпенсируемыеЧасыОтгулов)
Если Объект.ДниНакопленныхОтгулов = 0
И Объект.ЧасыНакопленныхОтгулов = 0 Тогда
Возврат;
КонецЕсли;
ОстатокДней = Объект.ДниНакопленныхОтгулов;
ОстатокЧасов = Объект.ЧасыНакопленныхОтгулов;
Для Каждого ОтработанныйДень Из Объект.ОтработанныеДни Цикл
МесяцОтработанногоДня = НачалоМесяца(ОтработанныйДень.Дата);
КомпенсацияДня = ?(ОтработанныйДень.Часы <> 0, Ложь, Истина);
Если КомпенсацияДня Тогда
СоответствиеКомпенсации = КомпенсируемыеДниОтгулов;
ВидРасчетаКомпенсацииОтгула = Объект.ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха;
ЗначениеДнейЧасов = 1;
ОстатокДней = ОстатокДней - ЗначениеДнейЧасов;
Иначе
СоответствиеКомпенсации = КомпенсируемыеЧасыОтгулов;
ВидРасчетаКомпенсацииОтгула = Объект.ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха;
ЗначениеДнейЧасов = ОтработанныйДень.Часы;
ОстатокЧасов = ОстатокЧасов - ЗначениеДнейЧасов;
КонецЕсли;
Если СоответствиеКомпенсации.Получить(МесяцОтработанногоДня) = Неопределено Тогда
СоответствиеКомпенсации.Вставить(МесяцОтработанногоДня, ТаблицаКомпенсируемыхОтгулов());
СтрокаКомпенсацииОтгулов = ДобавитьСтрокуКомпенсацииОтгулов(ТаблицаНачислений, МенеджерРасчета, МесяцОтработанногоДня, ВидРасчетаКомпенсацииОтгула);
КонецЕсли;
ТаблицаПериода = СоответствиеКомпенсации.Получить(МесяцОтработанногоДня);
НоваяСтрока = ТаблицаПериода.Добавить();
НоваяСтрока.Период = МесяцОтработанногоДня;
НоваяСтрока.Дата = ОтработанныйДень.Дата;
НоваяСтрока.Значение = ЗначениеДнейЧасов;
КонецЦикла;
Если ОстатокДней = 0 И ОстатокЧасов = 0 Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ДанныеОбИспользованииОтгулов.Регистратор КАК Регистратор
|ПОМЕСТИТЬ ВТРегистраторыИспользованияОтгулов
|ИЗ
| РегистрНакопления.ДанныеОбИспользованииОтгулов КАК ДанныеОбИспользованииОтгулов
|ГДЕ
| (ДанныеОбИспользованииОтгулов.ОтработанныйДень В (&ОтработанныеДни)
| ИЛИ ДанныеОбИспользованииОтгулов.ВидДвижения = &ВидДвиженияРасход
| И ДанныеОбИспользованииОтгулов.Период < &ДатаУвольнения)
|;
|
|
|ВЫБРАТЬ
| ДниЧасыОтгулов.Период КАК Дата,
| НАЧАЛОПЕРИОДА(ДниЧасыОтгулов.Период, МЕСЯЦ) КАК Период,
| СУММА(ДниЧасыОтгулов.Дни) КАК Дни,
| СУММА(ДниЧасыОтгулов.Часы) КАК Часы
|ИЗ
| РегистрНакопления.ДниЧасыОтгулов КАК ДниЧасыОтгулов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРегистраторыИспользованияОтгулов КАК ВТРегистраторыИспользованияОтгулов
| ПО ДниЧасыОтгулов.Регистратор = ВТРегистраторыИспользованияОтгулов.Регистратор
|ГДЕ
| ДниЧасыОтгулов.Сотрудник = &Сотрудник
| И ВТРегистраторыИспользованияОтгулов.Регистратор ЕСТЬ NULL
| И ДниЧасыОтгулов.ВидДвижения = &ВидДвиженияПриход
| И ДниЧасыОтгулов.Период < &ДатаУвольнения
|
|СГРУППИРОВАТЬ ПО
| ДниЧасыОтгулов.Период,
| НАЧАЛОПЕРИОДА(ДниЧасыОтгулов.Период, МЕСЯЦ)
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ,
| Дата УБЫВ
|ИТОГИ ПО
| Период";
Запрос.УстановитьПараметр("ВидДвиженияПриход", ВидДвиженияНакопления.Приход);
Запрос.УстановитьПараметр("ВидДвиженияРасход", ВидДвиженияНакопления.Расход);
Запрос.УстановитьПараметр("ДатаУвольнения", Объект.ДатаУвольнения);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
Запрос.УстановитьПараметр("ОтработанныеДни", Объект.ОтработанныеДни.Выгрузить(, "Дата"));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИтоги = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаИтоги.Следующий() Цикл
ТаблицаКомпенсируемыеДнейОтгулов = КомпенсируемыеДниОтгулов.Получить(ВыборкаИтоги.Период);
ТаблицаКомпенсируемыеЧасовОтгулов = КомпенсируемыеЧасыОтгулов.Получить(ВыборкаИтоги.Период);
Если ОстатокДней > 0 И ВыборкаИтоги.Дни > 0 Тогда
Если ТаблицаКомпенсируемыеДнейОтгулов = Неопределено Тогда
ТаблицаКомпенсируемыеДнейОтгулов = ТаблицаКомпенсируемыхОтгулов();
КомпенсируемыеДниОтгулов[ВыборкаИтоги.Период] = ТаблицаКомпенсируемыеДнейОтгулов;
СтрокаКомпенсацииОтгулов = ДобавитьСтрокуКомпенсацииОтгулов(ТаблицаНачислений, МенеджерРасчета, ВыборкаИтоги.Период, Объект.ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха);
КонецЕсли;
КонецЕсли;
Если ОстатокЧасов > 0 И ВыборкаИтоги.Часы > 0 Тогда
Если ТаблицаКомпенсируемыеЧасовОтгулов = Неопределено Тогда
ТаблицаКомпенсируемыеЧасовОтгулов = ТаблицаКомпенсируемыхОтгулов();
КомпенсируемыеЧасыОтгулов[ВыборкаИтоги.Период] = ТаблицаКомпенсируемыеЧасовОтгулов;
СтрокаКомпенсацииОтгулов = ДобавитьСтрокуКомпенсацииОтгулов(ТаблицаНачислений, МенеджерРасчета, ВыборкаИтоги.Период, Объект.ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха);
КонецЕсли;
КонецЕсли;
Выборка = ВыборкаИтоги.Выбрать();
Пока Выборка.Следующий() Цикл
ОстатокДней = ДобавитьКомпенсациюОтгула(ТаблицаКомпенсируемыеДнейОтгулов, Выборка, ОстатокДней, "Дни");
ОстатокЧасов = ДобавитьКомпенсациюОтгула(ТаблицаКомпенсируемыеЧасовОтгулов, Выборка, ОстатокЧасов, "Часы");
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВыходноеПособие(ТаблицаНачислений, МенеджерРасчета, ДополнительныеВидыРасчета, ЗначенияПоказателейВыходногоПособия = Неопределено)
ДатаНачалаРаздельногоРасчетаРКСН = УчетНДФЛРасширенный.ДатаЗаконаПроРКиЕАЭС();
Если ЗначениеЗаполнено(Объект.КоличествоМесяцевВыплатыДенежногоСодержания) Тогда
НоваяСтрока = ТаблицаНачислений.Добавить();
НоваяСтрока.Сотрудник = Объект.Сотрудник;
НоваяСтрока.Начисление = Объект.ВидРасчетаМесячноеДенежноеСодержание;
НоваяСтрока.ДатаНачала = Объект.ДатаУвольнения;
НоваяСтрока.ДатаОкончания = Объект.ДатаУвольнения;
НоваяСтрока.ПериодРегистрации = Объект.ПериодРегистрации;
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.МесячноеДенежноеСодержание");
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НоваяСтрока, Показатель, Объект.МесячноеДенежноеСодержание);
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СохраняемоеДенежноеСодержание");
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НоваяСтрока, Показатель, Объект.СохраняемоеДенежноеСодержание);
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.МесяцевВыплатыКомпенсации");
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НоваяСтрока, Показатель, Объект.КоличествоМесяцевВыплатыДенежногоСодержания);
ВидыРасчетаДолейРКСН = ДополнительныеВидыРасчета.Получить(Объект.ВидРасчетаМесячноеДенежноеСодержание);
Если ВидыРасчетаДолейРКСН <> Неопределено
И ЗначениеЗаполнено(ЗначенияПоказателейВыходногоПособия) И Объект.ПланируемаяДатаВыплаты >= ДатаНачалаРаздельногоРасчетаРКСН Тогда
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейВыходногоПособия, ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК, Объект.ПланируемаяДатаВыплаты) Тогда
СтрокаДоляРайонногоКоэффициента = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДоляРайонногоКоэффициента, НоваяСтрока);
СтрокаДоляРайонногоКоэффициента.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(СтрокаДоляРайонногоКоэффициента, МенеджерРасчета, ЗначенияПоказателейВыходногоПособия);
КонецЕсли;
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейВыходногоПособия, ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН, Объект.ПланируемаяДатаВыплаты) Тогда
СтрокаДоляСевернойНадбавки = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДоляСевернойНадбавки, НоваяСтрока);
СтрокаДоляСевернойНадбавки.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(СтрокаДоляСевернойНадбавки, МенеджерРасчета, ЗначенияПоказателейВыходногоПособия);
КонецЕсли;
Иначе
НулевыеЗначенияПоказателейРКСН = Справочники.ПоказателиРасчетаЗарплаты.НулевыеЗначенияПоказателейРКСН();
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, НулевыеЗначенияПоказателейРКСН);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДнейЧасовВыходногоПособия) Тогда
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаУвольнения + 86400;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = ИспользуетсяСреднечасовойЗаработок;
ЗначенияПоказателейСреднегоЗаработка = УчетСреднегоЗаработкаКлиентСервер.ЗначенияПоказателейСреднегоЗаработкаОбщего(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
НоваяСтрока = ТаблицаНачислений.Добавить();
НоваяСтрока.Сотрудник = Объект.Сотрудник;
НоваяСтрока.Начисление = Объект.ВыходноеПособие;
НоваяСтрока.ДатаНачала = Объект.ДатаУвольнения;
НоваяСтрока.ДатаОкончания = Объект.ДатаУвольнения;
НоваяСтрока.ПериодРегистрации = Объект.ПериодРегистрации;
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СреднийЗаработокОбщий");
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НоваяСтрока, Показатель, Объект.СреднийЗаработокВыходногоПособия);
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.ДнейЧасовВыходногоПособия");
ДнейЧасовВыходногоПособия = Объект.ДнейЧасовВыходногоПособия;
Если РасчетВыходногоПособияПоПостановлению504() Тогда
ДнейЧасовВыходногоПособия = Объект.СреднемесячноеКоличествоДнейЧасов * Объект.КратностьВыходногоПособия;
КонецЕсли;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НоваяСтрока, Показатель, ДнейЧасовВыходногоПособия);
ВидыРасчетаДолейРКСН = ДополнительныеВидыРасчета.Получить(Объект.ВыходноеПособие);
Если ВидыРасчетаДолейРКСН <> Неопределено И Объект.ПланируемаяДатаВыплаты >= ДатаНачалаРаздельногоРасчетаРКСН Тогда
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК, Объект.ПланируемаяДатаВыплаты) Тогда
СтрокаДоляРайонногоКоэффициента = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДоляРайонногоКоэффициента, НоваяСтрока);
СтрокаДоляРайонногоКоэффициента.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиРК;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(СтрокаДоляРайонногоКоэффициента, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Если РасчетЗарплатыРасширенный.ЗаполнятьНачислениеДолиРКСН(ЗначенияПоказателейСреднегоЗаработка, ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН, Объект.ПланируемаяДатаВыплаты) Тогда
СтрокаДоляСевернойНадбавки = ТаблицаНачислений.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДоляСевернойНадбавки, НоваяСтрока);
СтрокаДоляСевернойНадбавки.Начисление = ВидыРасчетаДолейРКСН.ВидРасчетаДолиСН;
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(СтрокаДоляСевернойНадбавки, МенеджерРасчета, ЗначенияПоказателейСреднегоЗаработка);
КонецЕсли;
Иначе
НулевыеЗначенияПоказателейРКСН = Справочники.ПоказателиРасчетаЗарплаты.НулевыеЗначенияПоказателейРКСН();
РасчетЗарплатыРасширенный.ЗаполнитьПоказателиРКСН(НоваяСтрока, МенеджерРасчета, НулевыеЗначенияПоказателейРКСН);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУдержанияЗаОтпуск(ТаблицаУдержаний, МенеджерРасчета)
Если СпособУдержанияИзлишнеНачисленныхОтпускных = Перечисления.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм Тогда
Возврат;
КонецЕсли;
ПоказательДней = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.КоличествоДнейКомпенсации");
ПоказательСреднийЗаработок = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СреднийЗаработокОбщий");
ПоказательДенежноеСодержание = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.СохраняемоеДенежноеСодержание");
ПоказательМесячноеДенежноеСодержание = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.МесячноеДенежноеСодержание");
ДатаКомпенсации = НачалоДня(Объект.ДатаУвольнения);
Если Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
ДатаКомпенсации = НачалоДня(Объект.ПериодРегистрации);
КонецЕсли;
Если Объект.ПризнакКомпенсацииУдержанияОтпуска = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом Тогда
Если Объект.ДнейКомпенсацииУдержанияОтпуска > 0 Тогда
НовыйИнтервал = ТаблицаУдержаний.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.Удержание = Объект.ВидРасчетаКомпенсацииУдержанияОтпуска;
НовыйИнтервал.ДатаНачала = ДатаКомпенсации;
НовыйИнтервал.ДатаОкончания = ДатаКомпенсации;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДней, Объект.ДнейКомпенсацииУдержанияОтпуска);
Если Объект.РасчетДенежногоСодержания Тогда
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДенежноеСодержание, Объект.СохраняемоеДенежноеСодержание);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательМесячноеДенежноеСодержание, Объект.МесячноеДенежноеСодержание);
Иначе
Значение = ЗначениеСреднегоЗаработкаДляКомпенсацииОтпуска(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"));
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательСреднийЗаработок, Значение);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОтборСтрок = Новый Структура("ПризнакКомпенсацииУдержания");
ОтборСтрок.ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом;
НайденныеСтроки = Объект.ДополнительныеОтпуска.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаОтпуска Из НайденныеСтроки Цикл
Если СтрокаОтпуска.ДнейКомпенсацииУдержания = 0 Тогда
Продолжить;
КонецЕсли;
НовыйИнтервал = ТаблицаУдержаний.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.Удержание = СтрокаОтпуска.ВидРасчетаКомпенсацииУдержания;
НовыйИнтервал.ДатаНачала = ДатаКомпенсации;
НовыйИнтервал.ДатаОкончания = ДатаКомпенсации;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДней, СтрокаОтпуска.ДнейКомпенсацииУдержания);
Если Объект.РасчетДенежногоСодержания Тогда
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательДенежноеСодержание, Объект.СохраняемоеДенежноеСодержание);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательМесячноеДенежноеСодержание, Объект.МесячноеДенежноеСодержание);
Иначе
Значение = ЗначениеСреднегоЗаработкаДляКомпенсацииОтпуска(СтрокаОтпуска.ВидОтпуска);
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, ПоказательСреднийЗаработок, Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтрицательныеНачисленияЗаОтпуск(ТаблицаНачислений, МенеджерРасчета)
Если СпособУдержанияИзлишнеНачисленныхОтпускных <> Перечисления.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм Тогда
Возврат;
КонецЕсли;
ТаблицаНачислений.Колонки.Добавить("ЗначениеПоказателяДлительностиОтпуска", Новый ОписаниеТипов("Число"));
ПоказательДней = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.КоличествоДнейОтпуска");
КоличествоПоказателей = ЗарплатаКадрыРасширенныйПовтИсп.МаксимальноеКоличествоПоказателейИспользуемыхПриРасчете();
МассивВидыОтпусков = Новый Массив;
ДлительностьОтпусков = Новый Соответствие;
Если Объект.ПризнакКомпенсацииУдержанияОтпуска = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом Тогда
Если Объект.ДнейКомпенсацииУдержанияОтпуска > 0 Тогда
ВидОтпуска = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной");
МассивВидыОтпусков.Добавить(ВидОтпуска);
ДлительностьОтпусков.Вставить(ВидОтпуска, Объект.ДнейКомпенсацииУдержанияОтпуска);
КонецЕсли;
КонецЕсли;
ОтборСтрок = Новый Структура("ПризнакКомпенсацииУдержания");
ОтборСтрок.ПризнакКомпенсацииУдержания = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом;
НайденныеСтроки = Объект.ДополнительныеОтпуска.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаОтпуска Из НайденныеСтроки Цикл
МассивВидыОтпусков.Добавить(СтрокаОтпуска.ВидОтпуска);
ДлительностьОтпусков.Вставить(СтрокаОтпуска.ВидОтпуска, СтрокаОтпуска.ДнейКомпенсацииУдержания);
КонецЦикла;
ИсключаемыеРегистраторы = ИсключаемыеРегистраторы();
НачисленныеОтпуска = УчетНачисленнойЗарплатыРасширенный.НачисленныеОтпускаПоПериодамИВидам(Объект.Сотрудник, МассивВидыОтпусков, ИсключаемыеРегистраторы, Объект.РасчетДенежногоСодержания);
ОтпускаВидыРасчета = НачисленныеОтпуска.ВыгрузитьКолонку("Начисление");
ВидыОтпусков = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(ОтпускаВидыРасчета, "ВидОтпуска");
ДанныеВидовРасчетов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(ОтпускаВидыРасчета, "КатегорияНачисленияИлиНеоплаченногоВремени, ОсновнойВидРасчета");
КатегорииОплатыДолейРКСН = ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолейРКиСН();
Длительность = 0;
ВидОтпускаПредыдущий = Неопределено;
Для Каждого СтрокаОтпуска Из НачисленныеОтпуска Цикл
ВидОтпуска = ВидыОтпусков[СтрокаОтпуска.Начисление];
Если ВидОтпуска <> ВидОтпускаПредыдущий Тогда
ВидОтпускаПредыдущий = ВидОтпуска;
Длительность = ДлительностьОтпусков.Получить(ВидОтпуска);
КонецЕсли;
КатегорияНачисленияОтпуска = ДанныеВидовРасчетов[СтрокаОтпуска.Начисление].КатегорияНачисленияИлиНеоплаченногоВремени;
СтрокаОплатыДолиРКСН = КатегорииОплатыДолейРКСН.Найти(КатегорияНачисленияОтпуска) <> Неопределено;
Если Длительность = 0 И Не СтрокаОплатыДолиРКСН Тогда
Продолжить;
КонецЕсли;
НовыйИнтервал = ТаблицаНачислений.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.СторнируемыйДокумент = СтрокаОтпуска.СторнируемыйДокумент;
НовыйИнтервал.Начисление = СтрокаОтпуска.Начисление;
НовыйИнтервал.ДатаНачала = СтрокаОтпуска.ДатаНачала;
НовыйИнтервал.ПериодРегистрации = Объект.ПериодРегистрации;
НовыйИнтервал.ФиксЗаполнение = Истина;
НовыйИнтервал.ФиксРасчетВремени = Истина;
НовыйИнтервал.Владелец = "Начисления";
НовыйИнтервал.ОсновнойВидРасчета = ДанныеВидовРасчетов[СтрокаОтпуска.Начисление].ОсновнойВидРасчета;
НовыйИнтервал.КатегорияНачисления = КатегорияНачисленияОтпуска;
Для НомерПоказателя = 1 По КоличествоПоказателей Цикл
Показатель = СтрокаОтпуска["Показатель" + НомерПоказателя];
Если Показатель = Неопределено Тогда
Продолжить;
КонецЕсли;
ЗначениеПоказателя = СтрокаОтпуска["Значение" + НомерПоказателя];
Если Показатель = ПоказательДней Тогда
Если СтрокаОплатыДолиРКСН Тогда
Продолжить;
КонецЕсли;
Если Длительность >= ЗначениеПоказателя Тогда
ЗначениеПоказателя = -ЗначениеПоказателя;
Иначе
ЗначениеПоказателя = -Длительность;
ОтпускВРабочихДняхПоДоговору = ОстаткиОтпусков.ОтпускСотрудникаВРабочихДняхПоДоговору(
Объект.Сотрудник, СтрокаОтпуска.ДатаНачала);
ОписаниеВидаОтпуска = ОстаткиОтпусков.ОписаниеВидаОтпуска(ВидОтпуска, ОтпускВРабочихДняхПоДоговору);
Если ЗначениеЗаполнено(СтрокаОтпуска.ДатаНачала) Тогда
ДлительностьОтпускаЦелая = Цел(Длительность) + ?((Длительность - Цел(Длительность)) > 0, 1, 0);
СтрокаОтпуска.ДатаОкончания = КонецДня(
ОстаткиОтпусковКлиентСервер.ДатаОкончанияОтпуска(
СтрокаОтпуска.Сотрудник, СтрокаОтпуска.ДатаНачала, ДлительностьОтпускаЦелая, ОписаниеВидаОтпуска));
КонецЕсли;
КонецЕсли;
Длительность = Длительность + ЗначениеПоказателя;
НовыйИнтервал.ЗначениеПоказателяДлительностиОтпуска = ЗначениеПоказателя;
КонецЕсли;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(НовыйИнтервал, Показатель, ЗначениеПоказателя);
КонецЦикла;
НовыйИнтервал.ДатаОкончания = СтрокаОтпуска.ДатаОкончания;
КонецЦикла;
Для Каждого Стр Из ТаблицаНачислений Цикл
Если КатегорииОплатыДолейРКСН.Найти(Стр.КатегорияНачисления) = Неопределено Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура("Начисление, ДатаНачала, ПериодРегистрации, Сотрудник");
ЗаполнитьЗначенияСвойств(Отбор, Стр);
Отбор.Начисление = Стр.ОсновнойВидРасчета;
СтрокиОсновногоНачисления = ТаблицаНачислений.НайтиСтроки(Отбор);
Если СтрокиОсновногоНачисления.Количество() > 0 Тогда
Стр.ДатаОкончания = СтрокиОсновногоНачисления[0].ДатаОкончания;
ЗначениеПоказателя = СтрокиОсновногоНачисления[0].ЗначениеПоказателяДлительностиОтпуска;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(Стр, ПоказательДней, ЗначениеПоказателя);
КонецЕсли;
КонецЦикла;
ТаблицаНачислений.Колонки.Удалить("ОсновнойВидРасчета");
ТаблицаНачислений.Колонки.Удалить("КатегорияНачисления");
ТаблицаНачислений.Колонки.Удалить("ЗначениеПоказателяДлительностиОтпуска");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСторноУдержанийЗаОтпуск(МенеджерРасчета)
Если Не ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент) Тогда
Возврат;
КонецЕсли;
ДанныеДляСторнированияУдержанийЗаОтпуск = Документы.Увольнение.ДанныеДляСторнированияУдержанийЗаОтпуск(СсылкаНаИсправленныйДокумент);
Удержания = МенеджерРасчета.Зарплата.Удержания;
Для каждого Строка Из ДанныеДляСторнированияУдержанийЗаОтпуск.Удержания Цикл
ПоказателиСтроки = ДанныеДляСторнированияУдержанийЗаОтпуск.Показатели.НайтиСтроки(Новый Структура("ИдентификаторСтрокиВидаРасчета", Строка.ИдентификаторСтрокиВидаРасчета));
НоваяСтрокаУдержания = Обработки.МенеджерРасчетаЗарплаты.СтрокаТаблицыУдержаний(Удержания);
ЗаполнитьЗначенияСвойств(НоваяСтрокаУдержания, Строка);
Для Каждого СтрокаПоказатель Из ПоказателиСтроки Цикл
ЗаполнитьЗначенияСвойств(НоваяСтрокаУдержания.Показатели.Добавить(), СтрокаПоказатель);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПеренестиДанныеУчетаСреднегоЗаработкаВДокумент(РезультатРедактирования)
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
Объект.ДанныеОбИндексации.Очистить();
УчетСреднегоЗаработка.ЗаполнитьДанныеУчетаОбщегоСреднегоЗаработка(
Объект.СреднийЗаработокОбщий,
Объект.ОтработанноеВремяДляСреднегоОбщий,
Объект.ДанныеОбИндексации,
РезультатРедактирования,
Модифицированность);
Объект.ПериодРасчетаСреднегоЗаработкаНачало = РезультатРедактирования.НачалоПериодаРасчета;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = РезультатРедактирования.ОкончаниеПериодаРасчета;
Объект.ФиксПериодРасчетаСреднегоЗаработка = РезультатРедактирования.ФиксПериодРасчета;
ЗаполнитьИнформациюЗаполненностиДанных();
РассчитатьСреднийЗаработок();
КонецПроцедуры
&НаСервере
Процедура ПеренестиДанныеУчетаСреднегоЗаработкаФССВДокумент(РезультатРедактирования)
Объект.СреднийЗаработокФСС.Очистить();
Объект.ОтработанноеВремяДляСреднегоФСС.Очистить();
Объект.ПериодыБолезниУходаЗаДетьми.Очистить();
Объект.СреднийЗаработокДанныеСтрахователей.Очистить();
УчетПособийСоциальногоСтрахованияРасширенный.ЗаполнитьДанныеУчетаСреднегоЗаработкаФСС(Объект, РезультатРедактирования, ЭтотОбъект);
Объект.ФиксПериодРасчетаСреднегоЗаработкаСФР = РезультатРедактирования.ФиксПериодРасчета;
Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = РезультатРедактирования.ГодыПериодаРасчета[0];
Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = РезультатРедактирования.ГодыПериодаРасчета[1];
Объект.СреднийЗаработокСФР = РезультатРедактирования.СреднийЗаработок;
ЗаполнитьИнформациюОЗаполненностиДанныхСреднегоФСС();
РассчитатьСреднийЗаработокФСС();
ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС();
КонецПроцедуры
&НаСервере
Процедура ОбновитьПризнакСеверныхТерриториальныхУсловий(КадровыеДанные)
СтруктурнаяЕдиница = РасчетЗарплатыРасширенный.ИсточникРайонногоКоэффициентаРФ(КадровыеДанные);
Если Не ЗначениеЗаполнено(СтруктурнаяЕдиница) Тогда
СтруктурнаяЕдиница = Объект.Организация;
КонецЕсли;
ТерриториальныеУсловияПФР = ЗарплатаКадрыРасширенный.ТерриториальныеУсловияПФРСтруктурнойЕдиницы(СтруктурнаяЕдиница, Объект.ДатаУвольнения);
Если ТерриториальныеУсловияПФР <> Неопределено Тогда
СеверныеТерриториальныеУсловия = Справочники.ТерриториальныеУсловияПФР.СписокСеверныхТерриториальныхУсловий();
Объект.ДействуютСеверныеТерриториальныеУсловия = СеверныеТерриториальныеУсловия.НайтиПоЗначению(ТерриториальныеУсловияПФР) <> Неопределено;
Иначе
Объект.ДействуютСеверныеТерриториальныеУсловия = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДанныеДляУчетаПособийПриУвольнении()
ДанныеУвольняемыхСотрудников = Новый Соответствие;
ДанныеДляУчетаПособийПриУвольнении = Документы.Увольнение.ДанныеДляУчетаПособийПриУвольненииПустая();
ДанныеДляУчетаПособийПриУвольнении.ПределДоходаНеОблагаемогоСтраховымиВзносами = Объект.ПределДоходаНеОблагаемогоСтраховымиВзносами;
ДанныеДляУчетаПособийПриУвольнении.ПределДоходаНеОблагаемогоНДФЛ = Объект.ПределДоходаНеОблагаемогоНДФЛ;
ДанныеУвольняемыхСотрудников.Вставить(Объект.ФизическоеЛицо, ДанныеДляУчетаПособийПриУвольнении);
Возврат ДанныеУвольняемыхСотрудников;
КонецФункции
&НаСервере
Функция ДобавитьСтрокуКомпенсацииОтгулов(ТаблицаНачислений, МенеджерРасчета, ПериодДействия, ВидРасчетаКомпенсацииОтгулов)
НовыйИнтервал = ТаблицаНачислений.Добавить();
НовыйИнтервал.Сотрудник = Объект.Сотрудник;
НовыйИнтервал.Начисление = ВидРасчетаКомпенсацииОтгулов;
НовыйИнтервал.ДатаНачала = Макс(ДатаПриемаНаРаботу, ПериодДействия);
НовыйИнтервал.ДатаОкончания = КонецМесяца(ПериодДействия);
НовыйИнтервал.ПериодРегистрации = Объект.ПериодРегистрации;
НовыйИнтервал.Владелец = "Начисления";
Возврат НовыйИнтервал;
КонецФункции
&НаСервере
Функция ДобавитьКомпенсациюОтгула(ТаблицаКомпенсируемыхОтгулов, Выборка, Остаток, ИмяПоля) Экспорт
Если Остаток > 0 И Выборка[ИмяПоля] > 0 Тогда
СтрокаКомпенсируемогоОтгула = ТаблицаКомпенсируемыхОтгулов.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаКомпенсируемогоОтгула, Выборка);
СтрокаКомпенсируемогоОтгула.Значение = Мин(Остаток, Выборка[ИмяПоля]);
Остаток = Остаток - Выборка[ИмяПоля];
КонецЕсли;
Возврат Остаток;
КонецФункции
&НаСервере
Процедура ЗаполнитьЗначенияПоказателейКомпенсацииОтгулов(КомпенсируемыеОтгулы, МенеджерРасчета, КомпенсацияДней)
Отбор = Новый Структура("Начисление, ФиксСторно", , Ложь);
Если КомпенсируемыеОтгулы.Количество() > 0 Тогда
Показатель = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ПоказателиРасчетаЗарплаты.КоличествоДнейЧасовКомпенсацииОтгулов");
Отбор.Начисление = ?(КомпенсацияДней, Объект.ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха, Объект.ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха);
НачисленияКомпенсацииОтгулов = МенеджерРасчета.Начисления.НайтиСтроки(Отбор);
Для Каждого СтрокаКомпенсации Из НачисленияКомпенсацииОтгулов Цикл
ЗначениеПоказателя = 0;
ОтгулыПоПериоду = КомпенсируемыеОтгулы.Получить(СтрокаКомпенсации.ПериодДействия);
Если ОтгулыПоПериоду = Неопределено Или ОтгулыПоПериоду.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Для Каждого Отгул Из ОтгулыПоПериоду Цикл
Если Отгул.Дата >= СтрокаКомпенсации.ДатаНачала
И Отгул.Дата <= СтрокаКомпенсации.ДатаОкончания Тогда
ЗначениеПоказателя = ЗначениеПоказателя + Отгул.Значение;
КонецЕсли;
КонецЦикла;
МенеджерРасчета.ДобавитьИзвестноеЗначениеПоказателя(СтрокаКомпенсации, Показатель, ЗначениеПоказателя);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗависимыеНачисленияКомпенсацииОтгуловПрошлыхПериодов(МенеджерРасчета)
НачисленияЗаднимЧислом = ИсправлениеДокументовРасчетЗарплаты.ПустаяТаблицаНачисленийЗаднимЧислом();
Для Каждого СтрокаНачисления Из МенеджерРасчета.Начисления Цикл
Если СтрокаНачисления.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияНеИспользованныхДнейЧасовОтдыха
И НачалоМесяца(СтрокаНачисления.ДатаНачала) < НачалоМесяца(Объект.ДатаУвольнения) Тогда
НоваяСтрока = НачисленияЗаднимЧислом.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаНачисления);
НоваяСтрока.ВидРасчета = СтрокаНачисления.Начисление;
НоваяСтрока.ПериодДействия = НачалоМесяца(СтрокаНачисления.ДатаНачала);
НоваяСтрока.ПериодДействияНачало = СтрокаНачисления.ДатаНачала;
НоваяСтрока.ПериодДействияКонец = СтрокаНачисления.ДатаОкончания;
ИначеЕсли СтрокаНачисления.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени <> Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияНеИспользованныхДнейЧасовОтдыха
И НачалоМесяца(СтрокаНачисления.ДатаНачала) < НачалоМесяца(Объект.ДатаУвольнения) Тогда
Возврат;
КонецЕсли;
КонецЦикла;
ДанныеПерерасчетаЗависимыеНачисления = ИсправлениеРасчетовБЗК.НачисленияПерерасчетПоНачисленияЗаднимЧислом(Объект.Организация, Объект.ПериодРегистрации, НачисленияЗаднимЧислом, СсылкаНаОбъект);
Если ДанныеПерерасчетаЗависимыеНачисления.Количество() > 0 Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ДанныеПерерасчетаЗависимыеНачисления, МенеджерРасчета.Зарплата.Начисления);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПодключениеМеханизмаРасчетаНачислений
&НаСервере
Процедура ДанныеВРеквизиты()
Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
СсылкаНаОбъект = Объект.Ссылка;
КонецЕсли;
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьПривилегированныйРежим(Истина);
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
ЗарплатаКадрыРасширенный.ВводНачисленийДанныеВРеквизит(ЭтотОбъект, ОписанияТаблиц, 2);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.ВводНачисленийДанныеВРеквизит(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыСохраняемоеДенежноеСодержание(), 2);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
МодульЛьготыСотрудников.ДокументыВыполненияНачисленийДанныеВРеквизит(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна), 2);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПриПолученииДанныхДокументаОплатыТруда(ЭтотОбъект);
КонецЕсли;
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтотОбъект, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
Если РегистрацияНачисленийДоступна Тогда
УчетНДФЛФормы.ЗаполнитьВторичныеДанныеТабличныхЧастей(ЭтотОбъект);
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Взносы, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Начисления, "ПериодДействия", "ПериодДействияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.НачисленияПерерасчет, "ПериодДействия", "ПериодДействияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Пособия, "ПериодДействия", "ПериодДействияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.ПособияПерерасчет, "ПериодДействия", "ПериодДействияСтрокой");
КонецЕсли;
ЗарплатаКадрыРасширенный.ВводРаспределенияРезультатовРасчетаДанныеВРеквизит(ЭтотОбъект, ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна));
ОтражениеЗарплатыВБухучетеРасширенный.ОбъектПриЧтенииНаСервереПредставлениеРаспределения(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаДанныеВРеквизит(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
КонецЕсли;
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
ПрочитатьРеквизитыИсправления();
УстановитьПоляИсправления(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйРезерв") Тогда
МодульКлиентСервер = ОбщегоНазначения.ОбщийМодуль("КадровыйРезервКлиентСервер");
МодульКлиентСервер.ЗаполнитьВторичныеДанныеКадровогоРезерва(Объект.КадровыйРезерв);
КонецЕсли;
КадровыеРешенияФормы.УстановитьОтображениеНадписейВКадровомДокументе(ЭтотОбъект);
ОбновитьИнформациюОБудущихМероприятиях();
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьОтображениеНомеровДокумента(ЭтотОбъект);
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура РеквизитыВДанные(ТекущийОбъект)
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьПривилегированныйРежим(Истина);
ТекущийОбъект.Показатели.Очистить();
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(РегистрацияНачисленийДоступна));
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.ДополнитьМассивОписанийТаблицФормыНачисленияЗарплаты(ОписанияТаблиц, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыСохраняемоеДенежноеСодержание());
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудниковКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудниковКлиентСервер");
МодульЛьготыСотрудниковКлиентСервер.ДополнитьМассивОписанийТаблицФормыНачисленияЗарплаты(ОписанияТаблиц, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаКлиентСервер");
МодульУправленческаяЗарплатаКлиентСервер.ПриЗаполненииМассиваОписанийТаблицНачисленияЗарплаты(ОписанияТаблиц);
КонецЕсли;
ЗарплатаКадрыРасширенный.ВводНачисленийРеквизитВДанные(ЭтотОбъект, ТекущийОбъект, ОписанияТаблиц, 2);
ЗарплатаКадрыРасширенный.ВводРаспределенияРезультатовРасчетаРеквизитВДанные(ЭтотОбъект, ТекущийОбъект, ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаРеквизитВДанные(ЭтотОбъект, ТекущийОбъект, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
КонецЕсли;
Если ЗначениеЗаполнено(Основание) Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("Основание", Основание);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
МодульОбразовательныеУчрежденияФормы = ОбщегоНазначения.ОбщийМодуль("ОбразовательныеУчрежденияФормы");
МодульОбразовательныеУчрежденияФормы.УвольнениеРеквизитыВДанные(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьРеквизитыИсправления()
ИсправлениеДокументовЗарплатаКадры.ПрочитатьРеквизитыИсправления(ЭтотОбъект, , , Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьСтроку(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей) Экспорт
ДополнитьСтрокуНаСервере(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей);
КонецПроцедуры
&НаСервере
Процедура ДополнитьСтрокуНаСервере(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей)
РасчетЗарплатыРасширенныйФормы.ДополнитьСтрокуРасчета(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей);
КонецПроцедуры
#КонецОбласти
#Область ОписанияДокументаТаблицПанелей
&НаСервереБезКонтекста
Функция МассивОписанийТаблицФормы(ПравоНаЧтениеДокументаБезОграничений)
МассивОписанийТаблицФормы = Новый Структура;
МассивОписанийТаблицФормы.Вставить("Начисления", КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(ПравоНаЧтениеДокументаБезОграничений));
МассивОписанийТаблицФормы.Вставить("НачисленияПерерасчет", КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(ПравоНаЧтениеДокументаБезОграничений));
МассивОписанийТаблицФормы.Вставить("Пособия", КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(ПравоНаЧтениеДокументаБезОграничений));
МассивОписанийТаблицФормы.Вставить("ПособияПерерасчет", КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(ПравоНаЧтениеДокументаБезОграничений));
МассивОписанийТаблицФормы.Вставить("Удержания", КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(ПравоНаЧтениеДокументаБезОграничений));
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудниковКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудниковКлиентСервер");
МодульЛьготыСотрудниковКлиентСервер.ДополнитьСтруктуруОписанийТаблицФормыНачисленияЗарплаты(МассивОписанийТаблицФормы, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(ПравоНаЧтениеДокументаБезОграничений));
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплатаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплатаКлиентСервер");
МодульУправленческаяЗарплатаКлиентСервер.ПриЗаполненииСтруктурыОписанийТаблицНачисленияЗарплаты(МассивОписанийТаблицФормы);
КонецЕсли;
Возврат МассивОписанийТаблицФормы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеДокумента(Форма)
Описание = КадровыйУчетРасширенныйКлиентСервер.ОписаниеДокумента(ПараметрыОписанияДокумента(Форма));
Описание.УчтенныеПриРасчетеНДФЛДокументыИмя = "УчтенныеПриРасчетеНДФЛДокументы";
Описание.Вставить("ИмяРеквизитаНачалоРасчетаСохраняемогоСодержания","ПериодРасчетаСохраняемогоСодержанияНачало");
Описание.Вставить("ИмяРеквизитаОкончаниеРасчетаСохраняемогоСодержания","ПериодРасчетаСохраняемогоСодержанияОкончание");
Возврат Описание;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыОписанияДокумента(Форма)
ПараметрыОписания = Новый Структура;
ПараметрыОписания.Вставить("ИзменениеБезОграничений", Форма.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений);
ПараметрыОписания.Вставить("СпособыРасчетаСреднегоЗаработка", Форма.СпособыРасчетаСреднегоЗаработка);
ПараметрыОписания.Вставить("ПризнакКомпенсацииУдержанияОтпуска", Форма.Объект.ПризнакКомпенсацииУдержанияОтпуска);
ПараметрыОписания.Вставить("ДнейЧасовВыходногоПособия", Форма.Объект.ДнейЧасовВыходногоПособия);
ПараметрыОписания.Вставить("РегистрацияНачисленийДоступна", Форма.РегистрацияНачисленийДоступна);
Возврат ПараметрыОписания;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеПанелиВычеты()
ОписаниеПанелиВычеты = УчетНДФЛКлиентСервер.ОписаниеПанелиВычеты();
ОписаниеТабличнойЧастиНДФЛ = УчетНДФЛКлиентСервер.ОписаниеТабличнойЧастиНДФЛ();
ОписаниеТабличнойЧастиНДФЛ.ИспользуетсяФиксРасчет = Истина;
ОписаниеТабличнойЧастиНДФЛ.ИмяПоляПериод = "";
ОписаниеПанелиВычеты.ТабличнаяЧастьНДФЛ = ОписаниеТабличнойЧастиНДФЛ;
РасчетЗарплатыКлиентСервер.ДополнитьОписаниеПанелиВычеты(ОписаниеПанелиВычеты);
ОписаниеТабличнойЧастиКорректировкиВыплаты = РасчетЗарплатыКлиентСервер.ОписаниеТабличнойЧастиКорректировкиВыплаты();
ОписаниеТабличнойЧастиКорректировкиВыплаты.ИспользуетсяФиксРасчет = Истина;
ОписаниеПанелиВычеты.ТабличнаяЧастьКорректировкиВыплаты = ОписаниеТабличнойЧастиКорректировкиВыплаты;
НастраиваемыеПанели = Новый Соответствие;
НастраиваемыеПанели.Вставить("ВычетыЛичные", Истина);
НастраиваемыеПанели.Вставить("ВычетыНаДетейИИмущественные", "Объект.ПримененныеВычетыНаДетейИИмущественные");
НастраиваемыеПанели.Вставить("ВычетыКДоходам", "Объект.Начисления");
ОписаниеПанелиВычеты.НастраиваемыеПанели = НастраиваемыеПанели;
Возврат ОписаниеПанелиВычеты;
КонецФункции
&НаКлиенте
Функция ОписаниеПанелиВычетыНаКлиенте() Экспорт
Возврат ОписаниеПанелиВычеты();
КонецФункции
&НаСервере
Функция ОписаниеПанелиВычетыНаСервере() Экспорт
Возврат ОписаниеПанелиВычеты();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписанияТаблицДляРаспределенияРезультата(ПравоНаЧтениеДокументаБезОграничений)
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыКорректировкиВыплаты(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПогашениеЗаймов(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(ПравоНаЧтениеДокументаБезОграничений));
Возврат ОписанияТаблиц;
КонецФункции
#КонецОбласти
#Область КонтролируемыеПоля
&НаСервере
Функция ПолучитьКонтролируемыеПоля() Экспорт
НачисленияФиксРасчет = Новый Массив;
НачисленияФиксРасчет.Добавить("Результат");
НачисленияФиксРасчетВремени = Новый Массив;
НачисленияФиксРасчетВремени.Добавить("ОтработаноДней");
НачисленияФиксРасчетВремени.Добавить("ОтработаноЧасов");
НачисленияФиксРасчетВремени.Добавить("ОплаченоДней");
НачисленияФиксРасчетВремени.Добавить("ОплаченоЧасов");
НачисленияФиксРасчетВремени.Добавить("НормаДней");
НачисленияФиксРасчетВремени.Добавить("НормаЧасов");
НачисленияФиксСтрока = Новый Массив;
НачисленияФиксСтрока.Добавить("Сотрудник");
НачисленияФиксСтрока.Добавить("Подразделение");
НачисленияФиксСтрока.Добавить("Начисление");
НачисленияФиксСтрока.Добавить("ДатаНачала");
НачисленияФиксСтрока.Добавить("ДатаОкончания");
НачисленияФиксЗаполнение = Новый Массив;
НачисленияФиксЗаполнение.Добавить("МестоПолученияДохода");
УдержанияФиксРасчет = Новый Массив;
УдержанияФиксРасчет.Добавить("Результат");
ТаблицаНачисления = Новый Структура;
ТаблицаНачисления.Вставить("ФиксРасчет", НачисленияФиксРасчет);
ТаблицаНачисления.Вставить("ФиксЗаполнение", НачисленияФиксЗаполнение);
ТаблицаНачисления.Вставить("ФиксСтрока", НачисленияФиксСтрока);
ТаблицаНачисления.Вставить("ФиксРасчетВремени", НачисленияФиксРасчетВремени);
ТаблицаПособия = Новый Структура;
ТаблицаПособия.Вставить("ФиксРасчет", НачисленияФиксРасчет);
ТаблицаПособия.Вставить("ФиксЗаполнение", Новый Массив);
ТаблицаПособия.Вставить("ФиксСтрока", НачисленияФиксСтрока);
ТаблицаУдержания = Новый Структура;
ТаблицаУдержания.Вставить("ФиксРасчет", УдержанияФиксРасчет);
ТаблицаУдержания.Вставить("ФиксЗаполнение", Новый Массив);
ТаблицаНачисленияПерерасчет = Новый Структура;
ТаблицаНачисленияПерерасчет.Вставить("ФиксРасчет", НачисленияФиксРасчет);
ТаблицаНачисленияПерерасчет.Вставить("ФиксЗаполнение", Новый Массив);
ТаблицаНачисленияПерерасчет.Вставить("ФиксСтрока", НачисленияФиксСтрока);
ТаблицаНачисленияПерерасчет.Вставить("ФиксРасчетВремени", НачисленияФиксРасчетВремени);
ТаблицаПособияПерерасчет = Новый Структура;
ТаблицаПособияПерерасчет.Вставить("ФиксРасчет", НачисленияФиксРасчет);
ТаблицаПособияПерерасчет.Вставить("ФиксЗаполнение", Новый Массив);
ТаблицаПособияПерерасчет.Вставить("ФиксСтрока", НачисленияФиксСтрока);
КонтролируемыеПоля = Новый Структура;
КонтролируемыеПоля.Вставить("Начисления", ТаблицаНачисления);
КонтролируемыеПоля.Вставить("Пособия", ТаблицаПособия);
КонтролируемыеПоля.Вставить("Удержания", ТаблицаУдержания);
КонтролируемыеПоля.Вставить("НДФЛ", УчетНДФЛРасширенный.КонтролируемыеПоляДляФиксацииРезультатов());
КонтролируемыеПоля.Вставить("КорректировкиВыплаты", РасчетЗарплатыРасширенный.КонтролируемыеПоляКорректировкиВыплатыДляФиксацииРезультатов());
КонтролируемыеПоля.Вставить("НачисленияПерерасчет", ТаблицаНачисленияПерерасчет);
КонтролируемыеПоля.Вставить("ПособияПерерасчет", ТаблицаПособияПерерасчет);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
МодульЛьготыСотрудников.ДополнитьСоставКонтролируемыхПолейНачисленияЗарплаты(КонтролируемыеПоля);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ДополнитьСоставКонтролируемыхПолейНачисленияЗарплаты(КонтролируемыеПоля);
КонецЕсли;
Возврат КонтролируемыеПоля;
КонецФункции
&НаКлиенте
Функция ПолучитьСтарыеЗначенияКонтролируемыхПолей() Экспорт
Возврат СтарыеЗначенияКонтролируемыхПолей;
КонецФункции
#КонецОбласти
#Область СреднийЗаработок
&НаСервере
Процедура ЗаполнитьПериодРасчетаСреднегоЗаработка()
Если Не ИспользуетсяРасчетЗарплаты Или
(Не РаботаВБюджетномУчреждении И Объект.ФиксПериодРасчетаСреднегоЗаработка) Или
(РаботаВБюджетномУчреждении И Объект.ФиксПериодРасчетаСреднегоЗаработка И Объект.ФиксПериодРасчетаСохраняемогоСодержания) Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ДатаУвольнения)
Или Не ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Возврат;
КонецЕсли;
ДатаНачалаСобытия = Объект.ДатаУвольнения;
Если ЭтоУвольнениеВПоследнийДеньМесяца(Объект) Тогда
ДатаНачалаСобытия = НачалоМесяца(ДобавитьМесяц(Объект.ДатаУвольнения, 1));
КонецЕсли;
ОбновлятьДанныеСреднегоЗаработка = Ложь;
ОбновлятьДанныеДенежногоСодержания = Ложь;
ПериодРасчетаСреднего = УчетСреднегоЗаработка.ПериодРасчетаОбщегоСреднегоЗаработкаСотрудника(
ДатаНачалаСобытия, Объект.Сотрудник, Объект.ВидРасчетаКомпенсацииУдержанияОтпуска);
Если НЕ Объект.ФиксПериодРасчетаСреднегоЗаработка Тогда
Если НачалоМесяца(Объект.ПериодРасчетаСреднегоЗаработкаНачало) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаНачала)
Или НачалоМесяца(Объект.ПериодРасчетаСреднегоЗаработкаОкончание) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаОкончания) Тогда
Объект.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднего.ДатаНачала;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = ПериодРасчетаСреднего.ДатаОкончания;
ОбновлятьДанныеСреднегоЗаработка = Истина;
КонецЕсли;
Если РассчитыватьСреднийЗаработокПриЗаполненииДокумента() Тогда
ТаблицыСреднего = Новый Массив;
ТаблицыСреднего.Добавить(Объект.СреднийЗаработокОбщий);
ТаблицыСреднего.Добавить(Объект.ОтработанноеВремяДляСреднегоОбщий);
УдаляемыеСтрокиСреднегоЗаработка = Новый Массив;
Для Каждого ТаблицаСреднего Из ТаблицыСреднего Цикл
УдаляемыеСтрокиСреднегоЗаработка.Очистить();
Для каждого СтрокаСреднего Из ТаблицаСреднего Цикл
Если СтрокаСреднего.Период >= НачалоМесяца(Объект.ПериодРегистрации) Тогда
УдаляемыеСтрокиСреднегоЗаработка.Добавить(СтрокаСреднего);
КонецЕсли;
КонецЦикла;
Для каждого УдаляемаяСтрока Из УдаляемыеСтрокиСреднегоЗаработка Цикл
ТаблицаСреднего.Удалить(УдаляемаяСтрока);
КонецЦикла;
КонецЦикла;
ОбновлятьДанныеСреднегоЗаработка = Истина;
КонецЕсли;
КонецЕсли;
Если НЕ Объект.ФиксПериодРасчетаСохраняемогоСодержания Тогда
Если НачалоМесяца(Объект.ПериодРасчетаСохраняемогоСодержанияНачало) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаНачала)
Или НачалоМесяца(Объект.ПериодРасчетаСохраняемогоСодержанияОкончание) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаОкончания) Тогда
Объект.ПериодРасчетаСохраняемогоСодержанияНачало = ПериодРасчетаСреднего.ДатаНачала;
Объект.ПериодРасчетаСохраняемогоСодержанияОкончание = ПериодРасчетаСреднего.ДатаОкончания;
ОбновлятьДанныеДенежногоСодержания = Истина;
КонецЕсли;
КонецЕсли;
Если ОбновлятьДанныеСреднегоЗаработка Тогда
ОбновитьДанныеДляРасчетаСреднего();
КонецЕсли;
Если ОбновлятьДанныеДенежногоСодержания И Объект.РасчетДенежногоСодержания Тогда
ОбновитьДанныеДляРасчетаСохраняемогоДенежногоСодержания();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПериодРасчетаСреднегоЗаработкаФСС()
Если Объект.ФиксПериодРасчетаСреднегоЗаработкаСФР Тогда
Возврат;
КонецЕсли;
ПериодРасчетаСреднего = УчетПособийСоциальногоСтрахованияКлиентСервер.ПериодРасчетаСреднегоЗаработкаФСС(Объект.ДатаУвольнения, ПорядокРасчетаСреднегоЗаработкаФСС());
Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = Год(ПериодРасчетаСреднего.ДатаНачала);
Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = Год(ПериодРасчетаСреднего.ДатаОкончания);
ОбновитьДанныеДляРасчетаСреднегоФСС();
ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоУвольнениеВПоследнийДеньМесяца(Объект)
Возврат КонецДня(Объект.ДатаУвольнения) = КонецМесяца(Объект.ДатаУвольнения);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоУвольнениеБудущимМесяцем(Объект)
Возврат НачалоДня(Объект.ДатаУвольнения) > КонецМесяца(Объект.ПериодРегистрации);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоУвольнениеВМесяцеПриемаНаРаботу(ДатаУвольнения, ДатаПриема)
Возврат НачалоМесяца(ДатаУвольнения) = НачалоМесяца(ДатаПриема);
КонецФункции
&НаСервере
Функция РассчитыватьСреднийЗаработокПриЗаполненииДокумента()
Возврат ЭтоУвольнениеВПоследнийДеньМесяца(Объект)
Или ЭтоУвольнениеБудущимМесяцем(Объект)
Или ЭтоУвольнениеВМесяцеПриемаНаРаботу(Объект.ДатаУвольнения, ДатаПриемаНаРаботу)
Или НачалоМесяца(Объект.ПериодРасчетаСреднегоЗаработкаНачало) = НачалоМесяца(Объект.ДатаУвольнения)
Или Объект.МесяцНачалаРасчетов < НачалоМесяца(Объект.ДатаУвольнения);
КонецФункции
&НаСервере
Процедура РассчитатьСреднийЗаработок()
УстановитьПривилегированныйРежим(Истина);
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаУвольнения + 86400;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = КадровыйУчетРасширенныйКлиентСервер.ЭтоСреднечасовойЗаработокВДокументеУвольнение();
Для Каждого КлючИЗначение Из СпособыРасчетаСреднегоЗаработка Цикл
ДополнительныеПараметры.СпособРасчетаОтпуска = КлючИЗначение.Значение;
ЗначенияПоказателей = УчетСреднегоЗаработкаКлиентСервер.ЗначенияПоказателейСреднегоЗаработкаОбщего(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
Объект[КлючИЗначение.Ключ] = ЗначенияПоказателей.СреднийЗаработокОбщий;
Если ПолучитьФункциональнуюОпцию("ИндексироватьСреднийЗаработокЧастично") Тогда
УчетСреднегоЗаработка.ЗаполнитьДанныеЧастичнойИндексацииОтпусков(Объект, ЗначенияПоказателей, КлючИЗначение.Ключ);
КонецЕсли;
КонецЦикла;
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаУвольнения + 86400;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = ИспользуетсяСреднечасовойЗаработок;
Объект.СреднийЗаработокВыходногоПособия = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработокОбщий(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
ЗаполнениеВыполнено = Истина;
ЗаполнитьИнформациюЗаполненностиДанных();
КонецПроцедуры
&НаСервере
Процедура РассчитатьСохраняемоеДенежноеСодержание()
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
МодульРасчетДенежногоСодержания = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
МодульРасчетДенежногоСодержания.РассчитатьСохраняемоеДенежноеСодержаниеДокумента(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
КонецЕсли;
ЗаполнениеВыполнено = Истина;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСохраняемогоДенежногоСодержания()
Если НЕ ОбновитьРасчетДенежногоСодержания Тогда
Возврат;
КонецЕсли;
ОбновитьРасчетДенежногоСодержания = Ложь;
РасчетДенежногоСодержанияРедактировался = Ложь;
Если НЕ ЭтоГосслужащий() Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
Модуль.ОбновитьДанныеСохраняемогоДенежногоСодержанияДокумента(СтруктураОбъекта,,,Объект);
КонецЕсли;
РассчитатьСохраняемоеДенежноеСодержание();
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСреднего()
УстановитьПривилегированныйРежим(Истина);
ДанныеСреднегоЗаработка = Новый Структура("ДанныеОНачислениях, ДанныеОВремени, ДанныеОбИндексации");
ДанныеСреднегоЗаработка.ДанныеОНачислениях = Объект.СреднийЗаработокОбщий;
ДанныеСреднегоЗаработка.ДанныеОВремени = Объект.ОтработанноеВремяДляСреднегоОбщий;
ДанныеСреднегоЗаработка.ДанныеОбИндексации = Объект.ДанныеОбИндексации;
УчетСреднегоЗаработка.ОбновитьДанныеОбщегоСреднегоЗаработка(
ДанныеСреднегоЗаработка,
Объект.ДатаУвольнения + 86400,
Объект.ПериодРасчетаСреднегоЗаработкаНачало,
Объект.ПериодРасчетаСреднегоЗаработкаОкончание,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник), ,
СсылкаНаОбъект);
ЗаполнитьИнформациюЗаполненностиДанных();
РассчитатьСреднийЗаработок();
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСреднегоФСС()
Если Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = 0 Или Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = 0 Тогда
ПериодРасчетаСреднего = УчетПособийСоциальногоСтрахованияКлиентСервер.ПериодРасчетаСреднегоЗаработкаФСС(Объект.ДатаУвольнения, ПорядокРасчетаСреднегоЗаработкаФСС());
Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = Год(ПериодРасчетаСреднего.ДатаНачала);
Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = Год(ПериодРасчетаСреднего.ДатаОкончания);
ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС();
КонецЕсли;
ПериодРасчетаСреднегоЗаработкаНачало = Дата(Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод, 1, 1);
ПериодРасчетаСреднегоЗаработкаОкончание = Дата(Объект.ПериодРасчетаСреднегоЗаработкаВторойГод, 12, 31);
ПараметрыПолучения = УчетПособийСоциальногоСтрахованияРасширенный.СтруктураПараметровПолученияСреднегоЗаработка();
ПараметрыПолучения.ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(Объект.Организация);
ПараметрыПолучения.ФизическоеЛицо = Объект.ФизическоеЛицо;
ПараметрыПолучения.Сотрудник = Объект.Сотрудник;
ПараметрыПолучения.НачалоПериода = ПериодРасчетаСреднегоЗаработкаНачало;
ПараметрыПолучения.ОкончаниеПериода = ПериодРасчетаСреднегоЗаработкаОкончание;
ПараметрыПолучения.ПорядокРасчета = ПорядокРасчетаСреднегоЗаработкаФСС();
Результат = УчетПособийСоциальногоСтрахованияРасширенный.СтруктураРезультатаПолученияСреднегоЗаработка();
Результат.ДанныеОНачислениях = Объект.СреднийЗаработокФСС;
Результат.ДанныеОВремени = Объект.ОтработанноеВремяДляСреднегоФСС;
Результат.ДанныеСтрахователей = Объект.СреднийЗаработокДанныеСтрахователей;
Результат.ПериодыОтсутствий = Объект.ПериодыБолезниУходаЗаДетьми;
Результат.СреднийЗаработокСЭДО = Объект.СреднийЗаработокСЭДО;
УчетПособийСоциальногоСтрахованияРасширенный.ПолучитьСреднийЗаработокСотрудника(ПараметрыПолучения, Результат);
ЗаполнитьИнформациюОЗаполненностиДанныхСреднегоФСС();
РассчитатьСреднийЗаработокФСС();
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеСреднечасовогоЗаработка()
ИспользуетсяСреднечасовойЗаработок = Ложь;
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Объект.СуммированныйУчет = УчетРабочегоВремениРасширенный.СотрудникуПрименяетсяСуммированныйУчетРабочегоВремени(Объект.Сотрудник, Объект.ДатаУвольнения);
Если Объект.СуммированныйУчет Тогда
ИспользуетсяСреднечасовойЗаработок = Истина;
Возврат;
КонецЕсли;
Если УчетСреднегоЗаработка.НачислениеИспользуетСреднечасовойЗаработок(Объект.ВыходноеПособие) Тогда
ИспользуетсяСреднечасовойЗаработок = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеОплатыПереработокСуммированногоУчета()
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
ИспользуетсяОплатаСуммированногоУчета = ПолучитьФункциональнуюОпцию("ИспользоватьОплатуПереработокСуммированногоУчета");
Если Не ИспользуетсяОплатаСуммированногоУчета Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
УстановитьПривилегированныйРежим(Истина);
ПериодСуммированногоУчета = УчетРабочегоВремениРасширенный.ПериодСуммированногоУчетаПоПрошлымДокументам(Объект.Организация, Объект.ДатаУвольнения, Объект.Сотрудник);
Если ПериодСуммированногоУчета = Неопределено Тогда
Запрос.УстановитьПараметр("ДатаНачала", Объект.ДатаУвольнения);
Запрос.УстановитьПараметр("ДатаОкончания", Объект.ДатаУвольнения);
Иначе
Запрос.УстановитьПараметр("ДатаНачала", ПериодСуммированногоУчета.ПериодСуммированногоУчетаНачало);
Запрос.УстановитьПараметр("ДатаОкончания", ПериодСуммированногоУчета.ПериодСуммированногоУчетаОкончание);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| &Сотрудник КАК Сотрудник,
| &ДатаНачала КАК ДатаНачала,
| &ДатаОкончания КАК ДатаОкончания
|ПОМЕСТИТЬ ВТСотрудникиПериоды";
Запрос.Выполнить();
РасчетЗарплатыРасширенный.СоздатьВТПериодыРаботыСотрудниковНаСуммированномУчете(Запрос.МенеджерВременныхТаблиц);
ИспользоватьОплатуПереработокСуммированногоУчета =
ЗарплатаКадры.ВТСодержитСтроки(Запрос.МенеджерВременныхТаблиц, "ВТПериодыРаботыСотрудниковНаСуммированномУчете");
УстановитьПривилегированныйРежим(Ложь);
Иначе
ИспользоватьОплатуПереработокСуммированногоУчета = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыРасчетаСреднегоДневногоЗаработкаФСС()
ПериодРасчетаСреднегоЗаработкаНачало = Дата(?(Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = 0, 1, Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод), 1, 1);
ПериодРасчетаСреднегоЗаработкаОкончание = Дата(?(Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = 0, 1, Объект.ПериодРасчетаСреднегоЗаработкаВторойГод), 12, 31);
ПараметрыРасчета = УчетПособийСоциальногоСтрахованияКлиентСервер.ПараметрыРасчетаСреднегоДневногоЗаработкаФСС();
ПараметрыРасчета.ДатаНачалаСобытия = Объект.ДатаУвольнения;
ПараметрыРасчета.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднегоЗаработкаНачало;
ПараметрыРасчета.ПериодРасчетаСреднегоЗаработкаОкончание = ПериодРасчетаСреднегоЗаработкаОкончание;
ПараметрыРасчета.РасчетныеГоды = УчетПособийСоциальногоСтрахования.ГодыПериодаРасчетаСреднего(Объект);
ПараметрыРасчета.ПрименяетсяФЗ_421_2014 = УчетПособийСоциальногоСтрахования.ПрименяетсяФЗ_421_2014(Объект.ФизическоеЛицо, Объект.ДатаУвольнения);
ПараметрыРасчета.ПрименяетсяФЗ_20_2023 = УчетПособийСоциальногоСтрахования.ПрименяетсяФЗ_20_2023(Объект.ФизическоеЛицо, Объект.ДатаУвольнения);
ПараметрыРасчета.ДанныеНачислений = Объект.СреднийЗаработокФСС;
ПараметрыРасчета.ДанныеСтрахователей = Объект.СреднийЗаработокДанныеСтрахователей;
ПараметрыРасчета.СреднийЗаработокСЭДО = Объект.СреднийЗаработокСЭДО;
ПараметрыРасчета.УчитыватьЗаработокПредыдущихСтрахователей = Объект.УчитыватьЗаработокПредыдущихСтрахователей;
ПараметрыРасчета.ДанныеВремени = Объект.ОтработанноеВремяДляСреднегоФСС;
ПараметрыРасчета.ИспользоватьДниБолезниУходаЗаДетьми = Истина;
ПараметрыРасчета.ПорядокРасчета = ПорядокРасчетаСреднегоЗаработкаФСС();
ПараметрыРасчета.РайонныйКоэффициентРФ = Объект.РайонныйКоэффициентРФНаНачалоСобытия;
ПараметрыРасчета.ДоляНеполногоВремени = Объект.ДоляНеполногоВремени;
ПараметрыРасчета.Сотрудник = Объект.Сотрудник;
Если ПараметрыРасчета.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2010 Тогда
ПараметрыРасчета.ПрименятьПредельнуюВеличину = Ложь;
ИначеЕсли ПараметрыРасчета.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2011 Тогда
ПараметрыРасчета.ПрименятьПредельнуюВеличину = Истина;
КонецЕсли;
Возврат ПараметрыРасчета;
КонецФункции
&НаСервере
Функция ПорядокРасчетаСреднегоЗаработкаФСС()
ПорядокРасчета = УчетПособийСоциальногоСтрахованияКлиентСервер.ПорядокРасчетаСреднегоЗаработкаФСС(Объект.ДатаУвольнения);
Возврат ПорядокРасчета;
КонецФункции
&НаСервере
Процедура РассчитатьСреднийЗаработокФСС()
ШаблонПараметровСтрокой = ОбщегоНазначения.ЗначениеВСтрокуXML(ПараметрыРасчетаСреднегоДневногоЗаработкаФСС());
ПараметрыРасчетаУчетОрганизации = ОбщегоНазначения.ЗначениеИзСтрокиXML(ШаблонПараметровСтрокой);
ПараметрыРасчетаУчетОрганизации.ПолучатьДанныеПоГодам = Истина;
СреднийПоДаннымОрганизации = УчетПособийСоциальногоСтрахования.СреднийДневнойЗаработокФСС(ПараметрыРасчетаУчетОрганизации);
ПараметрыРасчетаУчетФонда = ОбщегоНазначения.ЗначениеИзСтрокиXML(ШаблонПараметровСтрокой);
ПараметрыРасчетаУчетФонда.ИсточникСреднего = Перечисления.ИсточникиСреднегоДляПособий.УчетФонда;
ПараметрыРасчетаУчетФонда.ПолучатьДанныеПоГодам = Истина;
СреднийПоДаннымУчетаФонда = УчетПособийСоциальногоСтрахования.СреднийДневнойЗаработокФСС(ПараметрыРасчетаУчетФонда);
Если Не ЗначениеЗаполнено(Объект.ИсточникСреднего)
И Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод >= СЭДОФСС.ГодНачалаСведенийОСреднемЗаработкеСФР() Тогда
Объект.ИсточникСреднего = СЭДОФСС.ИсточникСреднегоПоУмолчанию(
Объект.Организация,
Объект.ФизическоеЛицо,
Объект.ДатаУвольнения,
Объект.УчитыватьЗаработокПредыдущихСтрахователей);
Если Не ЗначениеЗаполнено(Объект.ИсточникСреднего) Тогда
Максимальный = Макс(СреднийПоДаннымОрганизации,СреднийПоДаннымУчетаФонда);
Если Максимальный = СреднийПоДаннымОрганизации Тогда
Объект.ИсточникСреднего = Перечисления.ИсточникиСреднегоДляПособий.УчетОрганизации;
Иначе
Объект.ИсточникСреднего = Перечисления.ИсточникиСреднегоДляПособий.УчетФонда;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Объект.СреднийЗаработокСФР = ?(Объект.ИсточникСреднего = Перечисления.ИсточникиСреднегоДляПособий.УчетОрганизации, СреднийПоДаннымОрганизации, СреднийПоДаннымУчетаФонда);
ПараметрыРасчета = ?(ПараметрыРасчетаУчетОрганизации.ИсточникСреднего = Объект.ИсточникСреднего, ПараметрыРасчетаУчетОрганизации, ПараметрыРасчетаУчетФонда);
Объект.МинимальныйСреднедневнойЗаработок = УчетПособийСоциальногоСтрахования.МинимальныйСреднедневнойЗаработокФСС(ПараметрыРасчета);
ЗаполнитьЗначенияСвойств(Объект, ИнформацияОВыбранномСреднемЗаработкеСЭДО(ПараметрыРасчета));
ЗаполнитьИнформациюОЗаполненностиДанныхСреднегоФСС();
КонецПроцедуры
#КонецОбласти
#Область РедактированиеНДФЛ
&НаСервере
Функция НДФЛПодробнееНаСервере(ФизическоеЛицо)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(ДокументОбъект);
Возврат УчетНДФЛФормы.РегистрНалоговогоУчетаПоНДФЛ(ДокументОбъект, Модифицированность, ФизическоеЛицо, Объект.ПериодРегистрации);
КонецФункции
&НаКлиенте
Процедура ВычетыПриОкончанииРедактирования(ТекущиеДанные, ОтменаРедактирования, КлючиПоиска)
Если Не Элементы[ОписаниеПанелиВычеты().ТабличнаяЧастьНДФЛ.ИмяТаблицыФормы].ТекущиеДанные.ФиксРасчет Тогда
Если УчетНДФЛКлиентРасширенный.ВычетыИзменены(ЭтотОбъект, ТекущиеДанные, ОтменаРедактирования) Тогда
СтруктураПоиска = Новый Структура(КлючиПоиска);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ТекущиеДанные);
УстановитьФиксРасчетСтрокНДФЛ(СтруктураПоиска);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредставлениеВычетовНаДетейИИмущественныхСтрокиНДФЛ()
УчетНДФЛФормы.ОбновитьПредставлениеВычетовНаДетейИИмущественныхСтрокиНДФЛ(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредставлениеВычетовКДоходамСтрокиНДФЛ()
УчетНДФЛФормы.ОбновитьПредставлениеВычетовКДоходамСтрокиНДФЛ(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьФиксРасчетСтрокНДФЛ(СтруктураПоиска)
УчетНДФЛФормы.УстановитьФиксРасчетСтрокНДФЛ(ЭтотОбъект, СтруктураПоиска);
КонецПроцедуры
#КонецОбласти
#Область СервернаяЧастьОбработчиковСобытийЭлементовФормы
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()
ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей();
УстановитьФункциональныеОпцииФормы();
РасчетЗарплатыРасширенныйФормы.ДополнитьДанныеФормыРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда(), РегистрацияНачисленийДоступна);
УстановитьПривилегированныйРежим(Истина);
ЗаполнитьДанныеФормыПоОрганизации();
РасчетЗарплатыРасширенныйФормы.ОбновитьПлановыеДатыВыплатыПоОрганизации(ЭтотОбъект);
УстановитьПланируемуюДатуВыплаты();
ОтражениеЗарплатыВБухучетеРасширенный.ОбработатьИзменениеОрганизацииПроцентЕНВД(ЭтотОбъект, Объект.Организация, Объект.ПериодРегистрации);
УстановитьПривилегированныйРежим(Ложь);
ОбновитьСтраницуУведомленияОПрекращенииПособия();
ОбновитьЭлементыПособий();
ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(Объект.Организация);
ЭлектронныеТрудовыеКнижки.ЗаполнитьНаименованиеДокумента(Объект, "Увольнение");
КонецПроцедуры
&НаСервере
Процедура СотрудникПриИзмененииНаСервере()
ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей();
ОбновитьМесяцНачалаРасчетов(ЭтотОбъект);
Объект.ФиксКоличествоДнейКомпенсацииОтпуска = Ложь;
Если Не ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Объект.ФизическоеЛицо = Неопределено;
Иначе
КадровыеДанные = КадровыеДанныеСотрудника();
Если КадровыеДанные <> Неопределено Тогда
Если Не ЗначениеЗаполнено(КадровыеДанные.ДатаРождения)
И Объект.ПериодРегистрации < УчетСтраховыхВзносовКлиентСервер.ДатаОбъединенияСтраховойИНакопительнойЧастейВзносовПФР() Тогда
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='У %1 не заполнена дата рождения'"),
Объект.Сотрудник);
Объект.Сотрудник = Неопределено;
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Объект.ФизическоеЛицо = КадровыеДанные.ФизическоеЛицо;
УстановитьПризнакУвольненияОсновногоСотрудника(КадровыеДанные.ВидЗанятости);
УстановитьПризнакПредоставленияМероприятийТДВЭлектроннойФорме(КадровыеДанные.ЗаявленияОПредоставленииСведенийОТрудовойДеятельностиВид);
КонецЕсли;
КонецЕсли;
Если Не Объект.УвольнениеСОсновногоМестаРаботы Тогда
Объект.ОтразитьВТрудовойКнижке = ЭлектронныеТрудовыеКнижкиВызовСервера.ОтражениеВТрудовойКнижкеСовместительств();
КонецЕсли;
ОбновитьВидимостьПричиныУвольнения();
ОчиститьДанныеСреднегоЗаработка();
ОчиститьНачисления();
ОбновитьДанныеПоСотруднику();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
ЗаполнитьОтработанныеДни();
ЗаполнитьОтработанныеЧасы();
УстановитьПредставлениеОтработанныхДней();
ОбновитьСправкиСотрудника();
ОбновитьПодключаемыеКоманды(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция КадровыеДанныеСотрудника(СтрокаДополнительныхРеквизитов = "")
УстановитьПривилегированныйРежим(Истина);
КадровыеДанные = "ДатаРождения,ДатаПриема,ВидЗанятости,ЗаявленияОПредоставленииСведенийОТрудовойДеятельностиВид,ВидДоговора";
Если Не ПустаяСтрока(СтрокаДополнительныхРеквизитов) Тогда
КадровыеДанные = КадровыеДанные + "," + СтрокаДополнительныхРеквизитов;
КонецЕсли;
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, Объект.Сотрудник, КадровыеДанные);
УстановитьПривилегированныйРежим(Ложь);
Если КадровыеДанные.Количество() > 0 Тогда
Возврат КадровыеДанные[0];
КонецЕсли;
Возврат Неопределено;
КонецФункции
&НаСервере
Процедура УстановитьПризнакУвольненияОсновногоСотрудника(ВидЗанятости)
Объект.УвольнениеСОсновногоМестаРаботы =
(ВидЗанятости <> Перечисления.ВидыЗанятости.ВнутреннееСовместительство);
УстановитьДоступностьОтображенияВТрудовойКнижке();
КонецПроцедуры
&НаСервере
Процедура УстановитьПризнакПредоставленияМероприятийТДВЭлектроннойФорме(ВидЗаявления)
Объект.ПредоставлятьМероприятияТДВЭлектроннойФорме =
(ВидЗаявления = Перечисления.ВидыЗаявленийОПредоставленииСведенийОТрудовойДеятельности.СведенияОТрудовойДеятельностиВЭлектроннойФорме);
КонецПроцедуры
&НаСервере
Процедура ДатаУвольненияПриИзмененииНаСервере(ЭтоИсправление = Ложь)
ОбновитьМесяцНачалаРасчетов(ЭтотОбъект);
УстановитьПланируемуюДатуВыплаты();
ОбновитьДанныеПоСотруднику(ЭтоИсправление);
Если ОбщегоНазначенияБЗККлиентСервер.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнениеКлиентСервер = ОбщегоНазначенияБЗККлиентСервер.ОбщийМодуль("ДосрочноеУвольнениеКлиентСервер");
МодульДосрочноеУвольнениеКлиентСервер.УстановитьНеобходимостьРасчетаДнейЧасовКомпенсацииЗаНеотработанноеВремя(ЭтотОбъект);
КонецЕсли;
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
Объект.ДатаРасчетаДенежногоСодержания = Объект.ДатаУвольнения;
Если Не ЭтоИсправление Тогда
ЗаполнитьОтработанныеДни();
ЗаполнитьОтработанныеЧасы();
КонецЕсли;
УстановитьПредставлениеОтработанныхДней();
ОбновитьВидимостьЭлементовВыходногоПособия();
КонецПроцедуры
#Область ОчиститьОбновитьДанныеПоСотруднику
&НаСервере
Процедура ОчиститьДанныеСреднегоЗаработка()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
Объект.ДанныеОбИндексации.Очистить();
Объект.СреднийЗаработокФСС.Очистить();
Объект.ОтработанноеВремяДляСреднегоФСС.Очистить();
Объект.СреднийЗаработокСЭДО.Очистить();
Объект.СреднийЗаработокДанныеСтрахователей.Очистить();
Объект.СреднийЗаработокПоРабочимДням = Неопределено;
Объект.СреднийЗаработокВыходногоПособия = Неопределено;
Объект.СреднийЗаработок = Неопределено;
Объект.СреднийЗаработокСФР = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаНачало = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаВторойГод = Неопределено;
Объект.ПервыйРасчетныйГодЗаработок = Неопределено;
Объект.ПервыйРасчетныйГодОснование = Неопределено;
Объект.ВторойРасчетныйГодЗаработок = Неопределено;
Объект.ВторойРасчетныйГодОснование = Неопределено;
Объект.ПериодРасчетаСохраняемогоСодержанияНачало = Неопределено;
Объект.ПериодРасчетаСохраняемогоСодержанияОкончание = Неопределено;
Объект.ДенежноеСодержание.Очистить();
Объект.ДенежноеСодержаниеФактическиеНачисления.Очистить();
УстановитьПредупреждениеДокументНеРассчитан(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОчиститьНачисления()
Объект.Начисления.Очистить();
Объект.НачисленияПерерасчет.Очистить();
Объект.РаспределениеПоТерриториямУсловиямТруда.Очистить();
ОбновитьИтоги(ЭтотОбъект, НачисленияГрупп());
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеПоСотруднику(ЭтоИсправление = Ложь)
УстановитьПривилегированныйРежим(Истина);
ЗаполнитьВторичныеДанныеСотрудникаВФорме();
УстановитьСтраницуОсновногоСреднегоЗаработка();
УстановитьТипОснованияУвольнения();
УстановитьИспользованиеСреднечасовогоЗаработка();
УстановитьИспользованиеОплатыПереработокСуммированногоУчета();
Элементы.ДнейЧасовВыходногоПособия.Подсказка = НадписьДнейЧасов();
Элементы.СреднемесячноеКоличествоДнейЧасов.Заголовок = ЗаголовокСреднемесячногоКоличестваДнейЧасов();
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеУстановитьНадписьДнейЧасовКомпенсацииЗаНеотработанноеВремя(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ИспытательныйСрокСотрудников") Тогда
МодульИспытательныйСрокСотрудников = ОбщегоНазначения.ОбщийМодуль("ИспытательныйСрокСотрудников");
МодульИспытательныйСрокСотрудников.СостояниеСотрудникаПриИзменении(ЭтотОбъект);
КонецЕсли;
Если Не Объект.ФиксКоличествоДнейКомпенсацииОтпуска Тогда
РассчитатьКоличествоДнейКомпенсацииУдержанияОтпускаНаСервере();
КонецЕсли;
РассчитатьКоличествоЧасовКомпенсацииСуммированногоУчетаНаСервере();
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьТипЗначенияВидаРасчета(Объект);
КонецЕсли;
УстановитьДоступностьЭлементовФормы(ЭтотОбъект, ЭтотОбъект.Объект);
УстановитьВидимостьСуммированногоУчета();
УстановитьОтметкуНезаполненногоДнейКомпенсацииУдержанияОтпуска();
ОбновитьФормуПоВидуДоговора();
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
Объект.ФиксПериодРасчетаСохраняемогоСодержания = Ложь;
Объект.ФиксПериодРасчетаСреднегоЗаработкаСФР = Ложь;
ЗаполнитьКадровыйРезерв();
УстановитьВидимостьПерерасчетов();
Если Не ЭтоИсправление Тогда
ОбновитьДанныеОстатковОтгулов(Истина);
КонецЕсли;
ОбновитьСтраницуУведомленияОПрекращенииПособия();
ОбновитьЭлементыПособий();
УстановитьВидимостьСтраницыСправокПриУвольнении();
ОбновитьИнформациюОБудущихМероприятиях();
ОчиститьДанныеСреднегоЗаработка();
ЗаполнитьПериодРасчетаСреднегоЗаработка();
ЗаполнитьПериодРасчетаСреднегоЗаработкаФСС();
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
ИменаКадровыхДанных =
"Организация,
|Подразделение,
|Территория,
|ФизическоеЛицо,
|РайонныйКоэффициентРФ,
|ЛьготаПриНачисленииПособий,
|ДоляНеполногоРабочегоВремени,
|ГрафикРаботы";
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудника(
Истина,
Объект.Сотрудник,
ИменаКадровыхДанных,
Объект.ДатаУвольнения);
ОбновитьДолюНеполногоВремени(КадровыеДанные);
ОбновитьРайонныйКоэффициентРФНаНачалоСобытия(КадровыеДанные);
ОбновитьПризнакСеверныхТерриториальныхУсловий(КадровыеДанные);
РассчитатьСреднемесячноеКоличествоДнейЧасовПоГрафику(КадровыеДанные);
Если РасчетВыходногоПособияПоПостановлению504() Тогда
РассчитатьДнейЧасовВыходногоПособия();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДолюНеполногоВремени(КадровыеДанные)
Объект.ДоляНеполногоВремени = КадровыеДанные.ДоляНеполногоРабочегоВремени;
КонецПроцедуры
&НаСервере
Процедура ОбновитьРайонныйКоэффициентРФНаНачалоСобытия(КадровыеДанные)
Если ТипЗнч(КадровыеДанные.РайонныйКоэффициентРФ) = Тип("Число")
И КадровыеДанные.РайонныйКоэффициентРФ >= 1 Тогда
Объект.РайонныйКоэффициентРФНаНачалоСобытия = КадровыеДанные.РайонныйКоэффициентРФ;
Иначе
ОбъектРК = РасчетЗарплатыРасширенный.ИсточникРайонногоКоэффициентаРФ(КадровыеДанные);
Если Не ЗначениеЗаполнено(ОбъектРК) Тогда
ОбъектРК = Объект.Организация;
КонецЕсли;
Объект.РайонныйКоэффициентРФНаНачалоСобытия = РасчетЗарплатыРасширенный.РайонныйКоэффициентРФ(ОбъектРК);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьКоличествоДнейКомпенсацииУдержанияОтпускаНаСервере(РассчитатьДополнительныеОтпуска = Истина)
Объект.ПризнакКомпенсацииУдержанияОтпуска = Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать;
Объект.ДнейКомпенсацииУдержанияОтпуска = Неопределено;
Объект.РабочийГодС = Неопределено;
Объект.РабочийГодПо = Неопределено;
Если РассчитатьДополнительныеОтпуска Тогда
Объект.ДополнительныеОтпуска.Очистить();
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Сотрудник) Или Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Возврат
КонецЕсли;
ИсключаемыеРегистраторы = ИсключаемыеРегистраторы();
ОтраслевыеОсобенности = Неопределено;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
МодульОбразовательныеУчрежденияФормы = ОбщегоНазначения.ОбщийМодуль("ОбразовательныеУчрежденияФормы");
ОтраслевыеОсобенности = МодульОбразовательныеУчрежденияФормы.ПолучитьПланПримененияОсобенностей(ЭтотОбъект);
КонецЕсли;
Результат = ОстаткиОтпусков.ОстатокОтпускаСотрудникаНаДату(
Объект.Сотрудник,
Объект.ДатаУвольнения,
ИсключаемыеРегистраторы,
Истина,
ОтраслевыеОсобенности,
Объект.СтатьяТКРФ);
Если ОтраслевыеОсобенности <> Неопределено Тогда
МодульОбразовательныеУчрежденияФормы.ВывестиИндикаторыОсобенностейКомпенсации(ЭтотОбъект, ОтраслевыеОсобенности);
КонецЕсли;
Объект.РабочийГодС = Результат.РабочийГодС;
Объект.РабочийГодПо = Объект.ДатаУвольнения;
ВидыОтпусковНеПодлежащихКомпенсацииПриУвольнении = ОстаткиОтпусков.ВидыОтпусковНеПодлежащихКомпенсацииПриУвольнении();
ВидОтпускаОсновной = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной");
Для Каждого Остаток Из Результат.ОстаткиВРазрезеВидовОтпусков Цикл
Если НЕ ВидыОтпусковНеПодлежащихКомпенсацииПриУвольнении.Найти(Остаток.ВидЕжегодногоОтпуска) = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Остаток.ВидЕжегодногоОтпуска = ВидОтпускаОсновной Тогда
Объект.ПризнакКомпенсацииУдержанияОтпуска = ?(Остаток.КоличествоДней > 0, Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные,Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом);
Объект.ДнейКомпенсацииУдержанияОтпуска = ?(Остаток.КоличествоДней > 0, Остаток.КоличествоДней, Остаток.КоличествоДней * (-1));
Объект.РабочийГодС = Остаток.РабочийГодС;
Объект.РабочийГодПо = Объект.ДатаУвольнения;
ИначеЕсли РассчитатьДополнительныеОтпуска Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная") Тогда
Строка = Объект.ДополнительныеОтпуска.Добавить();
Строка.ВидОтпуска = Остаток.ВидЕжегодногоОтпуска;
Строка.ПризнакКомпенсацииУдержания = ?(Остаток.КоличествоДней > 0, Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные,Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом);
Строка.ДнейКомпенсацииУдержания = ?(Остаток.КоличествоДней > 0, Остаток.КоличествоДней, Остаток.КоличествоДней * (-1));
Строка.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск = Остаток.РабочийГодС;
Строка.КонецПериодаЗаКоторыйПредоставляетсяОтпуск = Мин(Объект.ДатаУвольнения, Остаток.РабочийГодПо);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НастроитьОтображениеДнейКомпенсации();
ПризнакКомпенсацииОтпускаПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура РассчитатьКоличествоЧасовКомпенсацииСуммированногоУчетаНаСервере()
Объект.Сверхурочно1_5 = 0;
Объект.Сверхурочно2 = 0;
Если НЕ ЗначениеЗаполнено(Объект.Сотрудник)
Или Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Возврат;
КонецЕсли;
Если НЕ ИспользоватьОплатуПереработокСуммированногоУчета Тогда
Возврат;
КонецЕсли;
ПериодСуммированногоУчета = УчетРабочегоВремениРасширенный.ПериодСуммированногоУчетаПоПрошлымДокументам(Объект.Организация, Объект.ДатаУвольнения, Объект.Сотрудник);
Если ПериодСуммированногоУчета = Неопределено Тогда
Возврат;
КонецЕсли;
ТаблицаСотрудников = РасчетЗарплатыРасширенный.ПоказателиСуммированногоУчетаСотрудниковЗаПериод(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник),
НачалоМесяца(ПериодСуммированногоУчета.ПериодСуммированногоУчетаНачало),
КонецДня(Объект.ДатаУвольнения));
Если ТаблицаСотрудников.Количество() > 0 Тогда
Объект.Сверхурочно1_5 = Макс(ТаблицаСотрудников[0].Переработки, 0);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьСреднемесячноеКоличествоДнейЧасовПоГрафику(КадровыеДанные)
СреднемесячноеВремя = УчетРабочегоВремениРасширенный.СреднемесячноеКоличествоДнейЧасовПоПроизводственномуКалендарю(КадровыеДанные.ГрафикРаботы, Год(Объект.ДатаУвольнения));
Если ИспользуетсяСреднечасовойЗаработок Тогда
Объект.СреднемесячноеКоличествоДнейЧасов = СреднемесячноеВремя.РабочиеЧасы;
Иначе
Объект.СреднемесячноеКоличествоДнейЧасов = СреднемесячноеВремя.РабочиеДни;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьДнейЧасовВыходногоПособия()
Объект.ДнейЧасовВыходногоПособия = Объект.СреднемесячноеКоличествоДнейЧасов * Объект.КратностьВыходногоПособия;
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ДнейЧасовВыходногоПособияПриИзмененииНаСервере()
УстановитьПривилегированныйРежим(Истина);
ОбновитьФормуПоВидуДоговора();
ЗаполнитьВидРасчетаВыходногоПособия();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура КоличествоМесяцевВыплатыДенежногоСодержанияПриИзмененииНаСервере()
УстановитьПривилегированныйРежим(Истина);
ЗаполнитьВидРасчетаМесячноеДенежноеСодержание();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура ОбработатьИзменениеМесяцНачисленияНаСервере()
ОбновитьМесяцНачалаРасчетов(ЭтотОбъект);
УстановитьПланируемуюДатуВыплаты();
УстановитьФункциональныеОпцииФормы();
УстановитьПривилегированныйРежим(Истина);
ОтражениеЗарплатыВБухучетеРасширенный.ОбработатьИзменениеМесяцНачисленияПроцентЕНВД(ЭтотОбъект, Объект.Организация, Объект.ПериодРегистрации);
УчетСтраховыхВзносов.УстановитьВидимостьКолонокТаблицыСтраховыхВзносов(ЭтотОбъект, Объект.ПериодРегистрации);
УстановитьПривилегированныйРежим(Ложь);
УстановитьВидимостьПерерасчетов();
КонецПроцедуры
&НаСервере
Процедура ВидРасчетаКомпенсацииОсновногоОтпускаПриИзмененииНаСервере()
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
Если Не РассчитыватьСреднийЗаработокПриЗаполненииДокумента() Тогда
ЗаполнитьПериодРасчетаСреднегоЗаработка();
КонецЕсли;
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
РассчитатьСохраняемоеДенежноеСодержание();
КонецПроцедуры
&НаСервере
Процедура ПогашениеЗаймовПриИзмененииНаСервере()
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаСервере
Процедура ПризнакКомпенсацииОтпускаПриИзмененииНаСервере()
УстановитьТипЗначенияВидаРасчета(Объект);
УстановитьДоступностьЭлементовФормы(ЭтотОбъект, Объект);
УстановитьОтметкуНезаполненногоДнейКомпенсацииУдержанияОтпуска();
КонецПроцедуры
&НаСервере
Процедура ДокументРассчитанПриИзменении()
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтотОбъект, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
КонецПроцедуры
&НаСервере
Процедура ДополнительныеОтпускаВидОтпускаПриИзмененииНаСервере(ИдентификаторСтроки)
Строка = Объект.ДополнительныеОтпуска.НайтиПоИдентификатору(ИдентификаторСтроки);
ОбновитьРабочийГодДополнительногоОтпуска(Строка);
КонецПроцедуры
&НаСервере
Процедура ДополнительныеОтпускаКоличествоДнейКомпенсацииПриИзмененииНаСервере(ИдентификаторСтроки)
Строка = Объект.ДополнительныеОтпуска.НайтиПоИдентификатору(ИдентификаторСтроки);
ОбновитьРабочийГодДополнительногоОтпуска(Строка);
КонецПроцедуры
&НаСервере
Процедура ОснованиеУвольненияПриИзмененииНаСервере()
Если Не Объект.ФиксКоличествоДнейКомпенсацииОтпуска
И ПолучитьФункциональнуюОпцию("ПолнаяКомпенсацияОтпускаПриУвольненииПоВыбраннымОснованиям") Тогда
РассчитатьКоличествоДнейКомпенсацииУдержанияОтпускаНаСервере();
КонецЕсли;
УстановитьОтображениеЭлементовПоОснованиюУвольнения();
КонецПроцедуры
#КонецОбласти
#Область ОбновитьИтоги
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьИтоги(Форма, ГруппыНачислений = Неопределено)
ОбновитьНачисленоИтог(Форма, ГруппыНачислений);
ОбновитьУдержаноИтог(Форма);
ОбновитьПерерасчетИтог(Форма);
ОбновитьПерерасчетПособийИтог(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьНачисленоИтог(Форма, ГруппыНачислений = Неопределено)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Форма.НачисленоИтог = Форма.Объект.Начисления.Итог("Результат") + Форма.Объект.Пособия.Итог("Результат") + Форма.Объект.Льготы.Итог("Результат");
Если ГруппыНачислений = Неопределено Тогда
СписокКомпенсаций = Новый Массив;
СписокВыходныеПособия = Новый Массив;
Если Форма.Объект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные") Тогда
СписокКомпенсаций.Добавить(Форма.Объект.ВидРасчетаКомпенсацииУдержанияОтпуска);
КонецЕсли;
Для каждого Компенсация Из Форма.Объект.ДополнительныеОтпуска Цикл
Если Компенсация.ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные") Тогда
СписокКомпенсаций.Добавить(Компенсация.ВидРасчетаКомпенсацииУдержания);
КонецЕсли;
КонецЦикла;
Иначе
СписокКомпенсаций = ГруппыНачислений.СписокКомпенсаций;
СписокВыходныеПособия = ГруппыНачислений.СписокВыходныеПособия;
КонецЕсли;
Форма.НачисленоКомпенсаций = 0;
Форма.НачисленоВыходноеПособие = 0;
Форма.НачисленоПрочее = 0;
СведенияОНачислениях = СведенияОНачислениях(Форма.Объект);
Для каждого Начисление Из Форма.Объект.Начисления Цикл
СведенияОНачислении = СведенияОНачислениях.Получить(Начисление.Начисление);
Если СписокКомпенсаций.Найти(Начисление.Начисление) <> Неопределено Тогда
Форма.НачисленоКомпенсаций = Форма.НачисленоКомпенсаций + Начисление.Результат;
ИначеЕсли СведенияОНачислении.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыходноеПособие")
ИЛИ СписокВыходныеПособия.Найти(Начисление.Начисление) <> Неопределено Тогда
Форма.НачисленоВыходноеПособие = Форма.НачисленоВыходноеПособие + Начисление.Результат;
Иначе
Форма.НачисленоПрочее = Форма.НачисленоПрочее + Начисление.Результат;
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаПособий Из Форма.Объект.Пособия Цикл
Форма.НачисленоПрочее = Форма.НачисленоПрочее + СтрокаПособий.Результат;
КонецЦикла;
Для Каждого СтрокаЛьгот Из Форма.Объект.Льготы Цикл
Форма.НачисленоПрочее = Форма.НачисленоПрочее + СтрокаЛьгот.Результат;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СведенияОНачислениях(Знач Объект)
МассивНачислений = Объект.Начисления.Выгрузить().ВыгрузитьКолонку("Начисление");
СведенияОНачислениях = Новый Соответствие;
Для каждого Начисление Из МассивНачислений Цикл
СведенияОНачислениях.Вставить(Начисление, ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(Начисление));
КонецЦикла;
Возврат СведенияОНачислениях;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьУдержаноИтог(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Форма.УдержаноНДФЛ = УчетНДФЛКлиентСервер.ИтоговаяСуммаНДФЛпоДокументу(Форма.Объект, "Налог") + Форма.Объект.ПогашениеЗаймов.Итог("НалогНаМатериальнуюВыгоду");
Форма.УдержаноПрочее = Форма.Объект.Удержания.Итог("Результат");
Форма.УдержаноЗаймы = Форма.Объект.ПогашениеЗаймов.Итог("ПогашениеЗайма") + Форма.Объект.ПогашениеЗаймов.Итог("ПогашениеПроцентов");
Форма.УдержаноИтог = Форма.УдержаноНДФЛ + Форма.УдержаноПрочее + Форма.УдержаноЗаймы;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПерерасчетИтог(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Форма.ПерерасчетИтог = Форма.Объект.НачисленияПерерасчет.Итог("Результат");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПерерасчетПособийИтог(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Форма.ПерерасчетПособийИтог = Форма.Объект.ПособияПерерасчет.Итог("Результат");
КонецПроцедуры
#КонецОбласти
#Область РедактированиеПроцентаЕНВДВФормеДокумента
&НаКлиенте
Процедура ЗарегистрироватьПроцентЕНВД() Экспорт
ЗарегистрироватьПроцентЕНВДНаСервере(Объект.Организация, Объект.ПериодРегистрации, ЭтотОбъект.ПроцентЕНВД, ЭтотОбъект.ПроцентЕНВДСтрока);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗарегистрироватьПроцентЕНВДНаСервере(Организация, Месяц, ПроцентЕНВД, ПроцентЕНВДСтрока)
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьПроцентЕНВДПослеРедактированияВФорме(Организация, Месяц, ПроцентЕНВД, ПроцентЕНВДСтрока);
КонецПроцедуры
&НаСервере
Функция ТекстПредупрежденияПриРедактированииПроцентаЕНВД() Экспорт
ОрганизацияНаименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "Наименование");
МесяцНачисленияСтрокой = ЗарплатаКадрыКлиентСервер.ПолучитьПредставлениеМесяца(Объект.ПериодРегистрации);
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При изменении введенного ранее процента деятельности ЕНВД необходимо
|перезаполнить все документы начисления зарплаты за %1 г по ""%2""'"),
МесяцНачисленияСтрокой,
ОрганизацияНаименование);
Возврат ТекстПредупреждения;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ПроцентЕНВДСтрокаПриИзменении(Элемент)
ОтражениеЗарплатыВБухучетеКлиент.ПроцентЕНВДСтрокаПриИзменении(ЭтотОбъект, Элемент, ЭтотОбъект.ПроцентЕНВДСтрока);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроцентЕНВДСтрокаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОтражениеЗарплатыВБухучетеКлиент.ПроцентЕНВДСтрокаНачалоВыбора(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область РаспределениеПоТерриториямУсловиямТруда
&НаКлиенте
Процедура ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(ОписаниеТаблицы, Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПараметрыДляВыбора = РасчетЗарплатыРасширенныйКлиент.ПараметрыДляВыбораПолеРаспределениеПоТерриториямУсловиямТруда();
ПараметрыДляВыбора.Форма = ЭтотОбъект;
ПараметрыДляВыбора.ОписаниеДокумента = ОписаниеДокумента(ЭтотОбъект);
ПараметрыДляВыбора.ОписаниеТаблицы = ОписаниеТаблицы;
РасчетЗарплатыРасширенныйКлиент.ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, ПараметрыДляВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТруда(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока) Экспорт
ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТрудаНаСервере(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТрудаНаСервере(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока)
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТруда(ЭтотОбъект, ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТруда(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока) Экспорт
ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТрудаНаСервере(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Процедура ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТрудаНаСервере(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока)
РасчетЗарплатыРасширенныйФормы.ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Функция ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда()
Описания = Новый Массив;
Описания.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
Описания.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
Описания.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
Описания.Добавить(КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудниковКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудниковКлиентСервер");
МодульЛьготыСотрудниковКлиентСервер.ДополнитьМассивОписанийТаблицФормыНачисленияЗарплаты(Описания, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КонецЕсли;
Возврат Описания;
КонецФункции
#КонецОбласти
#Область КлючевыеРеквизитыЗаполненияФормы
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыТаблицыОчищаемыеПриИзменении() Экспорт
Возврат Новый Массив;
КонецФункции
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыОписаниеКлючевыхРеквизитов() Экспорт
Массив = Новый Массив;
Если ИспользуетсяРасчетЗарплаты Тогда
Массив.Добавить(Новый Структура("ЭлементФормы", "ПериодРегистрации"));
Массив.Добавить(Новый Структура("ЭлементФормы", "Организация"));
Массив.Добавить(Новый Структура("ЭлементФормы", "Сотрудник"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДатаУвольнения"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ПризнакКомпенсацииОтпуска"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДнейКомпенсацииУдержанияОтпуска"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВидРасчетаКомпенсацииУдержанияОсновногоОтпуска"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДнейЧасовВыходногоПособия"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВыходноеПособие"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДополнительныеОтпускаВидОтпуска"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДополнительныеОтпускаВидРасчетаКомпенсации"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДополнительныеОтпускаПризнакКомпенсацииУдержанияДополнительныхОтпусков"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДополнительныеОтпускаКоличествоДнейКомпенсации"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДниНакопленныхОтгулов"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ЧасыНакопленныхОтгулов"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха"));
КонецЕсли;
Для каждого ОписаниеЭлемента Из Массив Цикл
ОписаниеЭлемента.Вставить("ПредупреждениеПриРедактировании", ЗарплатаКадры.КлючевыеРеквизитыЗаполненияФормыТекстПредупрежденияДокументовСАвтоматическимРасчетом());
КонецЦикла;
Возврат Массив
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(Форма)
ЗарплатаКадрыКлиентСервер.КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(Форма, ?(ЕстьФиксированныеДанные(Форма), ОтображениеПредупрежденияПриРедактировании.Отображать, ОтображениеПредупрежденияПриРедактировании.Авто));
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЕстьФиксированныеДанные(Форма)
Если НЕ Форма.РегистрацияНачисленийДоступна Тогда
Возврат Ложь;
КонецЕсли;
ИсправленныйДокументЗаполнен = ЗначениеЗаполнено(Форма.СсылкаНаИсправленныйДокумент);
Возврат РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНДФЛ(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыУдержаний(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен);
КонецФункции
#КонецОбласти
#Область АдаптацияУвольнение
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиРешенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
ОбработкаНавигационнойСсылкиРешенияЗавершениеНаСервере(Результат, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура ОбработкаНавигационнойСсылкиРешенияЗавершениеНаСервере(Результат, ДополнительныеПараметры)
КадровыеРешенияФормы.ОбработкаНавигационнойСсылкиРешенияЗавершение(ЭтотОбъект, Результат, ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция НачисленияГрупп()
СписокКомпенсаций = Новый Массив;
Если Объект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные") Тогда
СписокКомпенсаций.Добавить(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска);
КонецЕсли;
Для каждого Компенсация Из Объект.ДополнительныеОтпуска Цикл
Если Компенсация.ПризнакКомпенсацииУдержания = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные") Тогда
СписокКомпенсаций.Добавить(Компенсация.ВидРасчетаКомпенсацииУдержания);
КонецЕсли;
КонецЦикла;
СписокВыходныеПособия = Новый Массив;
Если ЗначениеЗаполнено(Объект.ВыходноеПособие) Тогда
СписокВыходныеПособия.Добавить(Объект.ВыходноеПособие);
КонецЕсли;
СписокНачислений = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СписокНачислений,СписокКомпенсаций);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(СписокНачислений,СписокВыходныеПособия);
ДополнительныеНачисления = РасчетЗарплатыРасширенный.ДополнительныеНачисленияОсновныхВидовРасчета(СписокНачислений);
Для Каждого ДополнительноеНачисление Из ДополнительныеНачисления Цикл
Если СписокКомпенсаций.Найти(ДополнительноеНачисление.Ключ) <> Неопределено Тогда
Если ЗначениеЗаполнено(ДополнительноеНачисление.Значение.ВидРасчетаДолиРК) Тогда
СписокКомпенсаций.Добавить(ДополнительноеНачисление.Значение.ВидРасчетаДолиРК);
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительноеНачисление.Значение.ВидРасчетаДолиСН) Тогда
СписокКомпенсаций.Добавить(ДополнительноеНачисление.Значение.ВидРасчетаДолиСН);
КонецЕсли;
КонецЕсли;
Если СписокВыходныеПособия.Найти(ДополнительноеНачисление.Ключ) <> Неопределено Тогда
Если ЗначениеЗаполнено(ДополнительноеНачисление.Значение.ВидРасчетаДолиРК) Тогда
СписокВыходныеПособия.Добавить(ДополнительноеНачисление.Значение.ВидРасчетаДолиРК);
КонецЕсли;
Если ЗначениеЗаполнено(ДополнительноеНачисление.Значение.ВидРасчетаДолиСН) Тогда
СписокВыходныеПособия.Добавить(ДополнительноеНачисление.Значение.ВидРасчетаДолиСН);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Новый Структура("СписокКомпенсаций,СписокВыходныеПособия",СписокКомпенсаций,СписокВыходныеПособия);
КонецФункции
&НаКлиенте
Процедура ОбработчикОжиданияМесяцНачисленияПриИзменении()
ПриИзмененииМесяцаНачисления();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияМесяцНачисленияПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииМесяцаНачисления()
ОбработатьИзменениеМесяцНачисленияНаСервере();
ВыполнитьРасчетНачислений();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьФормуПоВидуДоговора()
ИспользоватьГосударственнуюМуниципальнуюСлужбу = ПолучитьФункциональнуюОпцию("ИспользоватьГосударственнуюСлужбу") ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьМуниципальнуюСлужбу");
Если ИспользоватьГосударственнуюМуниципальнуюСлужбу Тогда
ЭтоГосслужащий = ЭтоГосслужащий();
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВыходноеПособиеДенежноеСодержание",
"Видимость",
ЭтоГосслужащий);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ДенежноеСодержаниеИнфо",
"Видимость",
ЭтоГосслужащий);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПоказательСреднегоЗаработка",
"Видимость",
Не Объект.РасчетДенежногоСодержания);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ОткрытьСреднийЗаработокВыходногоПособия",
"Доступность",
Объект.ДнейЧасовВыходногоПособия > 0 Или Не ЭтоГосслужащий);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"РасчетДенежногоСодержания",
"Видимость",
ЗарплатаКадрыРасширенный.ДоступноИзменениеВариантаРасчетаВДокументе(Объект.Сотрудник,Объект.ДатаУвольнения));
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.КадровыйУчет.ДосрочноеУвольнение") Тогда
МодульДосрочноеУвольнение = ОбщегоНазначения.ОбщийМодуль("ДосрочноеУвольнение");
МодульДосрочноеУвольнение.УвольнениеОбновитьФормуПоВидуДоговора(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЭтоГосслужащий()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Возврат МодульГосударственнаяСлужба.ВидДоговораГосударственнойСлужбы(ЭтотОбъект, ВидДоговора);
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаСервере
Процедура ЗаполнитьИнформациюЗаполненностиДанных()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
СтруктураНадписи = УчетСреднегоЗаработка.ИнформацияОЗаполненностиДанныхСреднегоЗаработка(
СсылкаНаОбъект,
ЗаполнениеВыполнено,
Объект.Сотрудник,
Объект.ДатаУвольнения,
Объект.ПериодРасчетаСреднегоЗаработкаНачало,
Объект.ПериодРасчетаСреднегоЗаработкаОкончание,
Объект.СреднийЗаработокОбщий,
Объект.ОтработанноеВремяДляСреднегоОбщий);
ЗаполненностьДанныхИнформационныйТекст = СтруктураНадписи.Текст;
ЗаполненностьДанныхКартинка = СтруктураНадписи.Картинка;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИнформациюОЗаполненностиДанныхСреднегоФСС()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
ПараметрыРасчетаСреднегоЗаработкаФСС = ПараметрыРасчетаСреднегоДневногоЗаработкаФСС();
МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ = УчетПособийСоциальногоСтрахования.МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ(
Объект.МинимальныйСреднедневнойЗаработок,
ПараметрыРасчетаСреднегоЗаработкаФСС.РайонныйКоэффициентРФ,
ПараметрыРасчетаСреднегоЗаработкаФСС.ДатаНачалаСобытия);
Если Объект.СреднийЗаработокСФР < Объект.МинимальныйСреднедневнойЗаработок Тогда
ТекстРасчетаПределаИзМРОТ = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В расчете предела дохода, не облагаемого НДФЛ, используется среднедневной заработок из МРОТ: %1 р.'"),
МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ);
РасчетПределаИнформационныйТекст = Новый ФорматированнаяСтрока(ТекстРасчетаПределаИзМРОТ);
Элементы.РасчетПределаИнформационныйТекст.Видимость = Истина;
Иначе
РасчетПределаИнформационныйТекст = "";
Элементы.РасчетПределаИнформационныйТекст.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПредупреждениеДокументНеРассчитан(Форма)
Форма.ЗаполненностьДанныхИнформационныйТекст = УчетСреднегоЗаработкаКлиентСервер.ТекстПредупрежденияДокументНеРассчитан();
Форма.ЗаполненностьДанныхКартинка = БиблиотекаКартинок.Предупреждение;
Форма.ОбновитьИнформациюЗаполненностиДанных = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтруктуруРеквизитовИСпособовРасчетаОтпуска()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
СтруктураРеквизитовИСпособовРасчетаОтпуска = Новый Структура;
СтруктураРеквизитовИСпособовРасчетаОтпуска.Вставить("СреднийЗаработок", ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням"));
СтруктураРеквизитовИСпособовРасчетаОтпуска.Вставить("СреднийЗаработокПоРабочимДням", ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ОплатаОтпускаПоШестидневке"));
СпособыРасчетаСреднегоЗаработка = Новый ФиксированнаяСтруктура(СтруктураРеквизитовИСпособовРасчетаОтпуска);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
МодульРасчетДенежногоСодержания = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
МодульРасчетДенежногоСодержания.ЗаполнитьРеквизитФормыНазначенияРасчетаДенежногоСодержания(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементовФормы(Форма, Объект)
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ДнейКомпенсацииУдержанияОтпуска",
"Доступность",
Объект.ПризнакКомпенсацииУдержанияОтпуска <> ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ВидРасчетаКомпенсацииУдержанияОсновногоОтпуска",
"Доступность",
Объект.ПризнакКомпенсацииУдержанияОтпуска <> ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать")
И Не (Форма.СпособУдержанияИзлишнеНачисленныхОтпускных = ПредопределенноеЗначение("Перечисление.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм")
И Объект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом")));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ДополнительныеОтпуска",
"ИзменятьСоставСтрок",
Форма.ДоступенВводНового);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ДополнительныеОтпуска",
"ИзменятьПорядокСтрок",
Форма.ДоступенВводНового);
УстановитьДоступностьМесяцаНачалаРасчетов(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьМесяцаНачалаРасчетов(Форма)
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"МесяцНачалаРасчетовСтрокой",
"Доступность",
Форма.Объект.НачислитьЗарплату);
КонецПроцедуры
&НаСервере
Процедура УстановитьОтметкуНезаполненногоДнейКомпенсацииУдержанияОтпуска()
АвтоОтметкаНезаполненного = Объект.ПризнакКомпенсацииУдержанияОтпуска <> Перечисления.КомпенсацияУдержаниеОтпускаПриУвольнении.НеИспользовать
И Не (СпособУдержанияИзлишнеНачисленныхОтпускных = ПредопределенноеЗначение("Перечисление.СпособыУдержанияИзлишнеНачисленныхОтпускных.СторнированиеРанееНачисленныхСумм")
И Объект.ПризнакКомпенсацииУдержанияОтпуска = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.УдержатьЗаИспользованныеАвансом"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДнейКомпенсацииУдержанияОтпуска", "АвтоОтметкаНезаполненного", АвтоОтметкаНезаполненного);
Если Не АвтоОтметкаНезаполненного Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДнейКомпенсацииУдержанияОтпуска", "ОтметкаНезаполненного", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПерерасчетов()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ПерерасчетыДоступны = ИсправлениеДокументовРасчетЗарплатыКлиентСервер.ПерерасчетыДоступны(ЭтотОбъект,,"ДатаУвольнения");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НачисленияПерерасчет", "Видимость", ПерерасчетыДоступны);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПособияПерерасчет", "Видимость", ПерерасчетыДоступны);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПерерасчетГруппа", "Видимость", ПерерасчетыДоступны);
ИсправлениеДокументовРасчетЗарплатыКлиентСервер.УстановитьДоначислениеПриИсправлении(ЭтотОбъект, ПерерасчетыДоступны);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТипЗначенияВидаРасчета(Объект, ИмяПоляПризнака = "ПризнакКомпенсацииУдержанияОтпуска", ИмяПоляВидРасчета = "ВидРасчетаКомпенсацииУдержанияОтпуска")
Если Объект[ИмяПоляПризнака] = ПредопределенноеЗначение("Перечисление.КомпенсацияУдержаниеОтпускаПриУвольнении.КомпенсироватьНеИспользованные") Тогда
Если ТипЗнч(Объект[ИмяПоляВидРасчета]) <> Тип("ПланВидовРасчетаСсылка.Начисления") Тогда
Объект[ИмяПоляВидРасчета] = ПредопределенноеЗначение("ПланВидовРасчета.Начисления.ПустаяСсылка");
КонецЕсли;
Иначе
Если ТипЗнч(Объект[ИмяПоляВидРасчета]) <> Тип("ПланВидовРасчетаСсылка.Удержания") Тогда
Объект[ИмяПоляВидРасчета] = ПредопределенноеЗначение("ПланВидовРасчета.Удержания.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТипОснованияУвольнения()
ОграничениеТипа = ОграничениеТипаОснованияУвольнения(ВидДоговора);
КадровыйУчет.УстановитьОграничениеТиповПолюВводаОснованияУвольнения(
ЭтотОбъект, "ОснованиеУвольнения", ОграничениеТипа, ТипЗнч(Объект.СтатьяТКРФ));
КонецПроцедуры
&НаСервере
Функция ОграничениеТипаОснованияУвольнения(ВидДоговора)
ТипОснования = ТипОснованияУвольнения(ВидДоговора);
ОграничениеТипа = Новый ОписаниеТипов(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТипОснования));
Возврат ОграничениеТипа;
КонецФункции
&НаСервере
Функция ТипОснованияУвольнения(ВидДоговора)
ТипОснования = Тип("СправочникСсылка.ОснованияУвольнения");
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужбаФормы = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужбаФормы");
ТипОснования = МодульГосударственнаяСлужбаФормы.ТипОснованияУвольнения(ВидДоговора);
КонецЕсли;
Возврат ТипОснования;
КонецФункции
&НаКлиенте
Процедура ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(ОписаниеТаблицы, Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка = Истина)
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") = 0 Тогда
Возврат;
КонецЕсли;
ЗарплатаКадрыРасширенныйКлиент.ОткрытьФормуРедактированияРезультатовРаспределенияПоИсточникамФинансирования(ЭтотОбъект, ОписаниеТаблицы, ВыбраннаяСтрока, Объект.ПериодРегистрации);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойствоДокументРассчитан()
Если ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
Объект.ДокументРассчитан = Истина;
КонецЕсли;
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтотОбъект, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
ПроверяемыеТаблицы = Новый Массив;
ПроверяемыеТаблицы.Добавить("Начисления");
ПроверяемыеТаблицы.Добавить("НачисленияПерерасчет");
ПроверяемыеНачисления = Новый Массив;
Для каждого ПроверяемаяТаблица Из ПроверяемыеТаблицы Цикл
НачисленияДокумента = Новый Массив;
Для каждого Начисление Из Форма.Объект[ПроверяемаяТаблица] Цикл
НачисленияДокумента.Добавить(Начисление.Начисление);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПроверяемыеНачисления, НачисленияДокумента, Истина);
КонецЦикла;
АвтоОтметкаНезаполненного = ДатаВыплатыОбязательнаКЗаполнению(Форма.Объект.ПорядокВыплаты, ПроверяемыеНачисления);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "ПланируемаяДатаВыплаты", "АвтоОтметкаНезаполненного", АвтоОтметкаНезаполненного);
Если Не АвтоОтметкаНезаполненного Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "ПланируемаяДатаВыплаты", "ОтметкаНезаполненного", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДатаВыплатыОбязательнаКЗаполнению(Знач ПорядокВыплаты, Знач ПроверяемыеНачисления)
УстановитьПривилегированныйРежим(Истина);
Возврат УчетНДФЛРасширенный.ДатаВыплатыОбязательнаКЗаполнению(ПорядокВыплаты, ПроверяемыеНачисления);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьРасчетныхПолей()
ИменаЭлементов = Новый Массив;
ИменаЭлементов.Добавить("РезультатыСреднийЗаработок");
ИменаЭлементов.Добавить("НачисленияУдержанияСтраница");
ИменаЭлементов.Добавить("ВидРасчетаКомпенсацииУдержанияОсновногоОтпуска");
ИменаЭлементов.Добавить("ВыходноеПособие");
ИменаЭлементов.Добавить("ГруппаРасчетДенежногоСодержания");
ИменаЭлементов.Добавить("УчитыватьМРОТПриОплатеПоСреднемуЗаработку");
ИменаЭлементов.Добавить("Сторнировать");
ИменаЭлементов.Добавить("ВидРасчетаКомпенсацияНеИспользованныхДнейОтдыха");
ИменаЭлементов.Добавить("ВидРасчетаКомпенсацияНеИспользованныхЧасовОтдыха");
ЗарплатаКадрыРасширенный.УстановитьОтображениеПолейМногофункциональныхДокументов(ЭтотОбъект, ИменаЭлементов);
Если ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений Тогда
УстановитьВидимостьПерерасчетов();
УчетСтраховыхВзносов.УстановитьВидимостьКолонокТаблицыСтраховыхВзносов(ЭтотОбъект, Объект.ПериодРегистрации);
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Элементы.НачисленияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Элементы.НачисленияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Элементы.ПособияПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, Элементы.ПособияПерерасчетПодробно.Пометка, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "Результаты", "ТолькоПросмотр", Истина);
УстановитьДоступностьПолейСреднегоЗаработка();
ОтражениеЗарплатыВБухучетеРасширенный.ОбъектПриЧтенииНаСервереПроцентЕНВД(ЭтотОбъект, Объект.Организация, Объект.ПериодРегистрации, Истина, Ложь);
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
УстановитьПоляИсправления(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
МодульЛьготыСотрудников.УстановитьВидимостьГруппыЛьготы(Элементы, "ГруппаЛьготы");
МодульЛьготыСотрудников.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КонецЕсли;
КонецЕсли;
Если Не ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "ГруппаЛьготы", "Видимость", Ложь);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПорядокВыплаты", "Видимость", Ложь);
УстановитьОтображениеЭлементовПоОснованиюУвольнения();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСуммированногоУчета()
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ГруппаСуммированныйУчет",
"Видимость",
ИспользоватьОплатуПереработокСуммированногоУчета);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьПолейСреднегоЗаработка()
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "ПоказательСреднегоЗаработка", "ТолькоПросмотр", Истина);
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "ПоказательСреднегоЗаработкаВыходногоПособия", "ТолькоПросмотр", Истина);
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "ДенежноеСодержаниеИнфо", "ТолькоПросмотр", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СреднийЗаработокСФР", "ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьРегистрацииНачислений()
ПраваНаДокумент = ЗарплатаКадрыРасширенный.ПраваНаМногофункциональныйДокумент(Объект);
РегистрацияНачисленийДоступна = ПраваНаДокумент.ПолныеПраваПоРолям;
ОграниченияНаУровнеЗаписей = Новый ФиксированнаяСтруктура(ПраваНаДокумент.ОграниченияНаУровнеЗаписей);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей()
БылиОграничения = ОграниченияНаУровнеЗаписей;
УстановитьДоступностьРегистрацииНачислений();
Если БылиОграничения.ЧтениеБезОграничений <> ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений
Или БылиОграничения.ИзменениеБезОграничений <> ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений
Или БылиОграничения.ИзменениеКадровыхДанных <> ОграниченияНаУровнеЗаписей.ИзменениеКадровыхДанных Тогда
Объект.ДокументРассчитан = ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений;
Объект.Рассчитал = Неопределено;
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтотОбъект, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
УстановитьВидимостьРасчетныхПолей();
Если БылиОграничения.ЧтениеБезОграничений <> ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений Тогда
ЗарплатаКадрыРасширенный.УстановитьВидимостьКомандПечатиМногофункциональногоДокумента(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция НадписьДнейЧасов()
Если ИспользуетсяСреднечасовойЗаработок Тогда
Возврат НСтр("ru='час.'");
Иначе
Возврат НСтр("ru='дн.'");
КонецЕсли;
КонецФункции
&НаСервере
Функция ЗаголовокСреднемесячногоКоличестваДнейЧасов()
Если ИспользуетсяСреднечасовойЗаработок Тогда
Возврат НСтр("ru='Среднемесячное количество часов'");
Иначе
Возврат НСтр("ru='Среднемесячное количество дней'");
КонецЕсли;
КонецФункции
&НаСервере
Процедура ОбновитьРабочийГодДополнительногоОтпуска(Строка)
Если (ЗначениеЗаполнено(Строка.ВидОтпуска) И ЗначениеЗаполнено(Строка.ДнейКомпенсацииУдержания)) Тогда
СтруктураПараметров = ОстаткиОтпусков.ПараметрыПолученияРабочегоПериодаОтпуска();
СтруктураПараметров.Сотрудник = Объект.Сотрудник;
СтруктураПараметров.ТекущийРегистратор = СсылкаНаОбъект;
СтруктураПараметров.ВидОтпуска = Строка.ВидОтпуска;
СтруктураПараметров.ДатаНачала = Дата(1, 1, 1);
СтруктураПараметров.ДатаОкончания = Дата(1, 1, 1);
СтруктураПараметров.ДатаКомпенсации = Объект.ДатаУвольнения;
СтруктураПараметров.КоличествоДнейКомпенсации = Строка.ДнейКомпенсацииУдержания;
ПериодДополнительногоОтпуска = ОстаткиОтпусков.РабочийПериодОтпуска(СтруктураПараметров);
Строка.НачалоПериодаЗаКоторыйПредоставляетсяОтпуск = ПериодДополнительногоОтпуска.РабочийГодС;
Строка.КонецПериодаЗаКоторыйПредоставляетсяОтпуск = ПериодДополнительногоОтпуска.РабочийГодПо;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПорядокВыплатыПриИзмененииНаСервере()
УстановитьПланируемуюДатуВыплаты();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция РасчетнаяПланируемаяДатаВыплаты()
ПланируемаяДатаВыплаты = Неопределено;
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
Если ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты) Тогда
Если ЗначениеЗаполнено(СсылкаНаИсправленныйДокумент) Тогда
ПланируемаяДатаВыплаты = НачалоДня(ТекущаяДатаСеанса() + 86400);
Иначе
ПланируемаяДатаВыплаты = Объект.ДатаУвольнения;
КонецЕсли;
ПланируемаяДатаВыплаты = РасчетЗарплатыРасширенный.ДатаСобытияСУчетомНерабочихДней(ПланируемаяДатаВыплаты, Объект.Организация,, Ложь);
Иначе
ПараметрыПолученияДатыВыплаты = РасчетЗарплатыРасширенный.ПараметрыПолученияПланируемойДатыВыплатыЗарплаты();
ПараметрыПолученияДатыВыплаты.МесяцНачисления = Объект.ПериодРегистрации;
ПараметрыПолученияДатыВыплаты.Настройки = ЭтотОбъект.НастройкиДатВыплаты;
ПараметрыПолученияДатыВыплаты.ПорядокВыплаты = Объект.ПорядокВыплаты;
ПараметрыПолученияДатыВыплаты.ХарактерыВыплаты = Новый Структура("Аванс,Зарплата", ЭтотОбъект.ХарактерВыплатыАванс, ЭтотОбъект.ХарактерВыплатыЗарплата);
ПараметрыПолученияДатыВыплаты.Организация = Объект.Организация;
ПараметрыПолученияДатывыплаты.Сотрудник = Объект.Сотрудник;
ПланируемаяДатаВыплаты = РасчетЗарплатыРасширенный.ПланируемаяДатаВыплатыЗарплатыПоНастройкамПоПорядкуВыплаты(
ПараметрыПолученияДатыВыплаты);
КонецЕсли;
КонецЕсли;
Возврат ПланируемаяДатаВыплаты;
КонецФункции
&НаСервере
Процедура УстановитьПланируемуюДатуВыплаты()
Если Не РедактированиеСтрокиСписочногоДокумента Тогда
Объект.ПланируемаяДатаВыплаты = РасчетнаяПланируемаяДатаВыплаты();
КонецЕсли;
УстановитьВидимостьКолонокПрогрессивногоНалога(Объект.ПланируемаяДатаВыплаты);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭтоМежрасчетнаяВыплата(ПорядокВыплаты)
Возврат РасчетЗарплатыРасширенный.ЭтоМежрасчетнаяВыплата(ПорядокВыплаты);
КонецФункции
&НаСервере
Функция КарточкаУчетаПоСтраховымВзносамНаСервере(ФизическоеЛицо)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
Возврат УчетСтраховыхВзносов.КарточкаУчетаПоСтраховымВзносамПодробнее(ДокументОбъект, Модифицированность, ФизическоеЛицо, Объект.ПериодРегистрации);
КонецФункции
&НаСервере
Процедура ЗаполнитьВторичныеДанныеСотрудникаВФорме(ЗаполнитьОбъект = Истина)
ЗаполнитьОтпускВРабочихДняхПоДоговору();
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
КадровыеДанные = КадровыеДанныеСотрудника();
Если КадровыеДанные <> Неопределено Тогда
ДатаПриемаНаРаботу = КадровыеДанные.ДатаПриема;
ВидДоговора = КадровыеДанные.ВидДоговора;
Если ЗаполнитьОбъект Тогда
Объект.РасчетДенежногоСодержания = Ложь;
ЗарплатаКадрыРасширенный.УстановитьВариантРасчетаДокументаПоСреднемуЗаработку(Объект,"ДатаУвольнения");
УстановитьПризнакУвольненияОсновногоСотрудника(КадровыеДанные.ВидЗанятости);
УстановитьПризнакПредоставленияМероприятийТДВЭлектроннойФорме(КадровыеДанные.ЗаявленияОПредоставленииСведенийОТрудовойДеятельностиВид)
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтпускВРабочихДняхПоДоговору()
ОтпускВРабочихДняхПоДоговору = ОстаткиОтпусков.ОтпускСотрудникаВРабочихДняхПоДоговору(Объект.Сотрудник, Объект.ДатаУвольнения);
КонецПроцедуры
&НаСервере
Процедура УстановитьСтраницуОсновногоСреднегоЗаработка()
Если ОтпускВРабочихДняхПоДоговору Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СреднийЗаработок", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СреднийЗаработокПоРабочимДням", "Видимость", Истина);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СреднийЗаработок", "Видимость", Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СреднийЗаработокПоРабочимДням", "Видимость", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеФормыПоОрганизации()
ПодписиДокументов.ЗаполнитьПодписиПоОрганизации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьПослеПроведения(Результат, ДополнительныеПараметры) Экспорт
Закрыть();
КонецПроцедуры
&НаСервере
Функция СтруктураСОписаниемДокумента(РассчитатьНачисления = Ложь)
Если РассчитатьНачисления Тогда
РассчитатьНачисленияНаСервере();
КонецЕсли;
РеквизитыВДанные(Объект);
ОписаниеДокумента = ЗарплатаКадрыРасширенныйВызовСервера.СтруктураПоМетаданным("Документ.Увольнение");
ЗарплатаКадрыРасширенный.ЗаполнитьОбъектПоОбразцу(ОписаниеДокумента, Объект);
ОписаниеДокумента.Вставить("ЗаполнениеВыполнено", ЗаполнениеВыполнено);
Возврат ОписаниеДокумента;
КонецФункции
&НаКлиенте
Процедура ПередЗакрытиемФормыРедактированияСтрокиДокументаЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОписаниеДокумента = СтруктураСОписаниемДокумента();
Модифицированность = Ложь;
Закрыть(ОписаниеДокумента);
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеОстатковОтгулов(ЗаполнитьДанныеДокумента = Ложь)
ДниЧасыНакопленныхОтгулов = УчетРабочегоВремениРасширенный.ДниЧасыНакопленныхОтгулов(
Объект.Организация, Объект.Сотрудник, КонецДня(Объект.ДатаУвольнения) + 1, Объект.Ссылка, Объект.ИсправленныйДокумент);
НадписьОстаткиОтгулов = "";
Если ДниЧасыНакопленныхОтгулов.РасходДнейОтгула > 0 ИЛИ ДниЧасыНакопленныхОтгулов.РасходЧасовОтгула > 0 Тогда
Если ДниЧасыНакопленныхОтгулов.РасходДнейОтгула > 0 И ДниЧасыНакопленныхОтгулов.РасходЧасовОтгула > 0 Тогда
НадписьОстаткиОтгулов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У сотрудника остались неиспользованными %1 дн. и %2 ч. отгулов.'"),
ДниЧасыНакопленныхОтгулов.РасходДнейОтгула,
ДниЧасыНакопленныхОтгулов.РасходЧасовОтгула);
ИначеЕсли ДниЧасыНакопленныхОтгулов.РасходДнейОтгула > 0 Тогда
НадписьОстаткиОтгулов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У сотрудника остались неиспользованными %1 дн. отгулов.'"),
ДниЧасыНакопленныхОтгулов.РасходДнейОтгула);
Иначе
НадписьОстаткиОтгулов = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У сотрудника остались неиспользованными %1 ч. отгулов.'"),
ДниЧасыНакопленныхОтгулов.РасходЧасовОтгула);
КонецЕсли;
КонецЕсли;
Если ЗаполнитьДанныеДокумента Тогда
Объект.ДниНакопленныхОтгулов = ДниЧасыНакопленныхОтгулов.РасходДнейОтгула;
Объект.ЧасыНакопленныхОтгулов = ДниЧасыНакопленныхОтгулов.РасходЧасовОтгула;
КонецЕсли;
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(
ЭтотОбъект,
"КомпенсацияОтгуловГруппа",
НадписьОстаткиОтгулов);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНастройки()
Если РегистрацияНачисленийДоступна Тогда
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособия(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПособияПерерасчеты(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
МодульЛьготыСотрудников = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
МодульЛьготыСотрудников.УстановитьРежимОтображенияПодробноИзНастройки(ЭтотОбъект, КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыЛьгот(РегистрацияНачисленийДоступна));
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
МодульУправленческаяЗарплата = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
МодульУправленческаяЗарплата.ПриЗавершенииИнициализацииФормыДокументаОплатыТруда(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьБухучетРезультатовРасчетаНаСервере(ИсходныеДанные)
ПериодЗаполнения = Документы.Увольнение.ПериодЗаполненияДокумента(Объект, Объект.ПериодРегистрации);
Сотрудники = СотрудникиДокумента();
МенеджерРасчета = ПроинициализированныйМенеджерРасчета(ПериодЗаполнения, Сотрудники);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.НастройкиБухучета.ПроверятьНеобходимостьПересчетаВзносов = Истина;
МенеджерРасчета.НастройкиБухучета.ПроверятьНеобходимостьПересчетаНДФЛ = МенеджерРасчета.НастройкиРасчета.РассчитыватьНДФЛ;
МенеджерРасчета.ЗаполнитьНастройкиОбновленияБухучета(ИсходныеДанные);
МенеджерРасчета.ОбновитьБухучетРезультатовРасчета();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Взносы, "ДатаПолученияДохода", "ДатаПолученияДоходаСтрокой");
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтотОбъект, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводНачисленийЗаполнитьВторичныеДанныеПоказателей(ЭтотОбъект, МассивОписанийТаблицФормы);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПредставлениеРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
РасчетЗарплатыРасширенныйФормы.УстановитьТекущуюСтрокуТаблицыФормы(ЭтотОбъект, ИсходныеДанные.ИмяИсходнойТаблицы, ИсходныеДанные.НомерСтрокиИсходнойТаблицы);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьПересечениеПериодовОтсутствияНаКлиенте(Отказ, ПараметрыЗаписи, ЗакрытьПослеЗаписи)
Если ПараметрыЗаписи <> Неопределено И ПараметрыЗаписи.РежимЗаписи <> РежимЗаписиДокумента.Проведение Тогда
Возврат;
КонецЕсли;
РезультатПроверки = ПроверитьПересечениеПериодовОтсутствияНаСервере(СсылкаНаОбъект, СсылкаНаИсправленныйДокумент, Объект.Сотрудник, Объект.ДатаУвольнения);
ДанныеСотрудника = РезультатПроверки.ДанныеСотрудников.Получить(Объект.Сотрудник);
Если ДанныеСотрудника = Неопределено Тогда
Возврат;
КонецЕсли;
Если РезультатПроверки.Отказ Тогда
ТекстСообщения = НСтр("ru = 'Сотрудник был уволен %1 (%2).'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ДанныеСотрудника.ПредставлениеПериода, ДанныеСотрудника.Регистратор);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , , , Отказ);
Возврат;
КонецЕсли;
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ДополнительныеПараметры.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи);
ТекстВопроса = НСтр("ru = 'На период %1 сотруднику зарегистрировано отсутствие документом %2. Провести документ?'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ДанныеСотрудника.ПредставлениеПериода, ДанныеСотрудника.Регистратор);
Оповещение = Новый ОписаниеОповещения("ПроверитьПересечениеПериодовОтсутствияНаКлиентеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ОКОтмена);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьПересечениеПериодовОтсутствияНаКлиентеЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ <> КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
ПараметрыЗаписи = ДополнительныеПараметры.ПараметрыЗаписи;
Если ПараметрыЗаписи = Неопределено Тогда
ОписаниеДокумента = СтруктураСОписаниемДокумента();
Модифицированность = Ложь;
Закрыть(ОписаниеДокумента);
Возврат;
КонецЕсли;
КадровыйУчетРасширенныйКлиент.ЗаписьВФормеДокументаУвольнение(ЭтотОбъект, ПараметрыЗаписи, ДополнительныеПараметры.ЗакрытьПослеЗаписи);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьПересечениеПериодовОтсутствияНаСервере(СсылкаНаОбъект, СсылкаНаИсправленныйДокумент, Сотрудник, ДатаУвольнения)
ИсходныеДанные = СостоянияСотрудников.ПустаяТаблицаДанныхСостоянийСотрудника();
НоваяСтрока = ИсходныеДанные.Добавить();
НоваяСтрока.Сотрудник = Сотрудник;
НоваяСтрока.Состояние = Перечисления.СостоянияСотрудника.Увольнение;
НоваяСтрока.Начало = ДатаУвольнения + 86400;
Возврат СостоянияСотрудников.ПроверитьПересечениеПериодовОтсутствия(ИсходныеДанные, СсылкаНаОбъект, СсылкаНаИсправленныйДокумент);
КонецФункции
&НаКлиенте
Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи, ПараметрыЗаписи)
ОчиститьСообщения();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи);
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьРасчетСотрудникаПередЗаписьюДокумента(
ЭтотОбъект, "ЗаписатьНаКлиентеЗавершение", ДополнительныеПараметры, РегистрацияНачисленийДоступна, ВыполнятьПредварительныйРасчетДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьНаКлиентеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПараметрыЗаписи = ДополнительныеПараметры.ПараметрыЗаписи;
ЗакрытьПослеЗаписи = ДополнительныеПараметры.ЗакрытьПослеЗаписи;
Отказ = Ложь;
ПроверитьПересечениеПериодовОтсутствияНаКлиенте(Отказ, ПараметрыЗаписи, ЗакрытьПослеЗаписи);
Если Отказ Тогда
Возврат;
КонецЕсли;
Если РедактированиеСтрокиСписочногоДокумента Тогда
ЗавершитьРедактированиеСтрокиДокумента();
Иначе
КадровыйУчетРасширенныйКлиент.ЗаписьВФормеДокументаУвольнение(ЭтотОбъект, ПараметрыЗаписи, ЗакрытьПослеЗаписи);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьМесяцНачалаРасчетов(Форма)
Если ЗначениеЗаполнено(Форма.Объект.ДатаУвольнения) Тогда
Форма.Объект.МесяцНачалаРасчетов = НачалоМесяца(Форма.Объект.ДатаУвольнения);
Иначе
Форма.Объект.МесяцНачалаРасчетов = '00010101';
КонецЕсли;
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(Форма, "Объект.МесяцНачалаРасчетов", "МесяцНачалаРасчетовСтрокой");
КонецПроцедуры
&НаСервере
Процедура РассчитатьПределДоходаНеОблагаемогоНДФЛ()
КоэффициентТерриториальныхУсловий = ?(Объект.ДействуютСеверныеТерриториальныеУсловия, 6, 3);
МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ = УчетПособийСоциальногоСтрахования.МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ(
Объект.МинимальныйСреднедневнойЗаработок,
Объект.РайонныйКоэффициентРФнаНачалоСобытия,
Объект.ДатаУвольнения);
Объект.ПределДоходаНеОблагаемогоНДФЛ = Макс(Объект.СреднийЗаработокСФР, МинимальныйСреднедневнойЗаработокДляСравненияСМРОТ) * 30.4 * КоэффициентТерриториальныхУсловий;
КонецПроцедуры
&НаСервере
Процедура РассчитатьПределДоходаНеОблагаемогоСтраховымиВзносами()
КоэффициентТерриториальныхУсловий = ?(Объект.ДействуютСеверныеТерриториальныеУсловия, 6, 3);
Если Объект.РасчетДенежногоСодержания Тогда
ПределДоходаВзносы = Объект.МесячноеДенежноеСодержание * КоэффициентТерриториальныхУсловий;
Иначе
Если РасчетВыходногоПособияПоПостановлению504() Тогда
ПределДоходаВзносы = Объект.СреднийЗаработокВыходногоПособия * Объект.СреднемесячноеКоличествоДнейЧасов * КоэффициентТерриториальныхУсловий;
Иначе
ПределДоходаВзносы = Объект.СреднийЗаработокВыходногоПособия * Объект.ДнейЧасовТрехКратногоШестикратногоВыходногоПособия;
КонецЕсли;
КонецЕсли;
Объект.ПределДоходаНеОблагаемогоСтраховымиВзносами = ПределДоходаВзносы;
КонецПроцедуры
#Область ОбработчикиОжиданияФормы
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияФормы(ИмяОбработчика, ПодключитьОбработчик = Истина)
Если ПустаяСтрока(ОбработчикиОжидания) Тогда
ОбработчикиОжидания = ИмяОбработчика;
Иначе
ОбработчикиОжидания = ОбработчикиОжидания + "," + ИмяОбработчика;
КонецЕсли;
Если ПодключитьОбработчик Тогда
ПодключитьОбработчикОжидания(ИмяОбработчика, 0.3, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтключитьОбработчикОжиданияФормы(ИмяОбработчика)
Если ОбработчикиОжидания = ИмяОбработчика Тогда
ОбработчикиОжидания = "";
ИначеЕсли Не ПустаяСтрока(ОбработчикиОжидания) Тогда
ОбработчикиОжидания = СтрЗаменить(ОбработчикиОжидания, ИмяОбработчика, "");
ОбработчикиОжидания = СтрЗаменить(ОбработчикиОжидания, ",,", ",");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьОбработчикиОжиданияФормы()
Если Не ПустаяСтрока(ОбработчикиОжидания) Тогда
ИменаОбработчиков = СтрРазделить(ОбработчикиОжидания, ",");
Для Каждого ИмяОбработчика Из ИменаОбработчиков Цикл
Если ИмяОбработчика = "ОбработчикОжиданияМесяцНачисленияПриИзменении" Тогда
ОбработчикОжиданияМесяцНачисленияПриИзменении();
ИначеЕсли ИмяОбработчика = "ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении" Тогда
ОбработчикОжиданияДнейЧасовВыходногоПособияПриИзменении();
ИначеЕсли ИмяОбработчика = "ОбработчикОжиданияКоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении" Тогда
ОбработчикОжиданияКоличествоМесяцевВыплатыДенежногоСодержанияПриИзменении();
ИначеЕсли ИмяОбработчика = "ОбработчикОжиданияМесяцНачалаРасчетовПриИзменении" Тогда
ОбработчикОжиданияМесяцНачалаРасчетовПриИзменении();
ИначеЕсли ИмяОбработчика = "ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия" Тогда
ОбработчикОжиданияИзменениеПараметровРасчетаВыходногоПособия();
КонецЕсли;
КонецЦикла;
ОбработчикиОжидания = "";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПодключенОбработчикОжидания(ИмяОбработчика)
Возврат СтрНайти(ОбработчикиОжидания, ИмяОбработчика) > 0
КонецФункции
#КонецОбласти
#Область ПособияСоциальногоСтрахования
&НаКлиенте
Процедура ОткрытьУведомлениеОПрекращенииПособия(ОбъектЗаписан, ПараметрыЗаписи) Экспорт
ПрямыеВыплатыПособийСоциальногоСтрахованияКлиент.ОткрытьУведомлениеОПрекращенииПособия(СсылкаНаОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСтраницуУведомленияОПрекращенииПособия()
Если РедактированиеСтрокиСписочногоДокумента Тогда
Элементы.СтраницаПособияСФР.Видимость = Ложь;
Иначе
ПрямыеВыплатыПособийСоциальногоСтрахования.ОбновитьГиперссылкуУведомленияОПрекращенииОтпускаПоУходу(
ЭтотОбъект,
"СтраницаПособияСФР",
"ГиперссылкаУведомленияОПрекращенииОтпускаПоУходу",
СсылкаНаОбъект,
Объект.Организация,
Объект.Сотрудник,
Объект.ДатаУвольнения + 86400);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьЭлементыПособийНаКлиенте()
ОбновитьЭлементыПособий();
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыПособий()
ПараметрыОбновленияФормы = УчетПособийСоциальногоСтрахованияРасширенный.ПараметрыОбновленияФормы();
ПараметрыОбновленияФормы.Организация = Объект.Организация;
ПараметрыОбновленияФормы.Сотрудники = Объект.Сотрудник;
ПараметрыОбновленияФормы.ДатаУвольнения = Объект.ДатаУвольнения;
ПараметрыОбновленияФормы.Группа = Элементы.СтраницаПособияСФР;
УчетПособийСоциальногоСтрахованияРасширенный.ОбновитьФорму(ЭтотОбъект, ПараметрыОбновленияФормы);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЭлементыПособийОбработкаНавигационнойСсылки(Элемент, Адрес, СтандартнаяОбработка)
УчетПособийСоциальногоСтрахованияРасширенныйКлиент.ОбработкаНавигационнойСсылки(
ЭтотОбъект,
Элемент,
Адрес,
СтандартнаяОбработка,
Объект.Сотрудник);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(УстановитьЗначение = Истина)
Если Не ЗначениеЗаполнено(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "УчитыватьМРОТПриОплатеПоСреднемуЗаработку", "ТолькоПросмотр", Истина);
Возврат;
КонецЕсли;
УчетСреднегоЗаработка.УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(
ЭтотОбъект,
Объект.Сотрудник,
Объект.ДатаУвольнения,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска),
УстановитьЗначение);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСправкиСотрудника()
Если РедактированиеСтрокиСписочногоДокумента Тогда
Возврат;
КонецЕсли;
СправкаНДФЛ = Неопределено;
ИсходящаяСправкаОЗаработкеДляРасчетаПособий = Неопределено;
Если Не ЗначениеЗаполнено(Объект.Сотрудник) Тогда
СправкаНДФЛПредставление = НСтр("ru = 'Для оформления ""Справки 2-НДФЛ"" необходимо выбрать сотрудника'");
ИсходящаяСправкаОЗаработкеДляРасчетаПособийПредставление = НСтр("ru = 'Для оформления ""Справки о заработке для расчета пособий"" необходимо выбрать сотрудника'");
СведенияОТрудовойДеятельностиРаботникаСТД_РПредставление = НСтр("ru = 'Для оформления ""Сведений о трудовой деятельности, СТД-Р"" необходимо выбрать сотрудника'")
Иначе
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.ФизическоеЛицо);
Запрос.УстановитьПараметр("ДатаУвольнения", Объект.ДатаУвольнения);
Запрос.УстановитьПараметр("ПредоставлятьМероприятияТДВЭлектроннойФорме", Объект.ПредоставлятьМероприятияТДВЭлектроннойФорме);
Запрос.Текст =
"ВЫБРАТЬ
| &Ссылка КАК СсылкаНаУвольнение,
| &Организация КАК Организация,
| &Сотрудник КАК Сотрудник,
| &ФизическоеЛицо КАК ФизическоеЛицо,
| 1 КАК НомерСтроки,
| &ДатаУвольнения КАК ДатаУвольнения,
| &ПредоставлятьМероприятияТДВЭлектроннойФорме КАК ПредоставлятьМероприятияТДВЭлектроннойФорме
|ПОМЕСТИТЬ ВТСотрудникиДокументов";
Запрос.Выполнить();
СправкиСотрудников = Документы.Увольнение.СправкиСотрудников(Запрос.МенеджерВременныхТаблиц);
Если СправкиСотрудников.Количество() > 0 Тогда
СправкаНДФЛ = СправкиСотрудников[0].СправкаНДФЛ;
ИсходящаяСправкаОЗаработкеДляРасчетаПособий = СправкиСотрудников[0].ИсходящаяСправкаОЗаработкеДляРасчетаПособий;
СведенияОТрудовойДеятельностиРаботникаСТД_Р = СправкиСотрудников[0].СведенияОТрудовойДеятельностиРаботникаСТД_Р;
КонецЕсли;
Если ЗначениеЗаполнено(СправкаНДФЛ) Тогда
СправкаНДФЛПредставление = Строка(СправкаНДФЛ);
Иначе
СправкаНДФЛПредставление = НСтр("ru='Оформить справку 2-НДФЛ'");
КонецЕсли;
Если ЗначениеЗаполнено(ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
ИсходящаяСправкаОЗаработкеДляРасчетаПособийПредставление = Строка(ИсходящаяСправкаОЗаработкеДляРасчетаПособий);
Иначе
ИсходящаяСправкаОЗаработкеДляРасчетаПособийПредставление = НСтр("ru='Оформить справку о заработке для расчета пособий'");
КонецЕсли;
Если ЗначениеЗаполнено(СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
СведенияОТрудовойДеятельностиРаботникаСТД_РПредставление = Строка(СведенияОТрудовойДеятельностиРаботникаСТД_Р);
Иначе
СведенияОТрудовойДеятельностиРаботникаСТД_РПредставление = НСтр("ru='Оформить СТД-Р, сведения о трудовой деятельности'");
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СправкиПриУвольнении",
"Доступность",
ЗначениеЗаполнено(Объект.Сотрудник));
Если Не ПравоДоступа("Просмотр", Метаданные.Документы.СправкаНДФЛ) Тогда
ВидимостьСправкаНДФЛ = Ложь;
ИначеЕсли Не ПравоДоступа("Изменение", Метаданные.Документы.СправкаНДФЛ) И Не ЗначениеЗаполнено(СправкаНДФЛ) Тогда
ВидимостьСправкаНДФЛ = Ложь;
Иначе
ВидимостьСправкаНДФЛ = Истина;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СправкаНДФЛПредставление",
"Видимость",
ВидимостьСправкаНДФЛ);
Если Не ПравоДоступа("Просмотр", Метаданные.Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
ВидимостьИсходящаяСправкаОЗаработкеДляРасчетаПособий = Ложь;
ИначеЕсли Не ПравоДоступа("Изменение", Метаданные.Документы.ИсходящаяСправкаОЗаработкеДляРасчетаПособий) И Не ЗначениеЗаполнено(ИсходящаяСправкаОЗаработкеДляРасчетаПособий) Тогда
ВидимостьИсходящаяСправкаОЗаработкеДляРасчетаПособий = Ложь;
Иначе
ВидимостьИсходящаяСправкаОЗаработкеДляРасчетаПособий = Истина;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ИсходящаяСправкаОЗаработкеДляРасчетаПособийПредставление",
"Видимость",
ВидимостьИсходящаяСправкаОЗаработкеДляРасчетаПособий);
Если Не Объект.УвольнениеСОсновногоМестаРаботы Или Не Объект.ПредоставлятьМероприятияТДВЭлектроннойФорме Тогда
ВидимостьСТД_Р = Ложь;
Иначе
Если Не ПравоДоступа("Просмотр", Метаданные.Документы.СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
ВидимостьСТД_Р = Ложь;
ИначеЕсли Не ПравоДоступа("Изменение", Метаданные.Документы.СведенияОТрудовойДеятельностиРаботникаСТД_Р) И Не ЗначениеЗаполнено(СведенияОТрудовойДеятельностиРаботникаСТД_Р) Тогда
ВидимостьСТД_Р = Ложь;
Иначе
ВидимостьСТД_Р = Истина;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СведенияОТрудовойДеятельностиРаботникаСТД_РПредставление",
"Видимость",
ВидимостьСТД_Р);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСправкиСотрудникаНаКлиенте(Результат, ДополнительныеПараметры) Экспорт
ОбновитьСправкиСотрудника();
КонецПроцедуры
&НаСервере
Процедура НастроитьОтображениеДнейКомпенсации(ЗначениеРассчитано = Истина)
Если Не ЗначениеРассчитано Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
МодульОбразовательныеУчрежденияФормы = ОбщегоНазначения.ОбщийМодуль("ОбразовательныеУчрежденияФормы");
МодульОбразовательныеУчрежденияФормы.УстановитьНеопределенноеСостояниеИндикаторовОсобенностей(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
Группа = Элементы.ДнейКомпенсации;
Поле = Элементы.ДнейКомпенсацииУдержанияОтпуска;
Поле.Шрифт = Новый Шрифт(,,ЗначениеРассчитано = Ложь);
Если ЗначениеРассчитано <> Истина И Поле.Доступность И Не ТолькоПросмотр Тогда
Группа.РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(
НСтр("ru = 'Рассчитать'"),,,, "Рассчитать#КоличествоДнейКомпенсации");
Группа.РасширеннаяПодсказка.УстановитьДействие(
"ОбработкаНавигационнойСсылки", "Подключаемый_КомпенсацияОтпускаОбработкаНавигационнойСсылки");
Группа.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСправа;
Иначе
Группа.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомпенсацияОтпускаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЧастиСсылки = СтрРазделить(НавигационнаяСсылка, "#");
Команда = ЧастиСсылки[0];
Если Команда = "Рассчитать" Тогда
Модифицированность = Истина;
Объект.ФиксКоличествоДнейКомпенсацииОтпуска = Ложь;
РассчитатьКоличествоДнейКомпенсацииУдержанияОтпускаНаСервере(Ложь);
ВыполнитьРасчетНачислений();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьОтображенияВТрудовойКнижке()
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СведенияТрудовойКнижкиГруппа",
"Доступность",
Объект.ОтразитьВТрудовойКнижке);
ЭлектронныеТрудовыеКнижкиКлиентСервер.УстановитьЗаголовокГруппыВторогоДокументаОснования(
ЭтотОбъект, РедактированиеСтрокиСписочногоДокумента);
КонецПроцедуры
#Область МеханизмОсобенностейКомпенсацииОтпускаПриУвольнении
&НаКлиенте
Процедура Подключаемый_ОсобенностьКомпенсацииОтпускаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
ОповещениеПриИзменении = Новый ОписаниеОповещения("РассчитатьПослеНастройкиОсобенностиКомпенсации", ЭтотОбъект);
МодульОбразовательныеУчрежденияФормыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбразовательныеУчрежденияФормыКлиент");
МодульОбразовательныеУчрежденияФормыКлиент.ОсобенностьКомпенсацииОтпускаОбработкаНавигационнойСсылки(
ЭтотОбъект, Элемент, НавигационнаяСсылка, СтандартнаяОбработка, ОповещениеПриИзменении);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьПослеНастройкиОсобенностиКомпенсации(Результат, ДополнительныеПараметры) Экспорт
РассчитатьКоличествоДнейКомпенсацииУдержанияОтпускаНаСервере(Ложь);
ВыполнитьРасчетНачислений();
КонецПроцедуры
#КонецОбласти
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПодключаемыеКоманды(УправляемаяФорма)
ЭДОБЗККлиентСервер.ОбновитьКоманды(УправляемаяФорма, УправляемаяФорма.Объект, Истина);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюОБудущихМероприятиях()
ЭлектронныеТрудовыеКнижки.ОбновитьГруппуИнформацииОБудущихМероприятиях(ЭтотОбъект, Объект.ДатаУвольнения);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииБудущихМероприятий(Результат, ДополнительныеПараметры) Экспорт
ОбновитьИнформациюОБудущихМероприятиях();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзмененныеДанныеПерерасчета(ТекущиеДанные) Экспорт
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияПерерасчета() Экспорт
РассчитатьСотрудникаНаСервере(Объект.Сотрудник,
КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаСервере
Функция ИсключаемыеРегистраторы()
Результат = Новый Массив;
Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
Результат.Добавить(СсылкаНаОбъект);
КонецЕсли;
ПараметрыИсправленного = Неопределено;
Если ИсправлениеДокументовЗарплатаКадрыКлиентСервер.ЭтоИсправление(ЭтотОбъект, ПараметрыИсправленного) Тогда
Результат.Добавить(ПараметрыИсправленного.Ссылка);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат,
ИсправлениеДокументовЗарплатаКадры.ПолучитьДокументыЦепочкиИсправлений(ПараметрыИсправленного.Ссылка));
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьКолонокПрогрессивногоНалога(ДатаПолученияДохода)
ВидимостьКолонок = ДатаПолученияДохода >= УчетНДФЛ.ДатаЗакона176ФЗ();
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаКолонокНалогПоПрогрессивнымСтавкам",
"Видимость", ВидимостьКолонок);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НДФЛНалогСПревышения",
"Видимость", НЕ ВидимостьКолонок);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаКолонокЗачтеноАвансовВСчетСуммПоПрогрессивнымСтавкам",
"Видимость", ВидимостьКолонок);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НДФЛЗачтеноАвансовыхПлатежейСПревышения",
"Видимость", НЕ ВидимостьКолонок);
КонецПроцедуры
&НаКлиенте
Процедура ДниНакопленныхОтгуловПриИзменении(Элемент)
ДниНакопленныхОтгуловПриИзмененииНаСервере();
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияДниНакопленныхОтгуловПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияДниНакопленныхОтгуловПриИзменении()
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияДниНакопленныхОтгуловПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ЧасыНакопленныхОтгуловПриИзменении(Элемент)
ЧасыНакопленныхОтгуловПриИзмененииНаСервере();
ПодключитьОбработчикОжиданияФормы("ОбработчикОжиданияЧасыНакопленныхОтгуловПриИзменении");
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияЧасыНакопленныхОтгуловПриИзменении()
ВыполнитьРасчетНачислений();
ОтключитьОбработчикОжиданияФормы("ОбработчикОжиданияЧасыНакопленныхОтгуловПриИзменении");
КонецПроцедуры
&НаСервере
Функция ВидыРасчетаДокумента()
МассивВидовРасчета = Новый Массив;
МассивВидовРасчета.Добавить(Объект.ВыходноеПособие);
МассивВидовРасчета.Добавить(Объект.ВидРасчетаКомпенсацииУдержанияОтпуска);
МассивВидовРасчета.Добавить(Объект.КомпенсацияЗаНеотработанныеДниЧасыПриУвольнении);
МассивВидовРасчета.Добавить(Объект.ВидРасчетаМесячноеДенежноеСодержание);
ВидыРасчетаКомпенсацииДополнительныхОтпусков = Объект.ДополнительныеОтпуска.Выгрузить().ВыгрузитьКолонку("ВидРасчетаКомпенсацииУдержания");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивВидовРасчета, ВидыРасчетаКомпенсацииДополнительныхОтпусков);
Возврат МассивВидовРасчета;
КонецФункции
&НаСервере
Функция ТаблицаСпециализированныхНачислений(МенеджерРасчета)
ТаблицаНачислений = МенеджерРасчета.ТаблицаИсходныеДанныеНачисленияЗарплатыПоНачислениям();
ТаблицаНачислений.Колонки.Добавить("СторнируемыйДокумент", Неопределено);
ТаблицаНачислений.Колонки.Добавить("ФиксЗаполнение", Новый ОписаниеТипов("Булево"));
ТаблицаНачислений.Колонки.Добавить("ФиксРасчетВремени", Новый ОписаниеТипов("Булево"));
ТаблицаНачислений.Колонки.Добавить("Владелец", Новый ОписаниеТипов("Строка"));
ТаблицаНачислений.Колонки.Добавить("ОсновнойВидРасчета", Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления"));
ТаблицаНачислений.Колонки.Добавить("КатегорияНачисления", Новый ОписаниеТипов("ПеречислениеСсылка.КатегорииНачисленийИНеоплаченногоВремени"));
Возврат ТаблицаНачислений;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыРасчетаСреднегоЗаработкаФСС()
БылПервыйГод = Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод;
БылВторойГод = Объект.ПериодРасчетаСреднегоЗаработкаВторойГод;
ИсточникЗаполнен = ЗначениеЗаполнено(Объект.ИсточникСреднего);
ИсточникУчетОрганизации = (Объект.ИсточникСреднего = Перечисления.ИсточникиСреднегоДляПособий.УчетОрганизации
Или Не ИсточникЗаполнен);
Элементы.ОткрытьСреднийЗаработокСФР.Видимость = ИсточникУчетОрганизации;
Элементы.ПервыйРасчетныйГодЗаработок.Гиперссылка = ИсточникЗаполнен И Не ИсточникУчетОрганизации;
Элементы.ВторойРасчетныйГодЗаработок.Гиперссылка = ИсточникЗаполнен И Не ИсточникУчетОрганизации;
КонецПроцедуры
&НаСервере
Функция ИнформацияОВыбранномСреднемЗаработкеСЭДО(ПараметрыРасчета)
Результат = Новый Структура;
Результат.Вставить("ПервыйРасчетныйГодЗаработок", 0);
Результат.Вставить("ПервыйРасчетныйГодОснование", Неопределено);
Результат.Вставить("ВторойРасчетныйГодЗаработок", 0);
Результат.Вставить("ВторойРасчетныйГодОснование", Неопределено);
ДанныеПоГоду = ПараметрыРасчета.ДанныеПоГодам[Объект.ПериодРасчетаСреднегоЗаработкаПервыйГод];
Если ДанныеПоГоду <> Неопределено Тогда
Результат.ПервыйРасчетныйГодЗаработок = ДанныеПоГоду.УчтенныйЗаработок;
Результат.ПервыйРасчетныйГодОснование = ДанныеПоГоду.Основание;
КонецЕсли;
ДанныеПоГоду = ПараметрыРасчета.ДанныеПоГодам[Объект.ПериодРасчетаСреднегоЗаработкаВторойГод];
Если ДанныеПоГоду <> Неопределено Тогда
Результат.ВторойРасчетныйГодЗаработок = ДанныеПоГоду.УчтенныйЗаработок;
Результат.ВторойРасчетныйГодОснование = ДанныеПоГоду.Основание;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ПриИзмененииОтработанныхДнейНаСервере(ДанныеСотрудника)
УдалитьОтработанныеДниЧасы(ДанныеСотрудника.ВыборОтработанныхЧасов);
Для Каждого ОтработанныйДень Из ДанныеСотрудника.ВыбранныеДни Цикл
НоваяСтрока = Объект.ОтработанныеДни.Добавить();
НоваяСтрока.Дата = ОтработанныйДень;
Если ДанныеСотрудника.ВыборОтработанныхЧасов Тогда
НоваяСтрока.Часы = ДанныеСотрудника.ОтработанныеЧасы[ОтработанныйДень];
КонецЕсли;
КонецЦикла;
УстановитьПредставлениеОтработанныхДней();
КонецПроцедуры
&НаСервере
Процедура ДниНакопленныхОтгуловПриИзмененииНаСервере()
ЗаполнитьОтработанныеДни();
УстановитьПредставлениеОтработанныхДней();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтработанныеДни()
УдалитьОтработанныеДниЧасы();
Если Объект.ДниНакопленныхОтгулов = 0
Или Объект.ДатаУвольнения < УчетОтгулов.НачалоУчетаОтработанныхДней() Тогда
Возврат;
КонецЕсли;
ДанныеСотрудников = УчетОтгулов.СведенияОбОтработанныхДнях(Объект.Сотрудник, Объект.ДатаУвольнения, СсылкаНаОбъект, СсылкаНаИсправленныйДокумент);
ДанныеСотрудника = ДанныеСотрудников.Получить(Объект.Сотрудник);
Если ДанныеСотрудника = Неопределено Тогда
Возврат;
КонецЕсли;
КоличествоОтработанныхДней = Объект.ДниНакопленныхОтгулов - ДанныеСотрудника.ОстатокДоНачалаУчетаОтгулов;
Если КоличествоОтработанныхДней <= 0 Тогда
Возврат;
КонецЕсли;
ОтработанныеДниВсего = 0;
Для Каждого ОтработанныйДень Из ДанныеСотрудника.НеиспользованныеОтработанныеДни Цикл
Если ОтработанныйДень >= Объект.ДатаУвольнения
Или ОтработанныеДниВсего = КоличествоОтработанныхДней Тогда
Прервать;
КонецЕсли;
НоваяСтрока = Объект.ОтработанныеДни.Добавить();
НоваяСтрока.Дата = ОтработанныйДень;
ОтработанныеДниВсего = ОтработанныеДниВсего + 1;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПроверитьОстатокОтработанныхДней()
Если Объект.ДниНакопленныхОтгулов = 0
Или Объект.ДатаУвольнения < УчетОтгулов.НачалоУчетаОтработанныхДней() Тогда
Возврат;
КонецЕсли;
ДанныеСотрудников = УчетОтгулов.СведенияОбОтработанныхДнях(Объект.Сотрудник, Объект.ДатаУвольнения, СсылкаНаОбъект, СсылкаНаИсправленныйДокумент);
ДанныеСотрудника = ДанныеСотрудников.Получить(Объект.Сотрудник);
Если ДанныеСотрудника = Неопределено Тогда
Возврат;
КонецЕсли;
КоличествоОтработанныхДней = Объект.ДниНакопленныхОтгулов - ДанныеСотрудника.ОстатокДоНачалаУчетаОтгулов;
Если КоличествоОтработанныхДней <= 0 Тогда
Возврат;
КонецЕсли;
ОтработанныеДни = Объект.ОтработанныеДни.НайтиСтроки(Новый Структура("Часы", 0));
Если ОтработанныеДни.Количество() < КоличествоОтработанныхДней Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'У сотрудника недостаточно отработанных дней для компенсации отгула'"), , "ДниНакопленныхОтгулов", "Объект");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставлениеОтработанныхДней()
ОтработанныеДни = Объект.ОтработанныеДни.Выгрузить(Новый Структура("Часы", 0));
ОтработанныеЧасы = ОтработанныеДни.СкопироватьКолонки();
Для Каждого ОтработанныйДень Из Объект.ОтработанныеДни Цикл
Если ОтработанныйДень.Часы <> 0 Тогда
ЗаполнитьЗначенияСвойств(ОтработанныеЧасы.Добавить(), ОтработанныйДень);
КонецЕсли;
КонецЦикла;
ЗаголовокКомандыВыборДней = НСтр("ru = 'Выбрать дни'");
Если ОтработанныеДни.Количество() > 0 Тогда
ЗаголовокКомандыВыборДней = УчетОтгулов.ПредставлениеОтработанныхДней(ОтработанныеДни);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхДней", "Заголовок", ЗаголовокКомандыВыборДней);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхДней", "Доступность", Объект.ДниНакопленныхОтгулов > 0);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхДней", "Видимость", Объект.ДатаУвольнения >= УчетОтгулов.НачалоУчетаОтработанныхДней());
ЗаголовокКомандыВыборЧасов = НСтр("ru = 'Выбрать дни'");
Если ОтработанныеЧасы.Количество() > 0 Тогда
ЗаголовокКомандыВыборЧасов = УчетОтгулов.ПредставлениеОтработанныхДней(ОтработанныеЧасы);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхЧасов", "Заголовок", ЗаголовокКомандыВыборЧасов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхЧасов", "Доступность", Объект.ЧасыНакопленныхОтгулов > 0);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ВыборОтработанныхЧасов", "Видимость", Объект.ДатаУвольнения >= УчетОтгулов.НачалоУчетаОтработанныхДней());
КонецПроцедуры
&НаСервере
Функция РасчетВыходногоПособияПоПостановлению504()
ДатаНачалаДействияИЗменений = РасчетЗарплатыРасширенный.ДатаНачалаДействияПостановления504();
Если Объект.ДатаУвольнения >= ДатаНачалаДействияИЗменений Или Не ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ОбновитьВидимостьЭлементовВыходногоПособия()
РасчетПоСреднемесячномуКоличествуДнейЧасов = РасчетВыходногоПособияПоПостановлению504();
Элементы.ГруппаДнейЧасовВыходногоПособия.Видимость = Не РасчетПоСреднемесячномуКоличествуДнейЧасов;
Элементы.ГруппаКратностьВыходногоПособия.Видимость = РасчетПоСреднемесячномуКоличествуДнейЧасов;
КонецПроцедуры
&НаСервере
Функция ТаблицаКомпенсируемыхОтгулов()
ТаблицаКомпенсируемыхОтгулов = Новый ТаблицаЗначений;
ТаблицаКомпенсируемыхОтгулов.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
ТаблицаКомпенсируемыхОтгулов.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаКомпенсируемыхОтгулов.Колонки.Добавить("Значение", Новый ОписаниеТипов("Число"));
Возврат ТаблицаКомпенсируемыхОтгулов;
КонецФункции
&НаСервере
Процедура ЧасыНакопленныхОтгуловПриИзмененииНаСервере()
ЗаполнитьОтработанныеЧасы();
УстановитьПредставлениеОтработанныхДней();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтработанныеЧасы()
УдалитьОтработанныеДниЧасы(Истина);
Если Объект.ЧасыНакопленныхОтгулов = 0
Или Объект.ДатаУвольнения < УчетОтгулов.НачалоУчетаОтработанныхДней() Тогда
Возврат;
КонецЕсли;
ДанныеСотрудников = УчетОтгулов.СведенияОбОтработанныхЧасах(Объект.Сотрудник, Объект.ДатаУвольнения, СсылкаНаОбъект, СсылкаНаИсправленныйДокумент);
ДанныеСотрудника = ДанныеСотрудников.Получить(Объект.Сотрудник);
Если ДанныеСотрудника = Неопределено Тогда
Возврат;
КонецЕсли;
ОтработанныеЧасыВсего = 0;
Для Каждого ОтработанныйДень Из ДанныеСотрудника.НеиспользованныеОтработанныеДни Цикл
ОтработанныеЧасы = ДанныеСотрудника.ОтработанныеЧасы[ОтработанныйДень];
Если ОтработанныеЧасы = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ОтработанныйДень >= Объект.ДатаУвольнения
Или ОтработанныеЧасыВсего + ОтработанныеЧасы > Объект.ЧасыНакопленныхОтгулов Тогда
Прервать;
КонецЕсли;
НоваяСтрока = Объект.ОтработанныеДни.Добавить();
НоваяСтрока.Дата = ОтработанныйДень;
НоваяСтрока.Часы = ОтработанныеЧасы;
ОтработанныеЧасыВсего = ОтработанныеЧасыВсего + ОтработанныеЧасы;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УдалитьОтработанныеДниЧасы(УдалитьЧасы = Ложь)
УдалитьДни = Не УдалитьЧасы;
СтрокиКУдалению = Новый Массив;
Для Каждого ОтработанныйДень Из Объект.ОтработанныеДни Цикл
Если УдалитьЧасы И ОтработанныйДень.Часы <> 0 Тогда
СтрокиКУдалению.Добавить(ОтработанныйДень);
ИначеЕсли УдалитьДни И ОтработанныйДень.Часы = 0 Тогда
СтрокиКУдалению.Добавить(ОтработанныйДень);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
Объект.ОтработанныеДни.Удалить(СтрокаКУдалению);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Инициализация
СтарыеЗначенияКонтролируемыхПолей = Новый Соответствие;
#КонецОбласти