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