#Область ОписаниеПеременных
&НаКлиенте
Перем СтарыеЗначенияКонтролируемыхПолей Экспорт;
&НаКлиенте
Перем ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РасчетЗарплатыРасширенныйФормы.ИнициализироватьМеханизмПересчетаДокументаПриРедактировании(ЭтаФорма);
НовыйДокумент = Параметры.Ключ.Пустая();
Если НовыйДокумент Тогда
ИспользуетсяРасчетЗарплаты = ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная");
ОграниченияНаУровнеЗаписей = Новый ФиксированнаяСтруктура("ЧтениеБезОграничений, ИзменениеБезОграничений, ИзменениеКадровыхДанных", Ложь, Ложь, Ложь);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
РасчетЗарплатыРасширенныйФормы.ДокументыПриСозданииНаСервере(ЭтаФорма, ОписаниеДокумента(ЭтотОбъект));
УстановитьПривилегированныйРежим(Ложь);
ПодписиДокументов.ПриСозданииНаСервере(ЭтотОбъект);
Если НовыйДокумент Тогда
Если Параметры.Свойство("Сотрудник") И ЗначениеЗаполнено(Параметры.Сотрудник) Тогда
Объект.Сотрудник = Параметры.Сотрудник;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Сотрудник)
И НЕ ЗначениеЗаполнено(Объект.ИсправленныйДокумент) Тогда
ОбновитьВариантРасчета();
КонецЕсли;
ЗарплатаКадры.ЗаполнитьПервоначальныеЗначенияВФорме(ЭтотОбъект, ЗначенияДляЗаполнения());
ЗаполнитьДанныеФормыПоОрганизации();
ЗарплатаКадрыРасширенный.УстановитьНаименованиеПервичногоДокумента(Объект);
ПриПолученииДанныхНаСервере(РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.Командировка")));
РасчетЗарплатыРасширенный.УстановитьПланируемуюДатуВыплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
ЗаполнитьПериодРасчетаСреднегоЗаработка();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
РассчитатьНачисленияНаСервере(Ложь, Истина);
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
Если Объект.РасчетДенежногоСодержания Тогда
ОбновитьРасчетДенежногоСодержания = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЗагрузитьНастройки();
УстановитьИнфонадписьВнутрисменнаяКомандировка();
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтаФорма, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
Если ИспользуетсяРасчетЗарплаты И Не ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений И Объект.ДокументРассчитан Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
НастроитьФормуКомандировкиВключеннойВТ9а(Параметры);
РасчетЗарплатыРасширенныйФормы.УстановитьДоступныеХарактерыВыплаты(Элементы);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ЗарплатаКадрыРасширенный.УстановитьВидимостьКомандПечатиМногофункциональногоДокумента(ЭтаФорма);
Если Не Объект.РассчитыватьСПлановымиНачислениями Тогда
РасчетЗарплатыРасширенныйФормы.УстановитьПризнакНеобходимостиРасчета(ЭтотОбъект);
КонецЕсли;
НеобходимоПерезаполнитьНачисления = РасчетНеобходимоВыполнить;
Если Не Параметры.Ключ.Пустая() Тогда
Если Параметры.Свойство("ВыполнитьПерезаполнениеСведенийОСреднемЗаработке")
Или (ВыполнятьПредварительныйРасчетДокумента Или Параметры.Свойство("ОтражениеВУчетеТ9а")) И РасчетНеобходимоВыполнить Тогда
ПерезаполнятьСреднийЗаработок = Истина;
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтотОбъект), Ложь) Тогда
РассчитатьНачисленияНаСервере(Ложь, Истина);
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтотОбъект);
Иначе
ОчиститьРассчитанныеДанные();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужбаФормы");
Модуль.УстановитьПараметрыВыбораСотрудников(ЭтотОбъект, "Сотрудник");
КонецЕсли;
ОкончательныйРасчетНДФЛ = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
БлокировкаИзмененияОбъектов.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ЭДОБЗК.ПриСозданииНаСервереФормыОбъекта(ЭтотОбъект, Отказ, СтандартнаяОбработка, Объект);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументов = ОбщегоНазначения.ОбщийМодуль("УчетОригиналовПервичныхДокументов");
МодульУчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект, Элементы.Шапка);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивом = ОбщегоНазначения.ОбщийМодуль("ОбменСАрхивом");
МодульОбменСАрхивом.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ЗаполнениеВыполнено = Ложь;
ИспользуетсяРасчетЗарплаты = ПолучитьФункциональнуюОпцию("ИспользоватьРасчетЗарплатыРасширенная");
ПриПолученииДанныхНаСервере(ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонтрольВеденияУчетаБЗК.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
Если Не ТолькоПросмотр И Не ТекущийОбъект.Проведен Тогда
РасчетНеобходимоВыполнить = Истина;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
БлокировкаИзмененияОбъектов.ПриЧтенииНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект,
ПравоДоступа("Изменение", Метаданные.Документы.Командировка));
ЭДОБЗК.ПриЧтенииНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки = ОценкаПроизводительностиКлиент.ЗамерВремени();
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи <> РежимЗаписиДокумента.ОтменаПроведения И Не ПараметрыЗаписи.Свойство("ПроверкаПередЗаписьюВыполнена") Тогда
Отказ = Истина;
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если РасчетНеобходимоВыполнить Тогда
Если НеобходимоПерезаполнитьНачисления Тогда
ВыполнитьРасчетНачисленийПослеРедактированияНаСервере();
Иначе
ВыполнитьРасчетНачисленийБезПерезаполненияПослеРедактированияНаСервере()
КонецЕсли;
ЗарплатаКадрыРасширенный.ЗаполнитьТекущийОбъектОбъектомФормы(ТекущийОбъект, Объект);
КонецЕсли;
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
РеквизитыВДанные(ТекущийОбъект);
Если ЗаполнениеВыполнено Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("УдалитьПерерасчетыСреднегоЗаработка", Истина);
ТекущийОбъект.ДополнительныеСвойства.Вставить("УдалитьПерерасчетыЗарплаты", Истина);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи, Отказ);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если Объект.ДокументРассчитан Тогда
ИмяОперации = "ПроведениеДокументаКомандировка";
Иначе
ИмяОперации = "ПроведениеДокументаКомандировкаКадры";
КонецЕсли;
ОценкаПроизводительностиКлиент.УстановитьКлючевуюОперациюЗамера(ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки, ИмяОперации);
КонецЕсли;
Оповестить("ЗаписьДокументаКомандировка",
Новый Структура("Ссылка, ДокументРассчитан, Сотрудник, ДатаНачала", Объект.Ссылка, Объект.ДокументРассчитан И Объект.Проведен, Объект.Сотрудник, Объект.ДатаНачала),
ЭтаФорма.ВладелецФормы);
ИсправлениеДокументовЗарплатаКадрыКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Оповестить("Запись_Командировка", ПараметрыЗаписи, Объект.Ссылка);
Оповестить("ЗаявкиСотрудниковЗаписанДокумент", Объект.Ссылка, ВладелецФормы);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ДанныеВРеквизиты();
ЗаполнитьПредставлениеРаспределенияБухучета();
ПодписиДокументов.ПослеЗаписиНаСервере(ЭтаФорма);
ПерерасчетЗарплаты.РегистрацияПерерасчетовПоПредварительнымДаннымВФоне(ТекущийОбъект.Ссылка);
КонтрольВеденияУчетаБЗК.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
БлокировкаИзмененияОбъектов.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЭДОБЗК.ПослеЗаписиНаСервереФормыОбъекта(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ПередЗакрытием(ЭтотОбъект, Объект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИспользуетсяРасчетЗарплаты Тогда
Если ИмяСобытия = "ИзмененыРезультатыРасчетаНДФЛ" И Источник.ВладелецФормы = ЭтаФорма Тогда
ОбновитьДанныеНДФЛНаСервере(Параметр);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
ИначеЕсли ИмяСобытия = "ИзмененыРезультатыРасчетаУдержаний" И Источник.ВладелецФормы = ЭтаФорма Тогда
ОбновитьДанныеУдержанийНаСервере(Параметр);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
ИначеЕсли ИмяСобытия = "ИзмененыКорректировкиВыплаты" И Источник.ВладелецФормы = ЭтаФорма Тогда
ОбновитьДанныеКорректировокВыплатыНаСервере(Параметр);
ИначеЕсли ИмяСобытия = "Запись_Начисление" И Источник = Объект.ВидРасчета Тогда
ВидРасчетаПриИзмененииНаСервере();
КонецЕсли;
КонецЕсли;
ИсправлениеДокументовЗарплатаКадрыКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если (ИмяСобытия = "ЗаписанДокументОтпуск"
Или ИмяСобытия = "ЗаписанДокументОтпускБезСохраненияОплаты")
И Источник.ВладелецФормы = ЭтаФорма Тогда
ЗаполнитьОтсутствияПоДругимМестамРаботы();
КонецЕсли;
Если ИмяСобытия = "ЗаписьДокументаКомандировка"
И Источник = ЭтаФорма Тогда
ЗаполнитьОтсутствияПоДругимМестамРаботы();
КонецЕсли;
Если ИмяСобытия = "ЗаписанПодчиненныйДокумент" И Источник = Объект.Ссылка Тогда
УстановитьИнфоНадписьЗамещения();
КонецЕсли;
ЭДОБЗККлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент");
МодульУчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект, Источник);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(ТекущийОбъект);
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаПересеченияПериодовВыполнена", Истина);
Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Объект"));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ЗаполнитьДанныеФормыПоОрганизации();
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени("ИзменениеСотрудникаВФормеДокументаКомандировка");
ОбновитьРасчетДенежногоСодержания = Истина;
СотрудникПриИзмененииНаСервере();
УстановитьВидимостьУдержаний();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ВидРасчетаПриИзменении(Элемент)
ВидРасчетаПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ВнутрисменнаяКомандировкаПриИзменении(Элемент)
ВнутрисменнаяКомандировкаПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ПризнакДлительнойКомандировкиПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
ДатаНачалаПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
ДатаОкончанияПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДатаКомандировкиПриИзменении(Элементы)
ДатаКомандировкиПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ЧасыПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДополнительнаяОплатаПриИзменении(Элемент)
ДополнительнаяОплатаПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаДоплатыПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияДоплатыПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ВидРасчетаДополнительнойОплатыПриИзменении(Элемент)
УстановитьДополнительныеНачисленияНаСервере(Объект.ВидРасчетаДополнительнойОплаты, Истина);
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ВидВремениЗамещаемыйПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеФормыПоОписанию = УчетРабочегоВремениРасширенныйКлиентСервер.ДокументыОтклоненийДанныеФормыПоОписанию(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени(), Истина);
ДанныеВыбора = СписокВыбораЗамещаемыхВидовВремен(ДанныеФормыПоОписанию);
КонецПроцедуры
&НаКлиенте
Процедура ВидВремениЗамещаемыйПредставлениеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
УчетРабочегоВремениРасширенныйКлиент.ДокументыОтклоненийВидВремениЗамещаемыйОбработкаВыбора(ЭтотОбъект, ОписаниеДокументаОтклоненийУчетаВремени(), ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Модифицированность);
ПриИзмененииМесяцаНачисления();
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ПериодРегистрацииНачалоВыбораЗавершение", ЭтотОбъект);
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииНачалоВыбораЗавершение(ЗначениеВыбрано, ДополнительныеПараметры) Экспорт
ПриИзмененииМесяцаНачисления();
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой", Направление, Модифицированность);
ПодключитьОбработчикОжидания("ОбработчикОжиданияМесяцНачисленияПриИзменении", 0.3, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПериодРегистрацииОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПорядокВыплатыПриИзменении(Элемент)
ПорядокВыплатыПриИзмененииНаСервере();
Если ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты, Объект.ПланируемаяДатаВыплаты) Тогда
ПодключитьРасчетПослеРедактирования(Истина);
Иначе
Объект.Удержания.Очистить();
Объект.НДФЛ.Очистить();
Объект.КорректировкиВыплаты.Очистить();
Объект.ПримененныеВычетыНаДетейИИмущественные.Очистить();
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПланируемаяДатаВыплатыПриИзменении(Элемент)
Если ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты, Объект.ПланируемаяДатаВыплаты) Тогда
ПодключитьРасчетПослеРедактирования(Истина);
Иначе
Объект.Удержания.Очистить();
Объект.НДФЛ.Очистить();
Объект.КорректировкиВыплаты.Очистить();
Объект.ПримененныеВычетыНаДетейИИмущественные.Очистить();
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
КонецЕсли;
ДатаВыплатыПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗамещениеИнфоНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЦепочкиДокументов") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦепочкиДокументовКлиент");
Модуль.ОткрытьФормуЗамещенияПоСсылке(ЭтаФорма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДатаВыплатыПриИзмененииНаСервере()
УстановитьСвойствоДокументРассчитан();
УстановитьВидимостьУдержаний();
КонецПроцедуры
&НаСервере
Процедура ПорядокВыплатыПриИзмененииНаСервере()
РасчетЗарплатыРасширенный.УстановитьПланируемуюДатуВыплаты(ЭтотОбъект, ОписаниеДокумента(ЭтаФорма));
УстановитьСвойствоДокументРассчитан();
УстановитьВидимостьУдержаний();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтотОбъект);
УстановитьЗначениеПеречислитьНалогПриИзмененииПорядкаВыплаты();
УстановитьВидимостьСвойстваПеречислитьНалог();
УстановитьВидимостьСвойстваИсчислятьНалог();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДокументРассчитанПриИзменении(Элемент)
ДокументРассчитанПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ДокументРассчитанПриИзмененииНаСервере()
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтаФорма, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьРасчетПослеРедактирования(ПерезаполнитьНачисления = Истина)
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтаФорма), Ложь) Тогда
Если ПерезаполнитьНачисления Тогда
ПодключитьОбработчикОжиданияАвтоматическогоРасчета("РассчитатьНачисленияПослеРедактирования");
НеобходимоПерезаполнитьНачисления = Истина;
ИначеЕсли Не НеобходимоПерезаполнитьНачисления Тогда
ПодключитьОбработчикОжиданияАвтоматическогоРасчета("РассчитатьНачисленияБезПерезаполненияПослеРедактирования");
КонецЕсли;
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияАвтоматическогоРасчета(ИмяОбработчика)
ЗарплатаКадрыРасширенныйКлиент.ПодключитьОбработчикОжиданияАвтоматическогоРасчета(ЭтотОбъект, РегистрацияНачисленийДоступна, ИмяОбработчика, , "ОчиститьРассчитанныеДанныеНаКлиенте");
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьНачисленияПослеРедактирования()
ВыполнитьРасчетНачисленийПослеРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьРасчетНачисленийПослеРедактированияНаСервере()
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтаФорма), Ложь) Тогда
РассчитатьНачисленияНаСервере();
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтаФорма);
НеобходимоПерезаполнитьНачисления = Ложь;
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
КонецЕсли;
СкорректированСреднийЗаработок = Ложь;
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьНачисленияБезПерезаполненияПослеРедактирования()
ВыполнитьРасчетНачисленийБезПерезаполненияПослеРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьРасчетНачисленийБезПерезаполненияПослеРедактированияНаСервере()
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтаФорма), Ложь) Тогда
РассчитатьНачисленияНаСервере(Ложь, Ложь);
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтаФорма);
Иначе
ОчиститьРассчитанныеДанные(Ложь);
ПерезаполнятьСреднийЗаработок = Истина;
КонецЕсли;
СкорректированСреднийЗаработок = Ложь;
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполненностьДанныхИнформационныйТекстОбработкаНавигационнойСсылки(Элемент,
НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
УчетСреднегоЗаработкаКлиент.ПоказатьПричиныПерерасчетаСреднегоЗаработка(Объект.Ссылка,
СтандартнаяОбработка, НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяФинансированияПриИзменении(Элемент)
ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовПриИзменении(Элемент)
ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры
&НаКлиенте
Процедура СпособОтраженияЗарплатыВБухучетеПриИзменении(Элемент)
ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры
&НаКлиенте
Процедура ОтношениеКЕНВДПриИзменении(Элемент)
ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры
&НаКлиенте
Процедура УчитыватьМРОТПриОплатеПоСреднемуЗаработкуПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ДоначислитьЗарплатуПриНеобходимостиПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяцаПриИзменении(Элемент)
ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяцаПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура МестоНазначенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "МестоНазначенияКомандировки", НСтр("ru = 'Страна, город'"), НСтр("ru = 'Страна, город'"));
КонецПроцедуры
&НаКлиенте
Процедура МестоНазначенияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.МестоНазначения = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МестоНазначенияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "МестоНазначенияКомандировки");
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияНазначенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "ОрганизацияНазначенияКомандировки", НСтр("ru = 'Организации'"), НСтр("ru = 'Организация'"));
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияНазначенияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.ОрганизацияНазначения = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияНазначенияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "ОрганизацияНазначенияКомандировки");
КонецПроцедуры
&НаКлиенте
Процедура КомандировкаЗаСчетСредствНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "КомандировкаЗаСчетСредств", НСтр("ru = 'За счет средств'"), НСтр("ru = 'За счет средств'"));
КонецПроцедуры
&НаКлиенте
Процедура КомандировкаЗаСчетСредствОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.КомандировкаЗаСчетСредств = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандировкаЗаСчетСредствАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "КомандировкаЗаСчетСредств");
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеКомандировкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "ОснованиеКомандировки", НСтр("ru = 'Основания командировок'"), НСтр("ru = 'Основание командировки'"));
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеКомандировкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.Основание = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОснованиеКомандировкиАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "ОснованиеКомандировки");
КонецПроцедуры
&НаКлиенте
Процедура ЦельНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "ЦельКомандировки", НСтр("ru = 'Цели командировок'"), НСтр("ru = 'Цель командировки'"));
КонецПроцедуры
&НаКлиенте
Процедура ЦельОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.Цель = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЦельАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "ЦельКомандировки");
КонецПроцедуры
#Область РеквизитыПервичногоДокумента
&НаКлиенте
Процедура НаименованиеПервичногоДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ОткрытьФормуСпискаЗначенийСтроковогоРеквизита(Элемент,
СтандартнаяОбработка, "ПервичныйДокумент", НСтр("ru = 'Первичные документы'"), НСтр("ru = 'Первичный документ'"));
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПервичногоДокументаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда
Объект.НаименованиеПервичногоДокумента = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПервичногоДокументаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ПодборЗначенияСтроковогоРеквизита(Текст, ДанныеВыбора, СтандартнаяОбработка, "ПервичныйДокумент");
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Оповещение = Новый ОписаниеОповещения("ДатаПервичногоДокументаНачалоВыбораЗавершение", ЭтотОбъект);
ПоказатьВводДаты(Оповещение, ?(ЗначениеЗаполнено(Объект.ДатаПервичногоДокумента), Объект.ДатаПервичногоДокумента, Объект.Дата), НСтр("ru='Дата первичного документа'"), ЧастиДаты.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаНачалоВыбораЗавершение(Дата, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(Дата) Тогда
Объект.ДатаПервичногоДокумента = Дата;
ДатаПервичногоДокументаПредставление = Формат(Дата,"ДФ=dd.MM.yyyy");
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПервичногоДокументаОчистка(Элемент, СтандартнаяОбработка)
Объект.ДатаПервичногоДокумента = Дата(1,1,1);
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементПриИзменении(Элемент)
ПодписиДокументовКлиент.ПриИзмененииПодписывающегоЛица(ЭтаФорма, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПодписиДокументовЭлементНажатие(Элемент)
ПодписиДокументовКлиент.РасширеннаяПодсказкаНажатие(ЭтаФорма, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда
МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент");
МодульУчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы["ДекорацияСостояниеОригинала"]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВариантУказанияБухучетаПриИзменении(Элемент)
Объект.БухучетУказываетсяРаспределением = ?(ВариантУказанияБухучета = 1, Истина, Ложь);
УстановитьВидимостьНастроекБухучета(ЭтаФорма);
ОбновитьБухучетРезультатовРасчета();
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеРаспределенияБухучетаНажатие(Элемент)
ЗарплатаКадрыРасширенныйКлиент.ОткрытьФормуРедактированияРаспределенияБухучетаДокумента(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНачисления
&НаКлиенте
Процедура НачисленияПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("НачисленияВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтаФорма, "Начисления", Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтаФорма, "Начисления", Элементы.Начисления.ТекущиеДанные, НоваяСтрока, Копирование);
ПерезаполнитьПриОкончанииРедактирования = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
Если ПерезаполнитьПриОкончанииРедактирования Тогда
НеПерезаполнятьПриРасчете = Истина;
ПодключитьРасчетПослеРедактирования(Ложь);
КонецЕсли;
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПослеУдаления(Элемент)
РассчитатьДанныеФормы(Объект.Сотрудник, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура НачисленияНачислениеПриИзменении(Элемент)
ОписаниеТаблицыВидовРасчета = ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтаФорма, ОписаниеТаблицыВидовРасчета, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеТаблицыВидовРасчета, Истина, Истина);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияРезультатПриИзменении(Элемент)
ПерезаполнитьПриОкончанииРедактирования = Истина;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияДатаНачалаПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДоходПолученНаТерриторииРФПриИзменении(Элемент)
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНачисленияПерерасчет
&НаКлиенте
Процедура НачисленияПерерасчетПриИзменении(Элемент)
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Элемент", Элемент);
ДополнительныеПараметры.Вставить("ВыбраннаяСтрока", ВыбраннаяСтрока);
ДополнительныеПараметры.Вставить("Поле", Поле);
Оповещение = Новый ОписаниеОповещения("НачисленияПерерасчетВыборЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьКомандуРасшифровкиЗначенияПоказателя(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, Оповещение);
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") <> 0 Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетВыборЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Элемент, ВыбраннаяСтрока, Поле);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриАктивизацииСтроки(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(ЭтаФорма, "НачисленияПерерасчет", Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
РасчетЗарплатыРасширенныйКлиент.ПередНачаломДобавленияСтрокиПерерасчета(Элемент, Отказ, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередУдалением(Элемент, Отказ)
РасчетЗарплатыРасширенныйКлиент.ПередУдалениемСтрокиПерерасчета(ЭтотОбъект, "НачисленияПерерасчет", Элемент, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
ДобавитьИзмененныеДанныеПерерасчета(Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РасчетЗарплатыКлиент.СтрокаРасчетаПриНачалеРедактирования(ЭтаФорма, "НачисленияПерерасчет", Элементы.НачисленияПерерасчет.ТекущиеДанные, НоваяСтрока, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ДобавитьИзмененныеДанныеПерерасчета(Элемент.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
РасчетЗарплатыКлиент.СтрокаРасчетаПриОкончанииРедактирования(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
ОбновитьПерерасчетИтог(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПослеУдаления(Элемент)
ПослеУдаленияПерерасчета();
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетНачислениеПриИзменении(Элемент)
ОписаниеТаблицыПерерасчетов = ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенныйКлиент.ВводНачисленийНачислениеПриИзменении(ЭтаФорма, ОписаниеТаблицыПерерасчетов, 2);
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеТаблицыПерерасчетов, Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетРезультатПриИзменении(Элемент)
ОбновитьПерерасчетИтог (ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетДатаНачалаПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Истина, Истина);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетДатаОкончанияПриИзменении(Элемент)
РасчетЗарплатыРасширенныйКлиент.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), Ложь, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОтсутствияПоДругимМестамРаботы
&НаКлиенте
Процедура ОтсутствияПоДругимМестамРаботыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя = "ОтсутствияПоДругимМестамРаботыСсылка" Тогда
СтандартнаяОбработка = Ложь;
Строка = ЭтотОбъект.ОтсутствияПоДругимМестамРаботы.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(Строка.Ссылка) Тогда
ПоказатьЗначение(, Строка.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграцииС1САрхивом(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивомКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменСАрхивомКлиент");
МодульОбменСАрхивомКлиент.ВыполнитьПодключаемуюКоманду(Команда, ЭтотОбъект, Объект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуИнтеграцииС1САрхивомНаСервере(Знач Параметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивом = ОбщегоНазначения.ОбщийМодуль("ОбменСАрхивом");
МодульОбменСАрхивом.ВыполнитьПодключаемуюКоманду(ЭтотОбъект, Параметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ИнтеграцияС1САрхивом_Нажатие(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1САрхивом") Тогда
МодульОбменСАрхивомКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОбменСАрхивомКлиент");
МодульОбменСАрхивомКлиент.Нажатие(Элемент, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ОбновитьПодключаемыеКоманды(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Исправить(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.Исправить(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Сторнировать(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.Сторнировать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПерейтиКИсправлению(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.ПерейтиКИсправлению(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПерейтиКИсправленному(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.ПерейтиКИсправленному(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПерейтиКСторно(Команда)
ИсправлениеДокументовЗарплатаКадрыКлиент.ПерейтиКСторно(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
#Область ОбработчикиСобытийПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Команда, Объект)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Контекст, Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийСледующемуНачалоВыбора(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_НачисленияОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачисленияПерерасчетОтменитьИсправление(Команда)
РасчетЗарплатыКлиент.ОтменитьИсправление(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_НачисленияПерерасчетРазрешеноРедактироватьСторно(Команда)
РасчетЗарплатыРасширенныйКлиент.НастроитьРедактированиеСторно(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьНачисления(Команда) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени("ЗаполнениеДокументаКомандировка");
ОчиститьСообщения();
ОбновитьРасчетДенежногоСодержания = ОбновитьРасчетДенежногоСодержания Или Не РасчетДенежногоСодержанияРедактировался;
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтаФорма)) Тогда
Если НеПерезаполнятьПриРасчете Тогда
КомандаРассчитатьНачисленияНаСервере(Ложь);
Иначе
КомандаРассчитатьНачисленияНаСервере(Истина);
КонецЕсли;
ЗарплатаКадрыРасширенныйКлиентСервер.СброситьФлагНеобходимостиВыполненияРасчета(ЭтаФорма);
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
КонецЕсли;
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработок(Команда)
Оповещение = Новый ОписаниеОповещения("ОткрытьСреднийЗаработокЗавершение", ЭтотОбъект);
УчетСреднегоЗаработкаКлиент.ОткрытьФормуВводаСреднегоЗаработкаОбщий(ПараметрыРедактированияСреднегоЗаработка(), ЭтаФорма, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДенежноеСодержание(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Оповещение = Новый ОписаниеОповещения("ОткрытьДенежноеСодержаниеЗавершение", ЭтотОбъект);
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("РасчетДенежногоСодержанияКлиент");
Модуль.ОткрытьФормуВводаСохраняемогоДенежногоСодержания(СтруктураОбъекта, "Командировка","Командировка", ЭтаФорма, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтаФорма, Не Элементы.НачисленияПодробно.Пометка, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(Объект.Ссылка, Элементы.НачисленияПодробно.Пометка, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПерерасчетПодробно(Команда)
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтаФорма, Не Элементы.НачисленияПерерасчетПодробно.Пометка, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйВызовСервера.СохранитьНастройкуРежимаОтображенияПодробно(Объект.Ссылка, Элементы.НачисленияПерерасчетПодробно.Пометка, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиенте
Процедура ПодробнееОРасчетеУдержаний(Команда)
РасчетЗарплатыРасширенныйКлиент.ОткрытьФормуПодробнееОРасчетеУдержаний(Объект, "Командировка", ЭтаФорма, ОписаниеДокумента(ЭтаФорма));
КонецПроцедуры
&НаКлиенте
Процедура ПодробнееОРасчетеНДФЛ(Команда)
УчетНДФЛКлиент.ОткрытьФормуПодробнееОРасчетеНДФЛ(Объект.Организация, ЭтаФорма, Объект.ПериодРегистрации, Объект.Сотрудник,
Объект.ПланируемаяДатаВыплаты);
КонецПроцедуры
&НаСервере
Функция НДФЛПодробнееНаСервере(ФизическиеЛица) Экспорт
Если ТипЗнч(ФизическиеЛица) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
СписокФизическихЛиц = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ФизическиеЛица);
Иначе
СписокФизическихЛиц = ФизическиеЛица;
КонецЕсли;
ДокументОбъект = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(ДокументОбъект);
Возврат УчетНДФЛФормы.РегистрНалоговогоУчетаПоНДФЛ(ДокументОбъект, Модифицированность, СписокФизическихЛиц, Объект.ПериодРегистрации);
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОткрытьЗаявкуСотрудника(Команда)
ПоказатьЗначение(, Объект.ЗаявкаСотрудника);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьОтпускСовместителю(Команда)
Совместитель = Неопределено;
ОрганизацияСовместителя = Неопределено;
Если ЭтотОбъект.ДругиеСотрудникиФизическогоЛица.Количество() = 1 Тогда
ОрганизацияСовместителя = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Организация;
Совместитель = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Сотрудник;
КонецЕсли;
ОткрытьФормуНовогоОтпускаСовместителя(Совместитель, ОрганизацияСовместителя);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьОтпускБезОплатыСовместителю(Команда)
Совместитель = Неопределено;
ОрганизацияСовместителя = Неопределено;
Если ЭтотОбъект.ДругиеСотрудникиФизическогоЛица.Количество() = 1 Тогда
ОрганизацияСовместителя = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Организация;
Совместитель = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Сотрудник;
КонецЕсли;
ОткрытьФормуНовогоОтпускаБезОплатыСовместителя(Совместитель, ОрганизацияСовместителя);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьКомандировкуСовместителю(Команда)
Совместитель = Неопределено;
ОрганизацияСовместителя = Неопределено;
Если ЭтотОбъект.ДругиеСотрудникиФизическогоЛица.Количество() = 1 Тогда
ОрганизацияСовместителя = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Организация;
Совместитель = ЭтотОбъект.ДругиеСотрудникиФизическогоЛица[0].Сотрудник;
КонецЕсли;
ОткрытьФормуНовойКомандировкиСовместителя(Совместитель, ОрганизацияСовместителя);
КонецПроцедуры
&НаКлиенте
Процедура КорректировкаВыплатыПодробно(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыФормы.Вставить("МесяцНачисления", Объект.ПериодРегистрации);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ДанныеКорректировокВыплаты", ДанныеКорректировокВыплаты());
ПараметрыФормы.Вставить("СотрудникФизическоеЛицо", Объект.Сотрудник);
ОткрытьФорму("ОбщаяФорма.РедактированиеКорректировокВыплаты", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КомандаПровестиИЗакрыть(Команда) Экспорт
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ЗаписатьНаКлиенте(Истина, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура КомандаПровести(Команда)
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура КомандаЗаписать(Команда)
ПараметрыЗаписи = Новый Структура("РежимЗаписи", ?(Объект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Функция ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания()
ОписаниеДокумента = ОписаниеДокумента(ЭтаФорма);
ОбъектСтруктура = Новый Структура;
ОбъектСтруктура.Вставить("Ссылка", Объект.Ссылка);
ОбъектСтруктура.Вставить("Сотрудник", Объект.Сотрудник);
ОбъектСтруктура.Вставить("Организация", Объект.Организация);
ОбъектСтруктура.Вставить("ПериодРегистрации", Объект.ПериодРегистрации);
ОбъектСтруктура.Вставить("ДатаНачалаСобытия", Объект.ДатаНачалаСобытия);
ОбъектСтруктура.Вставить("ДенежноеСодержание", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.ДенежноеСодержание.Выгрузить()));
ОбъектСтруктура.Вставить("ДенежноеСодержаниеФактическиеНачисления", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.ДенежноеСодержаниеФактическиеНачисления.Выгрузить()));
ОбъектСтруктура.Вставить("КоэффициентыРаспределенияДенежногоСодержания", ОбщегоНазначения.ТаблицаЗначенийВМассив(Объект.КоэффициентыРаспределенияДенежногоСодержания.Выгрузить()));
ОбъектСтруктура.Вставить("ПериодРасчетаСохраняемогоСодержанияНачало", Объект.ПериодРасчетаСреднегоЗаработкаНачало);
ОбъектСтруктура.Вставить("ПериодРасчетаСохраняемогоСодержанияОкончание", Объект.ПериодРасчетаСреднегоЗаработкаОкончание);
ОбъектСтруктура.Вставить("ФиксПериодРасчетаСохраняемогоСодержания", Объект.ФиксПериодРасчетаСреднегоЗаработка);
ОбъектСтруктура.Вставить("СохраняемоеДенежноеСодержание", Объект.СохраняемоеДенежноеСодержание);
ОбъектСтруктура.Вставить("НазначенияРасчетаДенежногоСодержания", ЭтаФорма.НазначенияРасчетаДенежногоСодержания);
ОбъектСтруктура.Вставить("УникальныйИдентификатор", ЭтаФорма.УникальныйИдентификатор);
ОбъектСтруктура.Вставить("ПериодРасчета", Объект[ОписаниеДокумента.МесяцНачисленияИмя]);
Возврат ОбъектСтруктура;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазблокироватьФормуОбъекта(Команда)
БлокировкаИзмененияОбъектовКлиент.РазблокироватьФормуОбъекта(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура КомандаРассчитатьНачисленияНаСервере(ПерезаполнитьНачисления = Истина)
РассчитатьНачисленияНаСервере(Истина, ПерезаполнитьНачисления);
УстановитьСвойствоДокументРассчитан();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСреднийЗаработокЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования <> Неопределено Тогда
ПерезаполнятьСреднийЗаработок = Ложь;
СкорректированСреднийЗаработок = Истина;
ПеренестиДанныеУчетаСреднегоЗаработкаВДокумент(РезультатРедактирования);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьОтчетПоПроблемам(ЭлементИлиКоманда, НавигационнаяСсылка, СтандартнаяОбработка)
КонтрольВеденияУчетаКлиентБЗК.ОткрытьОтчетПоПроблемамОбъекта(ЭтотОбъект, Объект.Ссылка, СтандартнаяОбработка);
КонецПроцедуры
#Область ИсправлениеДокументов
&НаКлиенте
Процедура УстановитьПоляИсправленияНаКлиенте() Экспорт
УстановитьПоляИсправления(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПоляИсправления(Форма)
ИсправлениеДокументовЗарплатаКадрыКлиентСервер.УстановитьПоляИсправления(Форма);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура РаспределитьЗависимыеРезультаты(ПараметрыДляРаспределения) Экспорт
Если ПараметрыДляРаспределения.РаспределятьЗависимыеТаблицы Тогда
ОбновитьБухучетРезультатовРасчетаНаСервере(ПараметрыДляРаспределения);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СтруктураОписанияТаблицДляРаспределенияРезультата(Форма)
ОписанияТаблиц = Новый Структура;
ОписанияТаблиц.Вставить("Начисления", ОписаниеТаблицыНачислений(Форма.РегистрацияНачисленийДоступна));
ОписанияТаблиц.Вставить("НачисленияПерерасчет", ОписаниеТаблицыПерерасчетов(Форма.РегистрацияНачисленийДоступна));
ОписанияТаблиц.Вставить("Удержания", ОписаниеТаблицыУдержаний());
ОписанияТаблиц.Вставить("НДФЛ", ОписаниеТаблицыНДФЛ());
ОписанияТаблиц.Вставить("КорректировкиВыплаты", ОписаниеТаблицыКорректировкиВыплаты());
Возврат ОписанияТаблиц;
КонецФункции
&НаСервере
Процедура ОбновитьФормуПоВариантуРасчета()
РасчетЗарплатыРасширенныйФормы.ОбновитьФормуПоВариантуРасчетаСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
#Область ИнициализацияФормы
&НаСервере
Процедура ПриПолученииДанныхНаСервере(ТекущийОбъект)
РасчетДенежногоСодержанияРедактировался = РасчетДенежногоСодержанияРедактировался(ТекущийОбъект.ДенежноеСодержание);
ИспользоватьСтатьиФинансирования = ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата");
ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты = УчетНДФЛРасширенный.ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты(Объект.Организация, Объект.ПериодРегистрации);
НачатьИнициализациюФормы(ТекущийОбъект);
ЗарплатаКадрыРасширенный.ИзменитьРеквизитыФормы(ЭтаФорма);
ЗавершитьИнициализациюФормы(ТекущийОбъект);
ВариантУказанияБухучета = ?(Объект.БухучетУказываетсяРаспределением, 1, 0);
УстановитьВидимостьНастроекБухучета(ЭтаФорма);
ЗаполнитьПредставлениеРаспределенияБухучета();
ОтражениеЗарплатыВБухучетеРасширенный.УстановитьСписокВыборкаВариантУказанияБухучета(Элементы.ВариантУказанияБухучета.СписокВыбора);
ОтражениеЗарплатыВБухучетеРасширенный.УстановитьВидимостьВариантУказанияБухучета(ЭтаФорма);
УстановитьВидимостьРайонногоКоэфффициента();
РеквизитыКДобавлению.Очистить();
РеквизитыКУдалению.Очистить();
КонецПроцедуры
&НаСервере
Процедура НачатьИнициализациюФормы(ТекущийОбъект)
РасчетЗарплатыРасширенныйФормы.ПодготовитьФормуДляПредварительногоРасчетаНачислений(ЭтотОбъект);
РаботаВБюджетномУчреждении = ПолучитьФункциональнуюОпцию("РаботаВБюджетномУчреждении");
УстановитьДоступностьРегистрацииНачислений();
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
Модуль.ЗаполнитьРеквизитФормыНазначенияРасчетаДенежногоСодержания(ЭтаФорма);
КонецЕсли;
ПрочитатьПостоянныеКадровыеДанныеСотрудника();
ЗаполнитьОтсутствияПоДругимМестамРаботы();
УстановитьПривилегированныйРежим(Истина);
ДополнитьФорму(Истина);
КонецПроцедуры
&НаСервере
Процедура ЗавершитьИнициализациюФормы(ТекущийОбъект)
УстановитьПривилегированныйРежим(Истина);
ДополнитьФорму(Ложь);
ДополнитьФорму();
УчетРабочегоВремениРасширенныйФормы.ДобавитьУточнениеВидаВремени(ЭтаФорма, ВариантыСелектора(),
Перечисления.СостоянияСотрудника.Командировка,
Объект.ВидРасчета);
ЗаполнитьВидРасчета(Истина);
ЗаполнитьВидРасчетаДополнительнойОплаты(Истина);
ОбновитьФормуПоВариантуРасчета();
ЗаполнитьИнформациюЗаполненностиДанных();
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой");
УстановитьИспользованиеСреднечасовогоЗаработка();
ДанныеВРеквизиты();
УстановитьВидимостьПерерасчетов();
УстановитьВидимостьУдержаний();
УстановитьВидимостьРасчетныхПолей();
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
ОбновитьПерерасчетИтог(ЭтаФорма);
УстановитьТекущуюСтраницуПериодКомандировки();
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДате(ЭтаФорма, "Объект.ПериодРегистрации", "МесяцНачисленияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.Начисления, "ПериодДействия", "ПериодДействияСтрокой");
ЗарплатаКадрыКлиентСервер.ЗаполнитьМесяцПоДатеВТабличнойЧасти(Объект.НачисленияПерерасчет, "ПериодДействия", "ПериодДействияСтрокой");
РасчетЗарплатыРасширенныйФормы.ОбновитьФормуПоВариантуРасчетаСреднегоЗаработка(ЭтотОбъект);
УстановитьФункциональныеОпцииФормы();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
ПерезаполнятьСреднийЗаработок = Истина;
Если Объект.РасчетДенежногоСодержания
И ТекущийОбъект.ЭтоНовый() Тогда
ОбновитьРасчетДенежногоСодержания = Истина;
КонецЕсли;
УстановитьДоступностьДополнительнойОплаты();
УстановитьВидимостьСвойстваПеречислитьНалог();
УстановитьВидимостьСвойстваИсчислятьНалог();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(Ложь);
КонецПроцедуры
&НаСервере
Процедура ДополнитьФорму(ОтложенноеИзменение = Неопределено)
Если ОтложенноеИзменение = Неопределено Тогда
РасчетЗарплатыРасширенныйФормы.ДокументыНачисленийДополнитьФормуРезультатыРаспределения(ЭтаФорма, ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна));
ЗарплатаКадрыРасширенный.МногофункциональныеДокументыДобавитьЭлементыФормы(ЭтаФорма, НСтр("ru='Расчет утвердил'"), "РасчетчикГруппа", "ДокументРассчитан", "Рассчитал");
ЗарплатаКадры.КлючевыеРеквизитыЗаполненияФормыЗаполнитьПредупреждения(ЭтаФорма);
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.СамообслуживаниеСотрудников") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("СамообслуживаниеСотрудников");
Модуль.ГруппаЗаявкаСотрудникаДополнитьФорму(ЭтаФорма);
КонецЕсли;
Иначе
Если ОтложенноеИзменение Тогда
ДобавлятьЭлементыФормы = Ложь;
ДобавлятьРеквизитыФормы = Истина;
Иначе
ДобавлятьЭлементыФормы = Истина;
ДобавлятьРеквизитыФормы = Ложь;
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, Объект.Ссылка);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна), "Начисления", , РегистрацияНачисленийДоступна,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, Объект.Ссылка);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтаФорма, ОписаниеТаблицыПерерасчетовНулевыеСторно(), "Начисления", , РегистрацияНачисленийДоступна,, Ложь, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, Объект.Ссылка);
РасчетЗарплатыРасширенныйФормы.ДокументыВыполненияНачисленийДополнитьФорму(
ЭтаФорма, ОписаниеТаблицыУдержаний(), "Удержания", , Ложь,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, Объект.Ссылка);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ДокументыВыполненияНачисленийДополнитьФорму(ЭтаФорма, ОписаниеТаблицыСохраняемоеДенежноеСодержание(), "Начисления", , Ложь,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение, Объект.Ссылка);
КонецЕсли;
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаДополнитьФорму(
ЭтаФорма, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда(), ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
ИсправлениеДокументовЗарплатаКадры.ГруппаИсправлениеДополнитьФорму(
ЭтаФорма, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
РасчетЗарплатыРасширенныйФормы.ПорядокВыплатыЗарплатыДополнитьФорму(
ЭтаФорма,, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
Если НЕ Параметры.Ключ.Пустая() Тогда
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийПриЧтенииНаСервере(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени(), ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
КонецЕсли;
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийПриСозданииНаСервере(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени(), ЗначенияДляЗаполнения(), ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЦепочкиДокументов") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ЦепочкиДокументовФормы");
Модуль.ДополнитьФормуДокументаЭлементамиЗамещения(ЭтаФорма, ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция ПараметрыРедактированияСреднегоЗаработка()
ПараметрыРедактирования = УчетСреднегоЗаработкаКлиентСервер.ПараметрыРедактированияОбщегоСреднегоЗаработкаПоДокументу();
ПараметрыРедактирования.ДокументСсылка = Объект.Ссылка;
ПараметрыРедактирования.Сотрудник = Объект.Сотрудник;
ПараметрыРедактирования.Организация = Объект.Организация;
ПараметрыРедактирования.ДатаНачалаСобытия = Объект.ДатаНачалаСобытия;
ПараметрыРедактирования.Начисление = Объект.ВидРасчета;
ПараметрыРедактирования.НачалоПериодаРасчета = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ПараметрыРедактирования.ОкончаниеПериодаРасчета = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ПараметрыРедактирования.ЭтоСреднечасовойЗаработок = ЭтаФорма.ИспользуетсяСреднечасовойЗаработок;
ПараметрыРедактирования.ФиксПериодРасчета = Объект.ФиксПериодРасчетаСреднегоЗаработка;
УчетСреднегоЗаработка.ЗаполнитьТаблицыДанныхСреднегоЗаработкаПоДокументу(Объект, ПараметрыРедактирования);
Возврат ПараметрыРедактирования;
КонецФункции
&НаСервере
Процедура УстановитьФункциональныеОпцииФормы()
ПараметрыФО = Новый Структура("Организация, Период", Объект.Организация, НачалоДня(Объект.ПериодРегистрации));
УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФО);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция МассивОписанийТаблицФормы(ПравоНаЧтениеДокументаБезОграничений)
МассивОписанийТаблицФормы = Новый Структура;
МассивОписанийТаблицФормы.Вставить("НачисленияПерерасчет", ОписаниеТаблицыПерерасчетов(ПравоНаЧтениеДокументаБезОграничений));
МассивОписанийТаблицФормы.Вставить("Начисления", ОписаниеТаблицыНачислений(ПравоНаЧтениеДокументаБезОграничений));
Возврат МассивОписанийТаблицФормы
КонецФункции
&НаКлиенте
Процедура ПриИзмененииМесяцаНачисления()
ОбработатьИзменениеМесяцНачисленияНаСервере();
ПодключитьРасчетПослеРедактирования();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьИзменениеМесяцНачисленияНаСервере()
РасчетЗарплатыРасширенный.УстановитьПланируемуюДатуВыплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
УстановитьФункциональныеОпцииФормы();
УстановитьВидимостьУдержаний();
УстановитьСвойствоДокументРассчитан();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
УстановитьВидимостьСвойстваПеречислитьНалог();
УстановитьВидимостьСвойстваИсчислятьНалог();
КонецПроцедуры
&НаСервере
Процедура ОбновитьВариантРасчета()
УстановитьПривилегированныйРежим(Истина);
Объект.РасчетДенежногоСодержания = Ложь;
ЗарплатаКадрыРасширенный.УстановитьВариантРасчетаДокументаПоСреднемуЗаработку(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикОжиданияМесяцНачисленияПриИзменении()
ОбработатьИзменениеМесяцНачисленияНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаСервере
Функция УстановитьИнфонадписьВнутрисменнаяКомандировка()
ИнфонадписьВнутрисменнаяКомандировка = НСтр("ru = 'Установите флажок, если сотрудник был в командировке только в течение части рабочей смены.'");
КонецФункции
&НаСервере
Функция ОшибкаВводаПериодаСобытия()
Если Объект.ДатаНачала > Объект.ДатаОкончания
Или (Объект.ВнутрисменнаяКомандировка И Объект.ДатаНачала <> Объект.ДатаОкончания) Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура СотрудникПриИзмененииНаСервере()
ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей();
ОбновитьВариантРасчета();
ОбновитьФормуПоВариантуРасчета();
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийСотрудникПриИзменении(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени());
ПрочитатьПостоянныеКадровыеДанныеСотрудника();
ЗаполнитьОтсутствияПоДругимМестамРаботы();
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьИспользованиеСреднечасовогоЗаработка();
Объект.ДанныеОбИндексации.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ДенежноеСодержание.Очистить();
Объект.ДенежноеСодержаниеФактическиеНачисления.Очистить();
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
Объект.ПериодРасчетаСреднегоЗаработкаНачало = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = Неопределено;
Объект.СреднийЗаработок = Неопределено;
УстановитьПредупреждениеДокументНеРассчитан(ЭтаФорма);
ЗаполнитьПериодРасчетаСреднегоЗаработка();
КонецЕсли;
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()
ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей();
ЗаполнитьДанныеФормыПоОрганизации();
УстановитьФункциональныеОпцииФормы();
УстановитьВидимостьСвойстваПеречислитьНалог();
Если ИспользуетсяРасчетЗарплаты Тогда
Объект.ДанныеОбИндексации.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ДенежноеСодержание.Очистить();
Объект.ДенежноеСодержаниеФактическиеНачисления.Очистить();
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
Объект.ПериодРасчетаСреднегоЗаработкаНачало = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = Неопределено;
Объект.СреднийЗаработок = Неопределено;
УстановитьПредупреждениеДокументНеРассчитан(ЭтаФорма);
РасчетЗарплатыРасширенныйФормы.ОбновитьПлановыеДатыВыплатыПоОрганизации(ЭтотОбъект);
РасчетЗарплатыРасширенный.УстановитьПланируемуюДатуВыплаты(ЭтотОбъект, ОписаниеДокумента(ЭтотОбъект));
УстановитьВидимостьУдержаний();
РасчетЗарплатыРасширенныйФормы.ДополнитьДанныеФормыРаспределенияПоТерриториямУсловиямТруда(ЭтотОбъект, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда(), РегистрацияНачисленийДоступна);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВидРасчетаПриИзмененииНаСервере()
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийВидРасчетаПриИзменении(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени());
УчетРабочегоВремениРасширенныйФормы.НастроитьУточнениеВидаВремени(ЭтаФорма, Объект.ВидРасчета);
УстановитьИспользованиеСреднечасовогоЗаработка();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
УстановитьВидимостьСвойстваПеречислитьНалог();
УстановитьВидимостьСвойстваИсчислятьНалог();
УстановитьДополнительныеНачисленияНаСервере(Объект.ВидРасчета);
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
ЗаполнитьПериодРасчетаСреднегоЗаработка();
КонецПроцедуры
&НаСервере
Процедура ВнутрисменнаяКомандировкаПриИзмененииНаСервере()
УстановитьТекущуюСтраницуПериодКомандировки();
Если Объект.ВнутрисменнаяКомандировка Тогда
Объект.ОсвобождатьСтавку = Ложь;
Объект.ДополнительнаяОплата = Ложь;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЗаполнитьВидРасчета();
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийПризнакВнутрисменноеПриИзменении(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени());
Если Объект.ВнутрисменнаяКомандировка Тогда
УточнитьПризнакДлительнойКомандировки();
КонецЕсли;
УстановитьИспользованиеСреднечасовогоЗаработка();
РассчитатьСреднийЗаработок();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура ДатаНачалаПриИзмененииНаСервере()
Если ОшибкаВводаПериодаСобытия() Тогда
Объект.ДатаОкончания = Неопределено;
КонецЕсли;
ЗаполнитьОтсутствияПоДругимМестамРаботы();
Если ИспользуетсяРасчетЗарплаты Тогда
ДатаНачалаСобытияДоИзменения = Объект.ДатаНачалаСобытия;
Объект.ДатаНачалаСобытия = Объект.ДатаНачала;
ОбновитьВариантРасчета();
ОбновитьФормуПоВариантуРасчета();
Если НачалоМесяца(Объект.ДатаНачалаСобытия) <> НачалоМесяца(ДатаНачалаСобытияДоИзменения) Тогда
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
КонецЕсли;
ЗаполнитьПериодРасчетаСреднегоЗаработка();
УстановитьИспользованиеСреднечасовогоЗаработка();
КонецЕсли;
УточнитьПризнакДлительнойКомандировки();
УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ();
КонецПроцедуры
&НаСервере
Процедура ДатаОкончанияПриИзмененииНаСервере()
ЗаполнитьОтсутствияПоДругимМестамРаботы();
Если ОшибкаВводаПериодаСобытия() И ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
Объект.ДатаНачала = Объект.ДатаОкончания;
Если ИспользуетсяРасчетЗарплаты Тогда
ДатаНачалаСобытияДоИзменения = Объект.ДатаНачалаСобытия;
Объект.ДатаНачалаСобытия = Объект.ДатаНачала;
Если НачалоМесяца(Объект.ДатаНачалаСобытия) <> НачалоМесяца(ДатаНачалаСобытияДоИзменения) Тогда
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
КонецЕсли;
ЗаполнитьПериодРасчетаСреднегоЗаработка();
УстановитьИспользованиеСреднечасовогоЗаработка();
КонецЕсли;
КонецЕсли;
УточнитьПризнакДлительнойКомандировки();
КонецПроцедуры
&НаСервере
Процедура ДатаКомандировкиПриИзмененииНаСервере()
ЗаполнитьОтсутствияПоДругимМестамРаботы();
УстановитьПривилегированныйРежим(Истина);
УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийДатаВнутрисменногоОтклоненияПриИзменении(ЭтаФорма, ОписаниеДокументаОтклоненийУчетаВремени());
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервере
Процедура ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяцаПриИзмененииНаСервере()
УстановитьВидимостьСвойстваПеречислитьНалог();
ПересчитатьНДФЛ();
КонецПроцедуры
&НаСервере
Процедура РассчитатьНачисленияНаСервере(ВыводитьСообщения = Ложь, ПерезаполнитьНачисления = Истина)
НеПерезаполнятьПриРасчете = Ложь;
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ПерезаполнитьНачисления Тогда
ЗаполнитьВидРасчета();
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаНачалаСобытия;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = ИспользуетсяСреднечасовойЗаработок;
ЗаполнитьВидРасчетаДополнительнойОплаты();
КонецЕсли;
Документ = РеквизитФормыВЗначение("Объект");
Если Не Документ.ДокументГотовКРасчету(ВыводитьСообщения) Тогда
ОчиститьРассчитанныеДанные();
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
Возврат;
КонецЕсли;
ПерезаполнитьНачисленияСотрудника( , , ПерезаполнитьНачисления, ВыводитьСообщения);
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьНачисленияСотрудника(Сотрудник = Неопределено, СохранятьИсправления = Истина, ПерезаполнитьНачисления = Истина, ВыводитьСообщения = Ложь) Экспорт
Документ = РеквизитФормыВЗначение("Объект");
РеквизитыВДанные(Документ);
ПараметрыРасчета = Документ.ПараметрыРасчета();
ПараметрыРасчета.ПерезаполнитьНачисления = ПерезаполнитьНачисления;
ПараметрыРасчета.СохранятьИсправления = СохранятьИсправления;
ПараметрыРасчета.ОбновитьДанныеДляРасчетаСреднего = ПерезаполнятьСреднийЗаработок;
ПараметрыРасчета.ОбновитьРасчетДенежногоСодержания = ОбновитьРасчетДенежногоСодержания;
ПараметрыРасчета.СкорректированСреднийЗаработок = СкорректированСреднийЗаработок;
ПараметрыРасчета.ЗаполнениеВыполнено = ЗаполнениеВыполнено;
Документ.Рассчитать(ПараметрыРасчета);
ЗначениеВРеквизитФормы(Документ, "Объект");
ДанныеВРеквизиты();
Если ПараметрыРасчета.ЗаполнениеВыполнено Тогда
ЗаполнениеВыполнено = ПараметрыРасчета.ЗаполнениеВыполнено;
КонецЕсли;
ОбновитьПерерасчетИтог(ЭтаФорма);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводНачисленийЗаполнитьВторичныеДанныеПоказателей(ЭтаФорма, МассивОписанийТаблицФормы);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПредставлениеРаспределенияПоТерриториямУсловиямТруда(ЭтаФорма, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
УстановитьВидимостьПерерасчетов();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидРасчета(ПервичнаяИнициализацияФормы = Ложь)
УстановитьПривилегированныйРежим(Истина);
ДопПараметры = Документы.Командировка.ДополнительныеПараметрыВыбораНачислений(Объект, "ВидРасчета");
УчетРабочегоВремениРасширенныйФормы.ДобавитьУточнениеВремениВОтборНачислений(ДопПараметры, ЭтаФорма);
ВидРасчетаИзменен = ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчета", ДопПараметры, ПервичнаяИнициализацияФормы);
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВОбъекте(Объект, "ВидРасчетаДолиРайонногоКоэффициента", , Ложь);
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВОбъекте(Объект, "ВидРасчетаДолиСевернойНадбавки", , Ложь);
Если ВидРасчетаИзменен Тогда
ВидРасчетаПриИзмененииНаСервере();
Иначе
УчетРабочегоВремениРасширенныйФормы.НастроитьУточнениеВидаВремени(ЭтаФорма, Объект.ВидРасчета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьРассчитанныеДанныеНаКлиенте()
ОчиститьРассчитанныеДанные();
КонецПроцедуры
&НаСервере
Процедура ОчиститьРассчитанныеДанные(ПерезаполнитьНачисления = Истина)
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Документы.Командировка.ОчиститьРассчитанныеДанные(Объект, ПерезаполнитьНачисления);
ОбновитьНачисленоУдержаноИтог(ЭтотОбъект);
ОбновитьПерерасчетИтог(ЭтотОбъект);
КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСотрудника(Сотрудник, ОписаниеТаблицы) Экспорт
РассчитатьДанныеФормы(Сотрудник, ОписаниеТаблицы);
КонецПроцедуры
&НаСервере
Процедура РассчитатьДанныеФормы(Сотрудники, ОписаниеТаблицы = Неопределено)
УстановитьПривилегированныйРежим(Истина);
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьИсточникиИзмененийМенеджераРасчета(МенеджерРасчета, ИзмененныеДанные);
ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.РассчитатьЗарплату();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
УстановитьПривилегированныйРежим(Ложь);
ОбновитьПерерасчетИтог(ЭтаФорма);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводНачисленийЗаполнитьВторичныеДанныеПоказателей(ЭтаФорма, МассивОписанийТаблицФормы);
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПредставлениеРаспределенияПоТерриториямУсловиямТруда(ЭтаФорма, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
УстановитьВидимостьПерерасчетов();
КонецПроцедуры
&НаСервере
Процедура ПересчитатьНДФЛ()
УстановитьПривилегированныйРежим(Истина);
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
Если ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца Тогда
Объект.НДФЛ.Очистить();
Объект.КорректировкиВыплаты.Очистить();
Объект.ПримененныеВычетыНаДетейИИмущественные.Очистить();
КонецЕсли;
ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.ПересчитатьНДФЛ();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
УстановитьПривилегированныйРежим(Ложь);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПеренестиДанныеУчетаСреднегоЗаработкаВДокумент(РезультатРедактирования)
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ДанныеОбИндексации.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
УчетСреднегоЗаработка.ЗаполнитьДанныеУчетаОбщегоСреднегоЗаработка(
Объект.СреднийЗаработокОбщий,
Объект.ОтработанноеВремяДляСреднегоОбщий,
Объект.ДанныеОбИндексации,
РезультатРедактирования,
Модифицированность);
Объект.ПериодРасчетаСреднегоЗаработкаНачало = РезультатРедактирования.НачалоПериодаРасчета;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = РезультатРедактирования.ОкончаниеПериодаРасчета;
Объект.ФиксПериодРасчетаСреднегоЗаработка = РезультатРедактирования.ФиксПериодРасчета;
Объект.СреднийЗаработок = РезультатРедактирования.СреднийЗаработок;
Если РезультатРедактирования.Свойство("ЧастичнаяИндексация") Тогда
Объект.СреднийЗаработокИндексируемый = РезультатРедактирования.ЧастичнаяИндексация.ИндексируемыйЗаработок;
Объект.СреднийЗаработокНеиндексируемый = РезультатРедактирования.ЧастичнаяИндексация.НеиндексируемыйЗаработок;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата") Тогда
ЗаполнитьТаблицуКоэффициентыРаспределенияСреднегоЗаработка();
КонецЕсли;
ЗаполнитьИнформациюЗаполненностиДанных();
Если РасчетЗарплатыРасширенныйКлиентСервер.ФормаДокументаГотоваДляРасчетаЗарплаты(ЭтаФорма, ОписаниеДокумента(ЭтаФорма), Ложь) Тогда
РассчитатьНачисленияНаСервере();
Иначе
ОчиститьРассчитанныеДанные();
ПерезаполнятьСреднийЗаработок = Истина;
КонецЕсли;
УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура РассчитатьСреднийЗаработок()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Если Объект.РасчетДенежногоСодержания Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
Модуль.РассчитатьСохраняемоеДенежноеСодержаниеДокумента(ЭтаФорма, ОписаниеДокумента(ЭтаФорма));
КонецЕсли;
Иначе
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = Объект.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = Объект.ДатаНачалаСобытия;
ДополнительныеПараметры.НачалоПериода = Объект.ПериодРасчетаСреднегоЗаработкаНачало;
ДополнительныеПараметры.ОкончаниеПериода = Объект.ПериодРасчетаСреднегоЗаработкаОкончание;
ДополнительныеПараметры.ПоЧасам = ИспользуетсяСреднечасовойЗаработок;
ЗначенияПоказателей = УчетСреднегоЗаработкаКлиентСервер.ЗначенияПоказателейСреднегоЗаработкаОбщего(Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, ДополнительныеПараметры);
Объект.СреднийЗаработок = ЗначенияПоказателей.СреднийЗаработокОбщий;
Если ПолучитьФункциональнуюОпцию("ИндексироватьСреднийЗаработокЧастично") Тогда
Объект.СреднийЗаработокИндексируемый = ЗначенияПоказателей.СреднийЗаработокИндексируемый;
Объект.СреднийЗаработокНеиндексируемый = ЗначенияПоказателей.СреднийЗаработокНеиндексируемый;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата") Тогда
ЗаполнитьТаблицуКоэффициентыРаспределенияСреднегоЗаработка();
КонецЕсли;
КонецЕсли;
ЗаполнениеВыполнено = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТаблицуКоэффициентыРаспределенияСреднегоЗаработка()
ТаблицаКоэффициентов = УчетСреднегоЗаработка.КоэффициентыРаспределенияСреднегоЗаработкаДокумента(Объект, ОписаниеДокумента(ЭтаФорма))[Перечисления.СпособыРасчетаНачислений.ПустаяСсылка()];
Объект.КоэффициентыРаспределенияСреднегоЗаработка.Загрузить(ТаблицаКоэффициентов);
КонецПроцедуры
&НаСервере
Процедура ДанныеВРеквизиты()
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьПривилегированныйРежим(Истина);
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(ОписаниеТаблицыУдержаний());
ЗарплатаКадрыРасширенный.ВводНачисленийДанныеВРеквизит(ЭтаФорма, ОписанияТаблиц, 2);
МассивОписанийТаблицФормы = МассивОписанийТаблицФормы(РегистрацияНачисленийДоступна);
ЗарплатаКадрыРасширенный.ПериодНачисленияЗаполнитьИспользованиеПериода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ЗаполнитьДоступностьМестаПолученияДохода(ЭтаФорма, МассивОписанийТаблицФормы);
ЗарплатаКадрыРасширенный.ВводРаспределенияРезультатовРасчетаДанныеВРеквизит(ЭтаФорма, ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна));
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ВводНачисленийДанныеВРеквизит(ЭтаФорма, ОписаниеТаблицыСохраняемоеДенежноеСодержание(), 2);
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ОбъектПриЧтенииНаСервереПредставлениеРаспределения(ЭтаФорма, ОписаниеДокумента(ЭтаФорма));
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаДанныеВРеквизит(ЭтаФорма, Объект.Организация, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда());
КонецЕсли;
ИсправлениеДокументовЗарплатаКадры.ПрочитатьРеквизитыИсправления(ЭтаФорма);
УстановитьПоляИсправления(ЭтаФорма);
ПризнакДлительнойКомандировкиВРеквизитФормы();
ЗаполнитьЗначениеКорректировкиВыплаты();
УдержатьНалогПриВыплатеЗарплатыДанныеВРеквизиты();
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтображениеРеквизитовПервичногоДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура РеквизитыВДанные(ТекущийОбъект)
Если ИспользуетсяРасчетЗарплаты Тогда
ТекущийОбъект.Показатели.Очистить();
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
ОписанияТаблиц.Добавить(ОписаниеТаблицыУдержаний());
ОписанияТаблиц.Добавить(ОписаниеТаблицыПерерасчетовНулевыеСторно());
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ДополнитьМассивОписанийТаблицФормыНачисленияЗарплаты(ОписанияТаблиц, ОписаниеТаблицыСохраняемоеДенежноеСодержание());
КонецЕсли;
ОписанияТаблицДляРаспределенияРезультата = ОписанияТаблицДляРаспределенияРезультата(РегистрацияНачисленийДоступна);
ОписанияТаблицДляРаспределенияРезультата.Добавить(ОписаниеТаблицыПерерасчетовНулевыеСторно());
ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда = ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда();
ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда.Добавить(ОписаниеТаблицыПерерасчетовНулевыеСторно());
ЗарплатаКадрыРасширенный.ВводНачисленийРеквизитВДанные(ЭтаФорма, ТекущийОбъект, ОписанияТаблиц, 2);
ЗарплатаКадрыРасширенный.ВводРаспределенияРезультатовРасчетаРеквизитВДанные(ЭтаФорма, ТекущийОбъект, ОписанияТаблицДляРаспределенияРезультата);
РасчетЗарплатыРасширенныйФормы.РаспределениеПоТерриториямУсловиямТрудаРеквизитВДанные(ЭтаФорма, ТекущийОбъект, ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда);
КонецЕсли;
РеквизитФормыВПризнакДлительнойКомандировки(ТекущийОбъект);
КорректировкиВыплатыВДанные(ТекущийОбъект);
УдержатьНалогПриВыплатеЗарплатыРеквизитыВДанные(ТекущийОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыСохраняемоеДенежноеСодержание()
Возврат КадровыйУчетРасширенныйКлиентСервер.ОписаниеТаблицыСохраняемоеДенежноеСодержание();
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыНачислений(ПравоНаЧтениеДокументаБезОграничений)
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ИмяТаблицы = "Начисления";
ОписаниеТаблицы.ПутьКДанным = "Объект.Начисления";
ОписаниеТаблицы.ОтображатьПоляОписанияВремени = ПравоНаЧтениеДокументаБезОграничений;
ОписаниеТаблицы.ИмяПоляДляВставкиРаспределенияРезультатов = "НачисленияРезультат";
ОписаниеТаблицы.ВставлятьПослеПоля = Истина;
ОписаниеТаблицы.ОтображатьПоляРаспределенияРезультатов = ПравоНаЧтениеДокументаБезОграничений;
ОписаниеТаблицы.РаспределениеРезультатовЗависимыеТаблицы = "Начисления,Удержания,НДФЛ,КорректировкиВыплаты";
ОписаниеТаблицы.ИмяРеквизитаПериод = "ПериодРегистрации";
ОписаниеТаблицы.СодержитПолеКодВычета = Истина;
ОписаниеТаблицы.СодержитПолеМестоПолученияДохода = Истина;
ОписаниеТаблицы.СодержитПолеИсходныйДокумент = Истина;
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыПерерасчетов(ПравоНаЧтениеДокументаБезОграничений)
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ИмяТаблицы = "НачисленияПерерасчет";
ОписаниеТаблицы.ПутьКДанным = "Объект.НачисленияПерерасчет";
ОписаниеТаблицы.ИмяПоляДляВставкиПоказателей = "ДатыНачисленияПерерасчет";
ОписаниеТаблицы.НомерТаблицы = 1;
ОписаниеТаблицы.ОтображатьПоляОписанияВремени = ПравоНаЧтениеДокументаБезОграничений;
ОписаниеТаблицы.ОтображатьПоляНормыВремени = ПравоНаЧтениеДокументаБезОграничений;
ОписаниеТаблицы.ЭтоПерерасчеты = Истина;
ОписаниеТаблицы.ИмяРеквизитаФиксСторно = "ФиксСторно";
ОписаниеТаблицы.ИмяПоляДляВставкиРаспределенияРезультатов = "НачисленияПерерасчетРезультат";
ОписаниеТаблицы.ВставлятьПослеПоля = Истина;
ОписаниеТаблицы.ОтображатьПоляРаспределенияРезультатов = ПравоНаЧтениеДокументаБезОграничений;
ОписаниеТаблицы.РаспределениеРезультатовЗависимыеТаблицы = "НачисленияПерерасчет,Удержания,НДФЛ,КорректировкиВыплаты";
ОписаниеТаблицы.ИмяРеквизитаПериод = "ПериодРегистрации";
ОписаниеТаблицы.ИмяРеквизитаДокументОснование = "ДокументОснование";
ОписаниеТаблицы.СодержитПолеМестоПолученияДохода = Истина;
ОписаниеТаблицы.СодержитРегистраторРазовогоНачисления = Истина;
ОписаниеТаблицы.СодержитПолеИсходныйДокумент = Истина;
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыПерерасчетовНулевыеСторно()
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ИмяТаблицы = "НачисленияПерерасчетНулевыеСторно";
ОписаниеТаблицы.ПутьКДанным = "Объект.НачисленияПерерасчетНулевыеСторно";
ОписаниеТаблицы.НомерТаблицы = 1.1;
ОписаниеТаблицы.ЭтоПерерасчеты = Истина;
ОписаниеТаблицы.ИмяРеквизитаФиксСторно = "ФиксСторно";
ОписаниеТаблицы.ИмяРеквизитаПериод = "ПериодРегистрации";
ОписаниеТаблицы.ИмяРеквизитаДокументОснование = "ДокументОснование";
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыУдержаний()
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ИмяТаблицы = "Удержания";
ОписаниеТаблицы.ПутьКДанным = "Объект.Удержания";
ОписаниеТаблицы.ИмяРеквизитаВидРасчета = "Удержание";
ОписаниеТаблицы.ИмяРеквизитаСотрудник = "ФизическоеЛицо";
ОписаниеТаблицы.НомерТаблицы = 2;
ОписаниеТаблицы.ПутьКДаннымРаспределениеРезультатов = "Объект.РаспределениеРезультатовУдержаний";
ОписаниеТаблицы.ОтображатьПоляРаспределенияРезультатов = Ложь;
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыНДФЛ()
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ИмяТаблицы = "НДФЛ";
ОписаниеТаблицы.ПутьКДанным = "Объект.НДФЛ";
ОписаниеТаблицы.ИмяПоляРезультат = "Налог";
ОписаниеТаблицы.НомерТаблицы = 3;
ОписаниеТаблицы.СодержитПолеВидРасчета = Ложь;
ОписаниеТаблицы.СодержитПолеСотрудник = Истина;
ОписаниеТаблицы.ИмяРеквизитаСотрудник = "ФизическоеЛицо";
ОписаниеТаблицы.ПутьКДаннымРаспределениеРезультатов = "Объект.РаспределениеРезультатовУдержаний";
ОписаниеТаблицы.ИмяРеквизитаИдентификаторСтроки = "ИдентификаторСтрокиНДФЛ";
ОписаниеТаблицы.ОтображатьПоляРаспределенияРезультатов = Ложь;
ОписаниеТаблицы.ОтменятьВсеИсправления = Истина;
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеТаблицыКорректировкиВыплаты()
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыКорректировкиВыплаты();
Возврат ОписаниеТаблицы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОписанияТаблицДляРаспределенияРезультата(ПравоНаЧтениеДокументаБезОграничений)
ОписанияТаблиц = Новый Массив;
ОписанияТаблиц.Добавить(ОписаниеТаблицыНачислений(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(ОписаниеТаблицыПерерасчетов(ПравоНаЧтениеДокументаБезОграничений));
ОписанияТаблиц.Добавить(ОписаниеТаблицыУдержаний());
ОписанияТаблиц.Добавить(ОписаниеТаблицыНДФЛ());
ОписанияТаблиц.Добавить(ОписаниеТаблицыКорректировкиВыплаты());
Возврат ОписанияТаблиц;
КонецФункции
&НаКлиенте
Процедура ВыполнитьКомандуРедактированияРезультатовРаспределенияНачисленийИУдержаний(ОписаниеТаблицы, Элемент, ВыбраннаяСтрока, Поле)
Если СтрНайти(Поле.Имя, "КомандаРедактированияРаспределения") = 0 Тогда
Возврат;
КонецЕсли;
ЗарплатаКадрыРасширенныйКлиент.ОткрытьФормуРедактированияРезультатовРаспределенияПоИсточникамФинансирования(ЭтаФорма, ОписаниеТаблицы, ВыбраннаяСтрока, Объект.ПериодРегистрации);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеДокументаОтклоненийУчетаВремени()
ОписаниеДокумента = УчетРабочегоВремениРасширенныйКлиентСервер.ОписаниеДокументаОтклонения();
ОписаниеДокумента.СотрудникПутьКДанным = "Объект.Сотрудник";
ОписаниеДокумента.ЗамещаемыйВидВремениПутьКДанным = "Объект.ВидВремениЗамещаемый";
ОписаниеДокумента.ПредставлениеВидаВремениПутьКДанным = "ВидВремениЗамещаемыйПредставление";
ОписаниеДокумента.ПериодРегистрацииПутьКДанным = "Объект.ПериодРегистрации";
ОписаниеДокумента.ДатаНачалаСобытияПутьКДанным = "Объект.ДатаНачалаСобытия";
ОписаниеДокумента.ДатаНачалаПериодаОтклоненияПутьКДанным = "Объект.ДатаНачала";
ОписаниеДокумента.ДатаОкончанияПериодаОтклоненияПутьКДанным = "Объект.ДатаОкончания";
ОписаниеДокумента.ВидРасчетаПутьКДанным = "Объект.ВидРасчета";
ОписаниеДокумента.ДатаВнутрисменногоОтклоненияПутьКДанным = "Объект.ДатаКомандировки";
ОписаниеДокумента.ПризнакЧасовоеОтклонениеПутьКДанным = "Объект.ВнутрисменнаяКомандировка";
ОписаниеДокумента.ИмяЭлементаЗамещаемыйВидВремени = "ВидВремениЗамещаемыйПредставление";
ОписаниеДокумента.ИмяЭлементаВидРасчета = "ВидРасчета";
ОписаниеДокумента.СотрудникВШапкеДокумента = Истина;
ОписаниеДокумента.ЗаполнитьПериодДокументаПоУмолчанию = Ложь;
ОписаниеДокумента.СменаПутьКДанным = "Объект.Смена";
ОписаниеДокумента.ПереходящаяЧастьПредыдущейСменыПутьКДанным = "Объект.ПереходящаяЧастьПредыдущейСмены";
ОписаниеДокумента.ПереходящаяЧастьТекущейСменыПутьКДанным = "Объект.ПереходящаяЧастьТекущейСмены";
Возврат ОписаниеДокумента;
КонецФункции
&НаСервере
Функция ПолучитьКонтролируемыеПоля() Экспорт
НачисленияФиксРасчет = Новый Массив;
НачисленияФиксРасчет.Добавить("Результат");
НачисленияФиксРасчетВремени = Новый Массив;
НачисленияФиксРасчетВремени.Добавить("ОплаченоДней");
НачисленияФиксРасчетВремени.Добавить("ОплаченоЧасов");
НачисленияФиксРасчетВремени.Добавить("НормаДней");
НачисленияФиксРасчетВремени.Добавить("НормаЧасов");
НачисленияФиксСтрока = Новый Массив;
НачисленияФиксСтрока.Добавить("Сотрудник");
НачисленияФиксСтрока.Добавить("Подразделение");
НачисленияФиксСтрока.Добавить("Начисление");
НачисленияФиксСтрока.Добавить("ДатаНачала");
НачисленияФиксСтрока.Добавить("ДатаОкончания");
НачисленияФиксЗаполнение = Новый Массив;
НачисленияФиксЗаполнение.Добавить("МестоПолученияДохода");
Возврат Новый Структура("Начисления, НачисленияПерерасчет, НДФЛ",
Новый Структура("ФиксРасчет, ФиксЗаполнение, ФиксСтрока, ФиксРасчетВремени",
НачисленияФиксРасчет,
НачисленияФиксЗаполнение,
НачисленияФиксСтрока,
НачисленияФиксРасчетВремени),
Новый Структура("ФиксРасчет, ФиксЗаполнение, ФиксСтрока, ФиксРасчетВремени",
НачисленияФиксРасчет,
НачисленияФиксЗаполнение,
НачисленияФиксСтрока,
НачисленияФиксРасчетВремени),
УчетНДФЛРасширенный.КонтролируемыеПоляДляФиксацииРезультатов()
);
КонецФункции
&НаКлиенте
Функция ПолучитьСтарыеЗначенияКонтролируемыхПолей() Экспорт
Возврат СтарыеЗначенияКонтролируемыхПолей;
КонецФункции
&НаКлиенте
Процедура ДополнитьСтроку(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей) Экспорт
ДополнитьСтрокуНаСервере(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей);
КонецПроцедуры
&НаСервере
Процедура ДополнитьСтрокуНаСервере(ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей)
РасчетЗарплатыРасширенныйФормы.ДополнитьСтрокуРасчета(ЭтаФорма, ОписаниеДокумента(ЭтаФорма), ИдентификаторСтроки, ОписаниеТаблицы, ЗаполнятьСведенияСотрудников, ЗаполнятьЗначенияПоказателей);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеДокумента(Форма)
Описание = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеРасчетногоДокумента();
Описание.НачисленияИмя = "Начисления";
Описание.НачисленияПерерасчетИмя = "НачисленияПерерасчет";
Описание.УдержанияИмя = "Удержания";
Описание.НДФЛИмя = "НДФЛ";
Описание.КорректировкиВыплатыИмя = "КорректировкиВыплаты";
Описание.ПримененныеВычетыИмя = "ПримененныеВычетыНаДетейИИмущественные";
Описание.МесяцНачисленияИмя = "ПериодРегистрации";
Описание.ИменаПолейНачисления = "ВидРасчета,НачисленияНачисление,ВидРасчетаДополнительнойОплаты";
Описание.РегистрацияНачисленийДоступна = Форма.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений;
Описание.ЕстьОплатаПоСреднему = Истина;
Описание.ЭтоСреднечасовойЗаработок = Форма.ИспользуетсяСреднечасовойЗаработок;
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Месяц", "МесяцНачисленияСтрокой"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Сотрудник", "Объект.Сотрудник"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("ВидРасчета", "Объект.ВидРасчета"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("ДатаНачала", "Объект.ДатаНачала"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("ДатаОкончания", "Объект.ДатаОкончания"));
Описание.ПроверяемыеПериоды.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеПроверяемогоПериода("Дата начала", "Объект.ДатаНачала", "ДатаОкончания", "Объект.ДатаОкончания"));
Если Форма.Объект.ДополнительнаяОплата Тогда
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Дополнительная оплата с", "Объект.ДатаНачалаДоплаты"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Дополнительная оплата по", "Объект.ДатаОкончанияДоплаты"));
Описание.ПроверяемыеПериоды.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеПроверяемогоПериода("Дополнительная оплата с", "Объект.ДатаНачалаДоплаты", "Дополнительная оплата по", "Объект.ДатаОкончанияДоплаты"));
КонецЕсли;
Описание.ОписанияТаблицДляРаспределенияРезультата = СтруктураОписанияТаблицДляРаспределенияРезультата(Форма);
Возврат Описание;
КонецФункции
&НаСервере
Процедура ЗаполнитьПериодРасчетаСреднегоЗаработка(ВыводитьСообщения = Истина)
Если Не ИспользуетсяРасчетЗарплаты Или Объект.ФиксПериодРасчетаСреднегоЗаработка Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ДатаНачалаСобытия)
Или Не ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Возврат;
КонецЕсли;
ПериодРасчетаСреднего = УчетСреднегоЗаработка.ПериодРасчетаОбщегоСреднегоЗаработкаСотрудника(Объект.ДатаНачалаСобытия, Объект.Сотрудник, Объект.ВидРасчета, ВыводитьСообщения);
Если НачалоМесяца(Объект.ПериодРасчетаСреднегоЗаработкаНачало) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаНачала)
Или НачалоМесяца(Объект.ПериодРасчетаСреднегоЗаработкаОкончание) <> НачалоМесяца(ПериодРасчетаСреднего.ДатаОкончания) Тогда
Объект.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднего.ДатаНачала;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = ПериодРасчетаСреднего.ДатаОкончания;
ОбновитьДанныеДляРасчетаСохраняемогоЗаработка();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьИспользованиеСреднечасовогоЗаработка()
ИспользуетсяСреднечасовойЗаработок = Ложь;
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Если Объект.ВнутрисменнаяКомандировка Тогда
ИспользуетсяСреднечасовойЗаработок = Истина;
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если УчетРабочегоВремениРасширенный.СотрудникуПрименяетсяСуммированныйУчетРабочегоВремени(Объект.Сотрудник, Объект.ДатаНачалаСобытия) Тогда
ИспользуетсяСреднечасовойЗаработок = Истина;
Возврат;
КонецЕсли;
Если УчетСреднегоЗаработка.НачислениеИспользуетСреднечасовойЗаработок(Объект.ВидРасчета) Тогда
ИспользуетсяСреднечасовойЗаработок = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИнформациюЗаполненностиДанных()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Если Объект.РасчетДенежногоСодержания Тогда
ЗаполнитьИнформациюЗаполненностиДанныхРасчетаДенежногоСодержания(ЭтаФорма);
Иначе
СтруктураИнфонадписи = УчетСреднегоЗаработка.ИнформацияОЗаполненностиДанныхСреднегоЗаработка(
Объект.Ссылка,
ЗаполнениеВыполнено,
Объект.Сотрудник,
Объект.ДатаНачалаСобытия,
Объект.ПериодРасчетаСреднегоЗаработкаНачало,
Объект.ПериодРасчетаСреднегоЗаработкаОкончание,
Объект.СреднийЗаработокОбщий,
Объект.ОтработанноеВремяДляСреднегоОбщий
);
ЗаполненностьДанныхИнформационныйТекст = СтруктураИнфонадписи.Текст;
ЗаполненностьДанныхКартинка = СтруктураИнфонадписи.Картинка;
ОбновитьИнформациюЗаполненностиДанных = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПерерасчетов()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ПерерасчетыДоступны = ИсправлениеДокументовРасчетЗарплатыКлиентСервер.ПерерасчетыДоступны(ЭтаФорма);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НачисленияПерерасчет", "Видимость", ПерерасчетыДоступны);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПерерасчетГруппа", "Видимость", ПерерасчетыДоступны);
ИсправлениеДокументовРасчетЗарплатыКлиентСервер.УстановитьДоначислениеПриИсправлении(ЭтаФорма, ПерерасчетыДоступны);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьУдержаний()
УдержанияДоступны = УдержанияДоступны();
Элементы.УдержаноГруппа.Видимость = УдержанияДоступны;
РасчетЗарплатыРасширенныйФормы.УстановитьДоступностьКорректировкиВыплаты(
ЭтаФорма, УдержанияДоступны, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
КонецПроцедуры
&НаСервере
Функция УдержанияДоступны()
Если Не ИспользуетсяРасчетЗарплаты Тогда
Возврат Ложь;
Иначе
Возврат ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты, Объект.ПланируемаяДатаВыплаты);
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ЭтоМежрасчетнаяВыплата(ПорядокВыплаты, ПланируемаяДатаВыплаты)
Возврат Документы.Командировка.ЭтоМежрасчетнаяВыплата(ПорядокВыплаты, ПланируемаяДатаВыплаты);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьНачисленоУдержаноИтог(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Объект = Форма.Объект;
Форма.НачисленоИтог = Объект.Начисления.Итог("Результат");
Форма.НДФЛ = УчетНДФЛКлиентСервер.ИтоговаяСуммаНДФЛпоДокументу(Объект, "Налог");
Форма.ПрочиеУдержания = Объект.Удержания.Итог("Результат");
Форма.УдержаноИтог = Форма.НДФЛ + Форма.ПрочиеУдержания;
Форма.КорректировкаВыплаты = Объект.КорректировкиВыплаты.Итог("КорректировкаВыплаты");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПерерасчетИтог(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
Форма.ПерерасчетИтог = Форма.Объект.НачисленияПерерасчет.Итог("Результат");
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСреднего()
УстановитьПривилегированныйРежим(Истина);
УчетСреднегоЗаработка.ОбновитьДанныеОбщегоСреднегоЗаработка(
Новый Структура("ДанныеОНачислениях, ДанныеОВремени, ДанныеОбИндексации",
Объект.СреднийЗаработокОбщий, Объект.ОтработанноеВремяДляСреднегоОбщий, Объект.ДанныеОбИндексации),
Объект.ДатаНачалаСобытия,
Объект.ПериодРасчетаСреднегоЗаработкаНачало,
Объект.ПериодРасчетаСреднегоЗаработкаОкончание,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник), ,
Объект.Ссылка);
ЗаполнитьИнформациюЗаполненностиДанных();
РассчитатьСреднийЗаработок();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПредупреждениеДокументНеРассчитан(Форма)
Форма.ЗаполненностьДанныхИнформационныйТекст = УчетСреднегоЗаработкаКлиентСервер.ТекстПредупрежденияДокументНеРассчитан();
Форма.ЗаполненностьДанныхКартинка = БиблиотекаКартинок.Предупреждение;
Форма.ОбновитьИнформациюЗаполненностиДанных = Истина;
КонецПроцедуры
&НаСервере
Процедура УстановитьТекущуюСтраницуПериодКомандировки()
Если Объект.ВнутрисменнаяКомандировка Тогда
Элементы.ПериодКомандировкиСтраницы.ТекущаяСтраница = Элементы.ВнутрисменнаяКомандировкаСтраница;
Иначе
Элементы.ПериодКомандировкиСтраницы.ТекущаяСтраница = Элементы.ЦелодневнаяКомандировкаСтраница;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ТекстСообщенияНеЗаполненВидРасчета() Экспорт
Возврат Документы.Командировка.ТекстСообщенияНеЗаполненВидРасчета(Объект.ВнутрисменнаяКомандировка);
КонецФункции
&НаСервере
Функция ЗначенияДляЗаполнения()
Возврат Новый Структура("Организация, Ответственный, Месяц",
"Объект.Организация",
"Объект.Ответственный",
"Объект.ПериодРегистрации");
КонецФункции
&НаСервереБезКонтекста
Функция СписокВыбораЗамещаемыхВидовВремен(ДанныеФормы)
УстановитьПривилегированныйРежим(Истина);
Возврат УчетРабочегоВремениРасширенныйФормы.ДокументыОтклоненийСписокВыбораЗамещаемогоВремени(ДанныеФормы);
КонецФункции
&НаСервере
Процедура ОбновитьДанныеНДФЛНаСервере(АдресВременногоХранилища)
Параметр = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
Объект.НДФЛ.Загрузить(Параметр.НДФЛ);
Объект.ПримененныеВычетыНаДетейИИмущественные.Загрузить(Параметр.ПримененныеВычетыНаДетейИИмущественные);
ИзмененныеДанные.Загрузить(Параметр.ИзмененныеДанные);
Если ИзмененныеДанные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
РассчитатьДанныеФормы(Объект.Сотрудник, ОписаниеТаблицыНДФЛ());
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеУдержанийНаСервере(АдресВременногоХранилища)
Параметр = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
Объект.Удержания.Загрузить(Параметр.Удержания.Выгрузить());
ИзмененныеДанные.Загрузить(Параметр.ИзмененныеДанные.Выгрузить());
Если ИзмененныеДанные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
РассчитатьДанныеФормы(Объект.Сотрудник, ОписаниеТаблицыУдержаний());
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойствоДокументРассчитан()
Если ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
Объект.ДокументРассчитан = Истина;
КонецЕсли;
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтаФорма, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтметкуНезаполненногоПланируемойДатыВыплаты(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты
Или Не Форма.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
Возврат;
КонецЕсли;
ПроверяемыеТаблицы = Новый Массив;
ПроверяемыеТаблицы.Добавить("Начисления");
ПроверяемыеТаблицы.Добавить("НачисленияПерерасчет");
ПроверяемыеНачисления = Новый Массив;
Для каждого ПроверяемаяТаблица Из ПроверяемыеТаблицы Цикл
НачисленияДокумента = Новый Массив;
Для каждого Начисление Из Форма.Объект[ПроверяемаяТаблица] Цикл
НачисленияДокумента.Добавить(Начисление.Начисление);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПроверяемыеНачисления, НачисленияДокумента, Истина);
КонецЦикла;
АвтоОтметкаНезаполненного = ДатаВыплатыОбязательнаКЗаполнению(Форма.Объект.ПорядокВыплаты, ПроверяемыеНачисления, Форма.Объект.ПериодРегистрации);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "ПланируемаяДатаВыплаты", "АвтоОтметкаНезаполненного", АвтоОтметкаНезаполненного);
Если Не АвтоОтметкаНезаполненного Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "ПланируемаяДатаВыплаты", "ОтметкаНезаполненного", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДатаВыплатыОбязательнаКЗаполнению(Знач ПорядокВыплаты, Знач ПроверяемыеНачисления, Знач ПериодРегистрации)
УстановитьПривилегированныйРежим(Истина);
Возврат УчетНДФЛРасширенный.ДатаВыплатыОбязательнаКЗаполнению(ПорядокВыплаты, ПроверяемыеНачисления, ПериодРегистрации);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьРасчетныхПолей()
ИменаЭлементов = Новый Массив;
ИменаЭлементов.Добавить("Результаты");
ИменаЭлементов.Добавить("ВидРасчета");
ИменаЭлементов.Добавить("НачисленияСтраница");
ИменаЭлементов.Добавить("НачисленияПерерасчетСтраница");
ИменаЭлементов.Добавить("КорректировкаВыплатыГруппа");
ИменаЭлементов.Добавить("ГруппаРасчетДенежногоСодержания");
ИменаЭлементов.Добавить("УчитыватьМРОТПриОплатеПоСреднемуЗаработку");
ЗарплатаКадрыРасширенный.УстановитьОтображениеПолейМногофункциональныхДокументов(ЭтаФорма, ИменаЭлементов);
Если ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений Тогда
УстановитьВидимостьПерерасчетов();
УстановитьВидимостьУдержаний();
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтаФорма, Элементы.НачисленияПодробно.Пометка, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйКлиентСервер.ДокументыВыполненияНачисленийУстановитьРежимОтображенияПодробно(ЭтаФорма, Элементы.НачисленияПерерасчетПодробно.Пометка, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
ЗарплатаКадрыРасширенный.УстановитьОтображениеГруппыФормы(Элементы, "Результаты", "ТолькоПросмотр", Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьРегистрацииНачислений()
ПраваНаДокумент = ЗарплатаКадрыРасширенный.ПраваНаМногофункциональныйДокумент(Объект);
РегистрацияНачисленийДоступна = ПраваНаДокумент.ПолныеПраваПоРолям;
ОграниченияНаУровнеЗаписей = Новый ФиксированнаяСтруктура(ПраваНаДокумент.ОграниченияНаУровнеЗаписей);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииРеквизитовОпределяющихОграниченияНаУровнеЗаписей()
БылиОграничения = ОграниченияНаУровнеЗаписей;
УстановитьДоступностьРегистрацииНачислений();
Если БылиОграничения.ЧтениеБезОграничений <> ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений
Или БылиОграничения.ИзменениеБезОграничений <> ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений
Или БылиОграничения.ИзменениеКадровыхДанных <> ОграниченияНаУровнеЗаписей.ИзменениеКадровыхДанных Тогда
Объект.ДокументРассчитан = ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений;
Объект.Рассчитал = Неопределено;
ЗарплатаКадрыРасширенный.УстановитьВторогоОтветственногоВМногофункциональныхДокументах(ЭтаФорма, ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений);
УстановитьВидимостьРасчетныхПолей();
Если БылиОграничения.ЧтениеБезОграничений <> ОграниченияНаУровнеЗаписей.ЧтениеБезОграничений Тогда
ЗарплатаКадрыРасширенный.УстановитьВидимостьКомандПечатиМногофункциональногоДокумента(ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьФормуКомандировкиВключеннойВТ9а(Параметры = Неопределено)
Если Объект.Ссылка.Пустая() Тогда
РезультатПустой = Истина;
Иначе
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| КомандировкиСотрудниковСотрудники.Ссылка
|ИЗ
| Документ.КомандировкиСотрудников.Сотрудники КАК КомандировкиСотрудниковСотрудники
|ГДЕ
| КомандировкиСотрудниковСотрудники.Командировка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
РезультатПустой = Результат.Пустой();
КонецЕсли;
ОтражениеВУчетеТ9а = Ложь;
Если Не Параметры = Неопределено Тогда
ОтражениеВУчетеТ9а = Параметры.Свойство("ОтражениеВУчетеТ9а") И Параметры.ОтражениеВУчетеТ9а;
КонецЕсли;
ДоступностьЭлементов = РезультатПустой И Не ОтражениеВУчетеТ9а;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Организация", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сотрудник", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатаНачала", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатаОкончания", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДнейВПути", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "МестоНазначения", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОрганизацияНазначения", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОснованиеКомандировки", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Цель", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КомандировкаЗаСчетСредств", "Доступность", ДоступностьЭлементов);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ВнутрисменнаяКомандировка", "Доступность", ДоступностьЭлементов);
КомандировкаСотрудников = Неопределено;
Если Не РезультатПустой Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
КомандировкаСотрудников = Выборка.Ссылка;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"КомандировкаСотрудников",
"Видимость",
ЗначениеЗаполнено(КомандировкаСотрудников));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеФормыПоОрганизации()
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
Возврат;
КонецЕсли;
ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты = УчетНДФЛРасширенный.ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты(Объект.Организация, Объект.ПериодРегистрации);
ПодписиДокументов.ЗаполнитьПодписиПоОрганизации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция СведенияОбНДФЛ(ФизическоеЛицо = Неопределено) Экспорт
ДополнительныеСведения = УчетНДФЛФормыРасширенный.ДополнительныеДанныеДляПолученияСведенийОДоходахНДФЛДокумента();
ДополнительныеСведения.МесяцНачисления = Объект.ПериодРегистрации;
ДополнительныеСведения.ПорядокВыплаты = Объект.ПорядокВыплаты;
ДополнительныеСведения.ПланируемаяДатаВыплаты = Объект.ПланируемаяДатаВыплаты;
СведенияОДоходахНДФЛ = УчетНДФЛФормыРасширенный.СведенияОДоходахНДФЛДокумента(Объект, "Начисления,НачисленияПерерасчет", ДополнительныеСведения);
АдресСведенийОбНДФЛ = УчетНДФЛФормыРасширенный.СведенияОбНДФЛ(ЭтотОбъект);
ДанныеОбНДФЛ = ПолучитьИзВременногоХранилища(АдресСведенийОбНДФЛ);
ДанныеОбНДФЛ.Вставить("СведенияОДоходах", СведенияОДоходахНДФЛ.СведенияОДоходах);
ДанныеОбНДФЛ.Вставить("ВычетыКДоходам", СведенияОДоходахНДФЛ.ВычетыКДоходам);
Возврат ПоместитьВоВременноеХранилище(ДанныеОбНДФЛ, ЭтаФорма.УникальныйИдентификатор);
КонецФункции
&НаСервере
Функция СведенияОбУдержаниях() Экспорт
Возврат РасчетЗарплатыРасширенный.СведенияОбУдержаниях(ЭтаФорма);
КонецФункции
&НаСервере
Функция ДанныеКорректировокВыплаты()
Возврат РасчетЗарплатыРасширенныйФормы.ДанныеКорректировокВыплаты(ЭтаФорма);
КонецФункции
&НаСервере
Процедура ОбновитьДанныеКорректировокВыплатыНаСервере(АдресВременногоХранилища)
РасчетЗарплатыРасширенныйФормы.ОбновитьДанныеКорректировокВыплаты(ЭтаФорма, АдресВременногоХранилища);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗначениеКорректировкиВыплаты()
КорректировкаВыплаты = Объект.КорректировкиВыплаты.Итог("КорректировкаВыплаты");
КонецПроцедуры
&НаСервере
Процедура КорректировкиВыплатыВДанные(ТекущийОбъект)
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплатаРасширенный") Тогда
ТекущийОбъект.КорректировкиВыплаты.Очистить();
НоваяСтрока = ТекущийОбъект.КорректировкиВыплаты.Добавить();
НоваяСтрока.КорректировкаВыплаты = КорректировкаВыплаты;
Если ЗначениеЗаполнено(ТекущийОбъект.Сотрудник) Тогда
НоваяСтрока.ФизическоеЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект.Сотрудник, "ФизическоеЛицо");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область РаспределениеПоТерриториямУсловиямТруда
&НаКлиенте
Процедура ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(ОписаниеТаблицы, Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ПараметрыДляВыбора = РасчетЗарплатыРасширенныйКлиент.ПараметрыДляВыбораПолеРаспределениеПоТерриториямУсловиямТруда();
ПараметрыДляВыбора.Форма = ЭтаФорма;
ПараметрыДляВыбора.ОписаниеДокумента = ОписаниеДокумента(ЭтаФорма);
ПараметрыДляВыбора.ОписаниеТаблицы = ОписаниеТаблицы;
РасчетЗарплатыРасширенныйКлиент.ПриНажатииПолеРаспределениеПоТерриториямУсловиямТруда(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка, ПараметрыДляВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТруда(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока) Экспорт
ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТрудаНаСервере(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТрудаНаСервере(ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока)
РасчетЗарплатыРасширенныйФормы.ЗаполнитьПараметрыФормыРаспределениеПоТерриториямУсловиямТруда(ЭтаФорма, ПараметрыФормы, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТруда(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока) Экспорт
ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТрудаНаСервере(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Процедура ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТрудаНаСервере(РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока)
РасчетЗарплатыРасширенныйФормы.ПеренестиРезультатыРедактированияРаспределенияПоТерриториямУсловиямТруда(ЭтаФорма, РезультатРедактирования, ОписаниеТаблицы, ВыбраннаяСтрока);
КонецПроцедуры
&НаСервере
Функция ОписанияТаблицСРаспределениемПоТерриториямУсловиямТруда()
Описания = Новый Массив;
Описания.Добавить(ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
Описания.Добавить(ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
Возврат Описания;
КонецФункции
&НаКлиенте
Процедура ПроверитьПересечениеПериодовОтсутствияНаКлиенте(Отказ, ПараметрыЗаписи, ЗакрытьПослеЗаписи)
Если ПараметрыЗаписи.РежимЗаписи <> РежимЗаписиДокумента.Проведение Тогда
Возврат;
КонецЕсли;
РезультатПроверки = ПроверитьПересечениеПериодовОтсутствияНаСервере();
ДанныеСотрудника = РезультатПроверки.ДанныеСотрудников.Получить(Объект.Сотрудник);
Если ДанныеСотрудника = Неопределено Тогда
Возврат;
КонецЕсли;
Если РезультатПроверки.Отказ Тогда
ТекстСообщения = НСтр("ru = 'На период %1 сотруднику уже зарегистрирована командировка документом %2.'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ДанныеСотрудника.ПредставлениеПериода, ДанныеСотрудника.Регистратор);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, , , , Отказ);
Возврат;
КонецЕсли;
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ДополнительныеПараметры.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи);
ТекстВопроса = ?(ДанныеСотрудника.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияСотрудника.Увольнение"),
НСтр("ru = 'Сотрудник был уволен %1 (%2). Провести документ?'"),
НСтр("ru = 'На период %1 сотруднику уже зарегистрировано отсутствие документом %2. Провести документ?'"));
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ДанныеСотрудника.ПредставлениеПериода, ДанныеСотрудника.Регистратор);
Оповещение = Новый ОписаниеОповещения("ПроверитьПересечениеПериодовОтсутствияНаКлиентеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ОКОтмена);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьПересечениеПериодовОтсутствияНаКлиентеЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ <> КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;
ПараметрыЗаписи = ДополнительныеПараметры.ПараметрыЗаписи;
ПараметрыЗаписи.Вставить("ПроверкаПередЗаписьюВыполнена", Истина);
Если Записать(ПараметрыЗаписи) И ДополнительныеПараметры.ЗакрытьПослеЗаписи Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьПересечениеПериодовОтсутствияНаСервере()
ИсходныеДанные = СостоянияСотрудников.ПустаяТаблицаДанныхСостоянийСотрудника();
НоваяСтрока = ИсходныеДанные.Добавить();
НоваяСтрока.Сотрудник = Объект.Сотрудник;
НоваяСтрока.Состояние = Перечисления.СостоянияСотрудника.Командировка;
НоваяСтрока.Начало = Объект.ДатаНачала;
НоваяСтрока.Окончание = Объект.ДатаОкончания;
Возврат СостоянияСотрудников.ПроверитьПересечениеПериодовОтсутствия(ИсходныеДанные, Объект.Ссылка, Объект.ИсправленныйДокумент);
КонецФункции
&НаКлиенте
Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи, ПараметрыЗаписи)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЗакрытьПослеЗаписи", ЗакрытьПослеЗаписи);
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
РасчетЗарплатыРасширенныйКлиент.ВыполнитьРасчетСотрудникаПередЗаписьюДокумента(
ЭтаФорма, "ЗаписатьНаКлиентеЗавершение", ДополнительныеПараметры, РегистрацияНачисленийДоступна, ВыполнятьПредварительныйРасчетДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьНаКлиентеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПараметрыЗаписи = ДополнительныеПараметры.ПараметрыЗаписи;
ЗакрытьПослеЗаписи = ДополнительныеПараметры.ЗакрытьПослеЗаписи;
Отказ = Ложь;
ПроверитьПересечениеПериодовОтсутствияНаКлиенте(Отказ, ПараметрыЗаписи, ЗакрытьПослеЗаписи);
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыЗаписи.Вставить("ПроверкаПередЗаписьюВыполнена", Истина);
Если Записать(ПараметрыЗаписи) И ЗакрытьПослеЗаписи Тогда
Закрыть();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КлючевыеРеквизитыЗаполненияФормы
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыТаблицыОчищаемыеПриИзменении() Экспорт
Возврат Новый Массив;
КонецФункции
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыОписаниеКлючевыхРеквизитов() Экспорт
Массив = Новый Массив;
Если ИспользуетсяРасчетЗарплаты Тогда
Массив.Добавить(Новый Структура("ЭлементФормы", "ПериодРегистрации"));
Массив.Добавить(Новый Структура("ЭлементФормы", "Организация"));
Массив.Добавить(Новый Структура("ЭлементФормы", "Сотрудник"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДатаНачала"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДатаОкончания"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВнутрисменнаяКомандировка"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ДатаКомандировки"));
Массив.Добавить(Новый Структура("ЭлементФормы", "Часы"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВидВремениЗамещаемыйПредставление"));
Массив.Добавить(Новый Структура("ЭлементФормы", "ВидРасчета"));
КонецЕсли;
Для каждого ОписаниеЭлемента Из Массив Цикл
ОписаниеЭлемента.Вставить("ПредупреждениеПриРедактировании", ЗарплатаКадры.КлючевыеРеквизитыЗаполненияФормыТекстПредупрежденияДокументовСАвтоматическимРасчетом());
КонецЦикла;
Возврат Массив
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(Форма)
ЗарплатаКадрыКлиентСервер.КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(Форма, ?(ЕстьФиксированныеДанные(Форма), ОтображениеПредупрежденияПриРедактировании.Отображать, ОтображениеПредупрежденияПриРедактировании.Авто));
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЕстьФиксированныеДанные(Форма)
Если Не Форма.РегистрацияНачисленийДоступна Тогда
Возврат Ложь;
КонецЕсли;
ИсправленныйДокументЗаполнен = ЗначениеЗаполнено(Форма.Объект.ИсправленныйДокумент);
Возврат РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, ОписаниеТаблицыНачислений(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен)
Или РасчетЗарплатыРасширенныйКлиентСервер.ЕстьФиксированныеДанныеВТаблице(Форма, ОписаниеТаблицыПерерасчетов(Форма.РегистрацияНачисленийДоступна), ИсправленныйДокументЗаполнен);
КонецФункции
#КонецОбласти
#Область ОтсутствияПоДругимМестамРаботы
&НаСервере
Процедура ПрочитатьПостоянныеКадровыеДанныеСотрудника()
ЭтотОбъект.ДругиеСотрудникиФизическогоЛица = Новый ФиксированныйМассив(Новый Массив);
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник), "ФизическоеЛицо, ГоловнаяОрганизация");
Если КадровыеДанныеСотрудников.Количество() > 0 Тогда
КадровыеДанныеСотрудника = КадровыеДанныеСотрудников[0];
Объект.ФизическоеЛицо = КадровыеДанныеСотрудника.ФизическоеЛицо;
ГоловнаяОрганизация = КадровыеДанныеСотрудника.ГоловнаяОрганизация;
КонецЕсли;
КонецЕсли;
УстановитьВидимостьОтсутствияПоДругимМестамРаботы();
КонецПроцедуры
&НаСервере
Процедура УстановитьДругихСотрудниковФизическогоЛица(ДатаНачала, ДатаОкончания)
ЭтотОбъект.ДругиеСотрудникиФизическогоЛица = КадровыйУчетФормыРасширенный.ДругиеСотрудникиФизическогоЛица(
Объект.ФизическоеЛицо, ГоловнаяОрганизация, Объект.Сотрудник, ДатаНачала, ДатаОкончания);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОтсутствияПоДругимМестамРаботы()
НачалоПериода = ?(Объект.ВнутрисменнаяКомандировка, Объект.ДатаКомандировки, Объект.ДатаНачала);
ОкончаниеПериода = ?(Объект.ВнутрисменнаяКомандировка, Объект.ДатаКомандировки, Объект.ДатаОкончания);
УстановитьДругихСотрудниковФизическогоЛица(НачалоПериода, ОкончаниеПериода);
КадровыйУчетФормыРасширенный.ЗаполнитьОтсутствияПоДругимМестамРаботы(
ЭтаФорма, НачалоПериода, ОкончаниеПериода);
УстановитьВидимостьОтсутствияПоДругимМестамРаботы();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОтсутствияПоДругимМестамРаботы()
ЕстьДругиеСотрудникиФизическогоЛица = ДругиеСотрудникиФизическогоЛица.Количество() > 0;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтсутствияПоДругимМестамРаботы", "Видимость", ЕстьДругиеСотрудникиФизическогоЛица);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаОтсутствияПоДругимМестамРаботы", "Видимость", ЕстьДругиеСотрудникиФизическогоЛица);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНовогоОтпускаСовместителя(Совместитель = Неопределено, ОрганизацияСовместителя = Неопределено)
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Ссылка", Неопределено);
ДанныеЗаполнения.Вставить("Действие", "Заполнить");
ДанныеЗаполнения.Вставить("Организация", ОрганизацияСовместителя);
ДанныеЗаполнения.Вставить("Сотрудник", Совместитель);
ДанныеОтпусков = Новый Массив();
НоваяСтрокаОтпуска = ДанныеЗаполненияСтроки();
НоваяСтрокаОтпуска.ВидОтпуска = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной");
НоваяСтрокаОтпуска.ДатаНачала = Объект.ДатаНачала;
НоваяСтрокаОтпуска.ДатаОкончания = Объект.ДатаОкончания;
КоличествоДнейОтпуска = КоличествоДнейПоВидуОтпуска(Совместитель, ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.Основной"), Объект.ДатаНачала, Объект.ДатаОкончания);
НоваяСтрокаОтпуска.КоличествоДней = КоличествоДнейОтпуска;
ДанныеОтпусков.Добавить(НоваяСтрокаОтпуска);
ДанныеЗаполнения.Вставить("ДанныеОтпусков", ДанныеОтпусков);
ПараметрыФормы = Новый Структура("Основание", ДанныеЗаполнения);
ОткрытьФорму("Документ.Отпуск.ФормаОбъекта", ПараметрыФормы, ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДанныеЗаполненияСтроки()
СтруктураОтпуска = Новый Структура;
СтруктураОтпуска.Вставить("ВидОтпуска");
СтруктураОтпуска.Вставить("ДатаНачала");
СтруктураОтпуска.Вставить("ДатаОкончания");
СтруктураОтпуска.Вставить("КоличествоДней");
СтруктураОтпуска.Вставить("КоличествоДнейКомпенсации", 0);
СтруктураОтпуска.Вставить("НачалоПериодаЗаКоторыйПредоставляетсяОтпуск", '00010101');
СтруктураОтпуска.Вставить("КонецПериодаЗаКоторыйПредоставляетсяОтпуск", '00010101');
СтруктураОтпуска.Вставить("Основание", "");
СтруктураОтпуска.Вставить("ВидОтпускаПрежний", Неопределено);
СтруктураОтпуска.Вставить("ИндексСтрокиДокумента", Неопределено);
Возврат СтруктураОтпуска;
КонецФункции
&НаСервереБезКонтекста
Функция КоличествоДнейПоВидуОтпуска(Сотрудник, ВидОтпуска, ДатаНачала, ДатаОкончания)
ОтпускВРабочихДняхПоДоговору = ОстаткиОтпусков.ОтпускСотрудникаВРабочихДняхПоДоговору(Сотрудник, ДатаНачала);
ОписаниеВидаОтпуска = ОстаткиОтпусков.ОписаниеВидаОтпуска(ВидОтпуска, ОтпускВРабочихДняхПоДоговору);
КоличествоДнейОсновногоОтпуска = УчетРабочегоВремениРасширенный.ДлительностьИнтервала(Сотрудник, ДатаНачала, ДатаОкончания, ОписаниеВидаОтпуска.СпособРасчетаПоКалендарнымДням, ОписаниеВидаОтпуска.ЕжегодныйОтпуск);
Возврат КоличествоДнейОсновногоОтпуска;
КонецФункции
&НаКлиенте
Процедура ОткрытьФормуНовогоОтпускаБезОплатыСовместителя(Совместитель = Неопределено, ОрганизацияСовместителя = Неопределено)
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Действие", "Заполнить");
ДанныеЗаполнения.Вставить("Организация", ОрганизацияСовместителя);
ДанныеЗаполнения.Вставить("Сотрудник", Совместитель);
ДанныеЗаполнения.Вставить("ДатаНачала", Объект.ДатаНачала);
ДанныеЗаполнения.Вставить("ДатаОкончания", Объект.ДатаОкончания);
ДанныеЗаполнения.Вставить("ОтсутствиеВТечениеЧастиСмены", Объект.ВнутрисменнаяКомандировка);
ДанныеЗаполнения.Вставить("ДатаОтсутствия", Объект.ДатаКомандировки);
ДанныеЗаполнения.Вставить("ЧасовОтпуска", Объект.ОплачиватьЧасов);
ПараметрыФормы = Новый Структура("Основание", ДанныеЗаполнения);
ОткрытьФорму("Документ.ОтпускБезСохраненияОплаты.ФормаОбъекта", ПараметрыФормы, ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуНовойКомандировкиСовместителя(Совместитель = Неопределено, ОрганизацияСовместителя = Неопределено)
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Действие", "Заполнить");
ДанныеЗаполнения.Вставить("Организация", ОрганизацияСовместителя);
ДанныеЗаполнения.Вставить("Сотрудник", Совместитель);
ДанныеЗаполнения.Вставить("ДатаНачала", Объект.ДатаНачала);
ДанныеЗаполнения.Вставить("ДатаОкончания", Объект.ДатаОкончания);
ДанныеЗаполнения.Вставить("ОтсутствиеВТечениеЧастиСмены", Объект.ВнутрисменнаяКомандировка);
ДанныеЗаполнения.Вставить("ДатаОтсутствия", Объект.ДатаКомандировки);
ДанныеЗаполнения.Вставить("ЧасовОтпуска", Объект.ОплачиватьЧасов);
ДанныеЗаполнения.Вставить("МестоНазначения", Объект.МестоНазначения);
ДанныеЗаполнения.Вставить("ОрганизацияНазначения", Объект.ОрганизацияНазначения);
ДанныеЗаполнения.Вставить("КомандировкаЗаСчетСредств", Объект.КомандировкаЗаСчетСредств);
ДанныеЗаполнения.Вставить("ДнейВПути", Объект.ДнейВПути);
ДанныеЗаполнения.Вставить("Цель", Объект.Цель);
ПараметрыФормы = Новый Структура("Основание", ДанныеЗаполнения);
ОткрытьФорму("Документ.Командировка.ФормаОбъекта", ПараметрыФормы, ЭтаФорма, Истина);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ПризнакДлительнойКомандировкиВРеквизитФормы()
ДлительнаяКомандировкаДоступна = ДлительнаяКомандировкаДоступна();
Если Объект.ДлительнаяКомандировка Тогда
ЭтотОбъект.ПризнакДлительнойКомандировки = 2;
ИначеЕсли Объект.РассчитыватьСПлановымиНачислениями Тогда
ЭтотОбъект.ПризнакДлительнойКомандировки = 3;
ИначеЕсли ДлительнаяКомандировкаДоступна Тогда
ЭтотОбъект.ПризнакДлительнойКомандировки = 1;
Иначе
ЭтотОбъект.ПризнакДлительнойКомандировки = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РеквизитФормыВПризнакДлительнойКомандировки(Объект)
Объект.ДлительнаяКомандировка = ЭтотОбъект.ПризнакДлительнойКомандировки = 2;
Объект.РассчитыватьСПлановымиНачислениями = ЭтотОбъект.ПризнакДлительнойКомандировки = 3;
КонецПроцедуры
&НаСервере
Процедура УточнитьПризнакДлительнойКомандировки()
ДлительнаяКомандировкаДоступна = ДлительнаяКомандировкаДоступна();
Если ДлительнаяКомандировкаДоступна И ПризнакДлительнойКомандировки = 0 Тогда
ПризнакДлительнойКомандировки = ?(ЗарплатаКадрыРасширенныйПовтИсп.ОплачиватьДлительныеКомандировкиПомесячно(), 2, 1);
ИначеЕсли Не ДлительнаяКомандировкаДоступна И ПризнакДлительнойКомандировки > 0 Тогда
ПризнакДлительнойКомандировки = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДлительнаяКомандировкаДоступна()
ДлительнаяКомандировкаДоступна = Ложь;
Если ЗначениеЗаполнено(Объект.ДатаНачала)
И ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
ДлительнаяКомандировкаДоступна = Не Объект.ВнутрисменнаяКомандировка;
КонецЕсли;
Возврат ДлительнаяКомандировкаДоступна;
КонецФункции
&НаСервере
Процедура УдержатьНалогПриВыплатеЗарплатыДанныеВРеквизиты()
ПеречислитьНалог = ?(Объект.УдержатьНалогПриВыплатеЗарплаты, 1, 0);
ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца = Объект.ИсчислятьНалогПриОкончательномРасчете;
КонецПроцедуры
&НаСервере
Процедура УдержатьНалогПриВыплатеЗарплатыРеквизитыВДанные(ТекущийОбъект)
ТекущийОбъект.УдержатьНалогПриВыплатеЗарплаты = ?(ПеречислитьНалог = 1
И ТекущийОбъект.ПорядокВыплаты <> Перечисления.ХарактерВыплатыЗарплаты.Зарплата
И Не (ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца Или ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты), Истина, Ложь);
ТекущийОбъект.ИсчислятьНалогПриОкончательномРасчете = ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца
И ТекущийОбъект.ПорядокВыплаты <> Перечисления.ХарактерВыплатыЗарплаты.Зарплата;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗначениеПеречислитьНалогПриИзмененииПорядкаВыплаты()
Если Объект.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Зарплата Тогда
ПеречислитьНалог = 0;
ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСвойстваПеречислитьНалог()
ВидимостьЭлемента = Не УчетНДФЛ.ДоходыУчитываютсяТолькоПоДатеВыплаты(Объект.ПериодРегистрации)
И Объект.ПорядокВыплаты <> Перечисления.ХарактерВыплатыЗарплаты.Зарплата
И Не (ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца Или ОтложитьРасчетНалогаВМежрасчетахДоРасчетаЗарплаты);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПеречислитьНалог", "Видимость", ВидимостьЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.НачисленияПерерасчет.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПерерасчетПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияПриИзменении(Элемент)
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияРегулирование(Элемент, Направление, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(Элементы.Начисления.ТекущиеДанные, "ПериодДействия", "ПериодДействияСтрокой", Направление, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаАвтоПодборТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПериодДействияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ЗарплатаКадрыКлиент.ВводМесяцаОкончаниеВводаТекста(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНастройки()
Если РегистрацияНачисленийДоступна Тогда
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтаФорма, ОписаниеТаблицыНачислений(РегистрацияНачисленийДоступна));
РасчетЗарплатыРасширенныйФормы.УстановитьРежимОтображенияПодробноИзНастройки(ЭтаФорма, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьИнфоНадписьЗамещения()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЦепочкиДокументов") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ЦепочкиДокументовФормы");
Модуль.УстановитьИнфоНадписьЗамещения(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачисленияПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элемент.ТекущиеДанные;
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РасчетДенежногоСодержанияРедактировался(ДенежноеСодержание)
Для каждого СтрокаТЧ Из ДенежноеСодержание Цикл
Если СтрокаТЧ.ФиксРасчет Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Процедура РасчетЗарплатыВДанныеФормы(ДанныеМенеджераРасчета)
ТаблицыНачислений = РасчетЗарплатыРасширенныйФормы.ТаблицыНачисленийФормы();
ТаблицыНачислений.Начисления = Объект.Начисления;
ТаблицыНачислений.НачисленияПерерасчет = Объект.НачисленияПерерасчет;
ТаблицыНачислений.НачисленияПерерасчетНулевыеСторно = Объект.НачисленияПерерасчетНулевыеСторно;
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНачисленияВДанныеФормы(ТаблицыНачислений, ДанныеМенеджераРасчета.Начисления, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.СортироватьПерерасчеты(Объект.НачисленияПерерасчет);
ТаблицыУдержаний = РасчетЗарплатыРасширенныйФормы.ТаблицыУдержанийФормы();
ТаблицыУдержаний.Удержания = Объект.Удержания;
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыУдержанияВДанныеФормы(ТаблицыУдержаний, ДанныеМенеджераРасчета.Удержания);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыНДФЛВДанныеФормы(Объект.НДФЛ, Объект.ПримененныеВычетыНаДетейИИмущественные, ДанныеМенеджераРасчета.НДФЛ);
РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыКорректировкиВыплатыВДанныеФормы(Объект.КорректировкиВыплаты, ДанныеМенеджераРасчета.КорректировкиВыплаты);
КонецПроцедуры
&НаСервере
Процедура ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета)
РасчетЗарплатыРасширенныйФормы.НачисленияВДанныеМенеджераРасчета(Объект.Начисления, МенеджерРасчета, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.НачисленияПерерасчетСНулевымиСторноВДанныеМенеджераРасчета(Объект.НачисленияПерерасчет, Объект.НачисленияПерерасчетНулевыеСторно, МенеджерРасчета, Объект.Организация);
РасчетЗарплатыРасширенныйФормы.УдержанияВДанныеМенеджераРасчета(Объект.Удержания, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.КорректировкиВыплатыВДанныеМенеджераРасчета(Объект.КорректировкиВыплаты, МенеджерРасчета);
РасчетЗарплатыРасширенныйФормы.НДФЛВДанныеМенеджераРасчета(Объект.НДФЛ, Объект.ПримененныеВычетыНаДетейИИмущественные, МенеджерРасчета);
МенеджерРасчета.НастройкиБухучета.КоэффициентыСреднегоЗаработкаДокумента = УчетСреднегоЗаработка.КоэффициентыРаспределенияСреднегоЗаработкаДокумента(Объект, ОписаниеДокумента(ЭтаФорма));
МенеджерРасчета.НастройкиБухучета.КоэффициентыРаспределенияДенежногоСодержания = Объект.КоэффициентыРаспределенияДенежногоСодержания.Выгрузить();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета, СохранятьИсправления = Истина)
МенеджерРасчета.ИсключаемыйРегистратор = Объект.Ссылка;
ИсправлениеДокументовРасчетЗарплаты.НастроитьМенеджерРасчета(МенеджерРасчета, ЭтаФорма, ОписаниеДокумента(ЭтаФорма));
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления = Истина;
МенеджерРасчета.НастройкиРасчета.РассчитыватьНДФЛ = УчетНДФЛРасширенный.МежрасчетныйДокументИсчисляетНДФЛ(Объект.Организация, ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца, Объект.ПорядокВыплаты, Ложь, Объект.ПланируемаяДатаВыплаты);
МенеджерРасчета.НастройкиРасчета.РассчитыватьКорректировкиВыплаты = Истина;
МенеджерРасчета.НастройкиРасчета.РассчитыватьУдержания = ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты, Объект.ПланируемаяДатаВыплаты);
МенеджерРасчета.НастройкиРасчета.СохранятьИсправления = СохранятьИсправления;
МенеджерРасчета.НастройкиРасчета.Сотрудники = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник);
МенеджерРасчета.НастройкиНДФЛ.Сотрудники = Объект.Сотрудник;
МенеджерРасчета.НастройкиНДФЛ.ДатаВыплаты = Объект.ПланируемаяДатаВыплаты;
МенеджерРасчета.НастройкиНДФЛ.ОкончательныйРасчет = ОкончательныйРасчетНДФЛ;
МенеджерРасчета.НастройкиНДФЛ.ДоходПолученНаТерриторииРФ = Объект.ДоходПолученНаТерриторииРФ;
МенеджерРасчета.НастройкиУдержаний.РассчитыватьТолькоПоТекущемуДокументу = Истина;
МенеджерРасчета.НастройкиБухучета.НастройкиБухучетаДокумента = Документы.Командировка.ДанныеДляБухучетаЗарплатыПервичныхДокументов(Объект)["ТаблицаБухучетЗарплаты"];
МенеджерРасчета.ДобавитьДатуНачалаСобытия(Объект.Сотрудник, Объект.ДатаНачалаСобытия);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьИнформациюЗаполненностиДанныхРасчетаДенежногоСодержания(Форма)
Если Не Форма.ИспользуетсяРасчетЗарплаты Тогда
Возврат;
КонецЕсли;
СтруктураИнфонадписи = Новый Структура("Текст, Картинка");
Если ОбщегоНазначенияБЗККлиентСервер.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
Модуль = ОбщегоНазначенияБЗККлиентСервер.ОбщийМодуль("РасчетДенежногоСодержанияКлиентСервер");
Модуль.ЗаполнитьИнформациюЗаполненностиДанныхСохраняемоеДенежноеСодержаниеДокумента(Форма, ОписаниеДокумента(Форма), СтруктураИнфонадписи);
КонецЕсли;
Форма.ЗаполненностьДанныхИнформационныйТекст = СтруктураИнфонадписи.Текст;
Форма.ЗаполненностьДанныхКартинка = СтруктураИнфонадписи.Картинка;
Форма.ОбновитьИнформациюЗаполненностиДанных = Ложь;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСохраняемогоЗаработка()
Если Объект.РасчетДенежногоСодержания Тогда
ОбновитьДанныеДляРасчетаСохраняемогоДенежногоСодержания();
Иначе
ОбновитьДанныеДляРасчетаСреднего();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьДанныеДляРасчетаСохраняемогоДенежногоСодержания()
Если НЕ ОбновитьРасчетДенежногоСодержания Тогда
Если ОбновитьИнформациюЗаполненностиДанных Тогда
ЗаполнитьИнформациюЗаполненностиДанныхРасчетаДенежногоСодержания(ЭтаФорма);
КонецЕсли;
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоСодержания") Тогда
СтруктураОбъекта = ПодготовитьСтруктуруОбъектаДляРасчетаДенежногоСодержания();
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоСодержания");
Модуль.ОбновитьДанныеСохраняемогоДенежногоСодержанияДокумента(СтруктураОбъекта,,,Объект);
КонецЕсли;
ОбновитьРасчетДенежногоСодержания = Ложь;
РасчетДенежногоСодержанияРедактировался = Ложь;
ЗаполнитьИнформациюЗаполненностиДанныхРасчетаДенежногоСодержания(ЭтаФорма);
РассчитатьСреднийЗаработок();
КонецПроцедуры
&НаСервере
Процедура ОбновитьБухучетРезультатовРасчетаНаСервере(ИсходныеДанные = Неопределено)
МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
ДанныеФормыВДанныеМенеджераРасчета(МенеджерРасчета);
ЗаполнитьНастройкиМенеджераРасчета(МенеджерРасчета);
МенеджерРасчета.НастройкиБухучета.ПроверятьНеобходимостьПересчетаНДФЛ = МенеджерРасчета.НастройкиРасчета.РассчитыватьНДФЛ;
МенеджерРасчета.ЗаполнитьНастройкиОбновленияБухучета(ИсходныеДанные);
МенеджерРасчета.ОбновитьБухучетРезультатовРасчета();
РасчетЗарплатыВДанныеФормы(МенеджерРасчета.Зарплата);
ОбновитьНачисленоУдержаноИтог(ЭтаФорма);
Если ИсходныеДанные <> Неопределено Тогда
РасчетЗарплатыРасширенныйФормы.УстановитьТекущуюСтрокуТаблицыФормы(ЭтаФорма, ИсходныеДанные.ИмяИсходнойТаблицы, ИсходныеДанные.НомерСтрокиИсходнойТаблицы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьБухучетРезультатовРасчета()
Если ИспользоватьСтатьиФинансирования И Объект.Начисления.Количество() > 0 Тогда
ОбновитьБухучетРезультатовРасчетаНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РасчетДенежногоСодержанияПриИзмененииНаСервере()
ОбновитьФормуПоВариантуРасчета();
Если ИспользуетсяРасчетЗарплаты Тогда
УстановитьИспользованиеСреднечасовогоЗаработка();
Объект.ДанныеОбИндексации.Очистить();
Объект.ОтработанноеВремяДляСреднегоОбщий.Очистить();
Объект.СреднийЗаработокОбщий.Очистить();
Объект.ДенежноеСодержание.Очистить();
Объект.ДенежноеСодержаниеФактическиеНачисления.Очистить();
Объект.ФиксПериодРасчетаСреднегоЗаработка = Ложь;
Объект.ПериодРасчетаСреднегоЗаработкаНачало = Неопределено;
Объект.ПериодРасчетаСреднегоЗаработкаОкончание = Неопределено;
Объект.СреднийЗаработок = Неопределено;
УстановитьПредупреждениеДокументНеРассчитан(ЭтаФорма);
ЗаполнитьПериодРасчетаСреднегоЗаработка(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РасчетДенежногоСодержанияПриИзменении(Элемент)
ОбновитьРасчетДенежногоСодержания = Истина;
РасчетДенежногоСодержанияПриИзмененииНаСервере();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДенежноеСодержаниеЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если РезультатРедактирования <> Неопределено Тогда
ОбновитьРасчетДенежногоСодержания = Ложь;
ОбновитьДанныеДляРасчетаСохраняемогоЗаработка = Ложь;
РасчетДенежногоСодержанияРедактировался = РасчетДенежногоСодержанияРедактировался(Объект.ДенежноеСодержание);
ЗаполнитьИнформациюЗаполненностиДанныхРасчетаДенежногоСодержания(ЭтаФорма);
ПодключитьРасчетПослеРедактирования();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(УстановитьЗначение = Истина)
УчетСреднегоЗаработка.УстановитьДоступностьИЗначениеПоУмолчаниюСвойстваУчитыватьМРОТ(
ЭтаФорма,
Объект.Сотрудник,
Объект.ДатаНачалаСобытия,
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.ВидРасчета),
УстановитьЗначение);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСвойстваИсчислятьНалог()
ВидимостьЭлемента = Не УчетНДФЛ.ДоходыУчитываютсяТолькоПоДатеВыплаты(Объект.ПериодРегистрации) И Объект.ПорядокВыплаты <> Перечисления.ХарактерВыплатыЗарплаты.Зарплата;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтложитьРасчетНалогаДоРасчетаЗарплатыВКонцеМесяца", "Видимость", ВидимостьЭлемента);
КонецПроцедуры
&НаСервере
Процедура ДополнительнаяОплатаПриИзмененииНаСервере()
ЗаполнитьВидРасчетаДополнительнойОплаты();
УстановитьДоступностьДополнительнойОплаты();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьДополнительнойОплаты()
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ДатаНачалаДоплаты", "Доступность", Объект.ДополнительнаяОплата);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ДатаОкончанияДоплаты", "Доступность", Объект.ДополнительнаяОплата);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВидРасчетаДополнительнойОплаты", "Доступность", Объект.ДополнительнаяОплата);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидРасчетаДополнительнойОплаты(ПервичнаяИнициализацияФормы = Ложь)
Если Не Объект.ДополнительнаяОплата Тогда
Возврат;
КонецЕсли;
ДопПараметры = Документы.Командировка.ДополнительныеПараметрыВыбораНачислений(Объект, "ВидРасчетаДополнительнойОплаты");
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВФорме(ЭтотОбъект, "ВидРасчетаДополнительнойОплаты", ДопПараметры, ПервичнаяИнициализацияФормы);
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВОбъекте(Объект, "ВидРасчетаДополнительнойОплатыДолиРайонногоКоэффициента", , Ложь);
ПланыВидовРасчета.Начисления.УстановитьНачислениеПоУмолчаниюВОбъекте(Объект, "ВидРасчетаДополнительнойОплатыДолиСевернойНадбавки", , Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьДополнительныеНачисленияНаСервере(ОсновнойВидРасчета, ДополнительнаяОплатаКомандировки = Ложь)
СоответствиеИменРеквизитов = СоответствиеИменРеквзитовДополнительныхНачислений(ДополнительнаяОплатаКомандировки);
ПланыВидовРасчета.Начисления.УстановитьДополнительныеНачисления(Объект, СоответствиеИменРеквизитов, ОсновнойВидРасчета);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СоответствиеИменРеквзитовДополнительныхНачислений(ДополнительнаяОплатаКомандировки = Ложь)
СоответствиеИменРеквизитов = Новый Структура;
Если ДополнительнаяОплатаКомандировки Тогда
СоответствиеИменРеквизитов.Вставить("ВидРасчетаДолиРК", "ВидРасчетаДополнительнойОплатыДолиРайонногоКоэффициента");
СоответствиеИменРеквизитов.Вставить("ВидРасчетаДолиСН", "ВидРасчетаДополнительнойОплатыДолиСевернойНадбавки");
Иначе
СоответствиеИменРеквизитов.Вставить("ВидРасчетаДолиРК", "ВидРасчетаДолиРайонногоКоэффициента");
СоответствиеИменРеквизитов.Вставить("ВидРасчетаДолиСН", "ВидРасчетаДолиСевернойНадбавки");
КонецЕсли;
Возврат СоответствиеИменРеквизитов;
КонецФункции
#Область УточнениеВидаВремени
&НаСервере
Функция ВариантыСелектора()
Результат = УчетРабочегоВремениРасширенныйФормы.ТаблицаВариантовОбстоятельств();
НоваяСтрока = Результат.Добавить();
НоваяСтрока.Состояние = Перечисления.СостоянияСотрудника.Командировка;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура Подключаемый_УточняющийВидВремениПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидВремени) Тогда
УчетРабочегоВремениРасширенныйКлиент.УточнитьВидВремени(ЭтаФорма, Объект.ВидВремени);
Иначе
УчетРабочегоВремениРасширенныйКлиент.ОтменитьУточнениеВидаВремени(ЭтаФорма);
Объект.ВидРасчета = Неопределено;
КонецЕсли;
ЗаполнитьВидРасчета();
ПодключитьРасчетПослеРедактирования();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_УточняющийВидВремениОткрытие(Элемент, СтандартнаяОбработка)
УчетРабочегоВремениРасширенныйКлиент.ПоказатьУточняющийВидВремени(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПодключаемыеКоманды(УправляемаяФорма)
ЭДОБЗККлиентСервер.ОбновитьКоманды(УправляемаяФорма, УправляемаяФорма.Объект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзмененныеДанныеПерерасчета(ТекущиеДанные) Экспорт
РасчетЗарплатыРасширенныйКлиент.ДобавитьИзмененныеДанные(
ИзмененныеДанные,
"Начисления",
Объект.ФизическоеЛицо,
ТекущиеДанные.Сотрудник,
ТекущиеДанные.Начисление);
КонецПроцедуры
&НаКлиенте
Процедура ПослеУдаленияПерерасчета() Экспорт
РассчитатьДанныеФормы(Объект.Сотрудник, ОписаниеТаблицыПерерасчетов(РегистрацияНачисленийДоступна));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьНастроекБухучета(Форма)
Если Форма.Объект.БухучетУказываетсяРаспределением Тогда
Форма.Элементы.СтраницыБухучет.ТекущаяСтраница = Форма.Элементы.СтраницаБухучетРаспределение;
Иначе
Форма.Элементы.СтраницыБухучет.ТекущаяСтраница = Форма.Элементы.СтраницаБухучет;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьБухучетРаспределениеЗавершение(Результат, Параметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ИзменитьБухучетРаспределениеЗавершениеНаСервере(Результат);
КонецПроцедуры
&НаСервере
Процедура ИзменитьБухучетРаспределениеЗавершениеНаСервере(Результат)
ПрежнееРаспределение = Объект.НастройкиБухучета.Выгрузить();
Объект.НастройкиБухучета.Очистить();
Для каждого СтрокаРаспределения Из Результат.НастройкиБухучета Цикл
ЗаполнитьЗначенияСвойств(Объект.НастройкиБухучета.Добавить(), СтрокаРаспределения);
КонецЦикла;
НастройкаИзменилась = Не ОбщегоНазначения.КоллекцииИдентичны(ПрежнееРаспределение, Объект.НастройкиБухучета.Выгрузить(),"СтатьяФинансирования,СтатьяРасходов,СпособОтраженияЗарплатыВБухучете,ДоляРаспределения");
Если НастройкаИзменилась Тогда
Модифицированность = Истина;
КонецЕсли;
ЗаполнитьПредставлениеРаспределенияБухучета();
Если ИспользоватьСтатьиФинансирования И Объект.Начисления.Количество() > 0 И НастройкаИзменилась Тогда
ОбновитьБухучетРезультатовРасчетаНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПредставлениеРаспределенияБухучета()
Элементы.ПредставлениеРаспределенияБухучета.Заголовок = ОтражениеЗарплатыВБухучетеРасширенный.ПредставлениеРаспределенияБухучетаДокумента(Объект.НастройкиБухучета);
КонецПроцедуры
&НаСервере
Процедура ТерриториальныеУсловияНаПериодКомандировкиПриИзмененииНаСервере()
СписокТерриторий = СписокТерриторийСОсобымиКлиматическимиУсловиями();
Если СписокТерриторий.НайтиПоЗначению(Объект.ТерриториальныеУсловияНаПериодКомандировки) = Неопределено Тогда
Объект.РайонныйКоэффициентНаПериодКомандировки = 0;
КонецЕсли;
УстановитьВидимостьРайонногоКоэфффициента();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьРайонногоКоэфффициента()
СписокТерриторий = СписокТерриторийСОсобымиКлиматическимиУсловиями();
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РайонныйКоэффициентНаПериодКомандировки",
"Видимость", СписокТерриторий.НайтиПоЗначению(Объект.ТерриториальныеУсловияНаПериодКомандировки) <> Неопределено);
КонецПроцедуры
&НаСервере
Функция СписокТерриторийСОсобымиКлиматическимиУсловиями()
СписокТерриторий = Справочники.ТерриториальныеУсловияПФР.СписокТерриторийСОсобымиКлиматическимиУсловиями();
СписокТерриторий.Добавить(ПредопределенноеЗначение("Справочник.ТерриториальныеУсловияПФР.ОКУ"));
Возврат СписокТерриторий;
КонецФункции
&НаКлиенте
Процедура ТерриториальныеУсловияНаПериодКомандировкиПриИзменении(Элемент)
ТерриториальныеУсловияНаПериодКомандировкиПриИзмененииНаСервере();
КонецПроцедуры
#КонецОбласти
#Область Инициализация
СтарыеЗначенияКонтролируемыхПолей = Новый Соответствие;
#КонецОбласти