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