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