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