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