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