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