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