Виды отпусков / Форма элемента / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Ключ.Пустая() Тогда
		ВыполнитьЧтениеНаСервере();		
	КонецЕсли;
	
	// Обработчик подсистемы "ВерсионированиеОбъектов".
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
	
	// СтандартныеПодсистемы.Свойства
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
	// Конец СтандартныеПодсистемы.Свойства
	
	ПереопределитьНеобходимостьСоздаватьНачисления(Параметры);
	
	ЗаполнитьСписокВыбораСпособаРасчетаОтпуска();
	
	УстановитьДоступностьЭлементов(ЭтаФорма);
	
	УстановитьОтметкуНезаполненногоЭлементов(Объект, Элементы);
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	ВыполнитьЧтениеНаСервере(ТекущийОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	Если Объект.ОтпускЯвляетсяЕжегодным И Объект.ОтпускБезОплаты Тогда
		ОтпускЧАЭС = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.ОтпускПострадавшимВАварииЧАЭС");
		Если ОтпускЧАЭС = Неопределено ИЛИ Объект.Ссылка <> ОтпускЧАЭС Тогда
			ПоказатьПредупреждение(, НСтр("ru = 'Отпуск без оплаты не может быть ежегодным.'"), , НСтр("ru = 'Ошибка заполнения'"));
			Отказ = Истина;
		КонецЕсли;
	КонецЕсли;
	
	// Если изменилось количество дней ежегодного отпуска - проверяем есть ли уже документы, использующие данный вид отпуска.
	// Если есть - спрашиваем пользователя.
	Если НЕ ПараметрыЗаписи.Свойство("ЗаписатьБезПроверки") И Объект.ОтпускЯвляетсяЕжегодным Тогда
		ПроверитьИзменениеКоличестваЕжегодногоОтпускаКлиент(Отказ);
	КонецЕсли;
	
	Если НЕ ПараметрыЗаписи.Свойство("ЗаписатьБезПроверки") Тогда
		ПроверитьИзменениеНакопительногоОтпуска(Отказ);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	
	ЗакрытьПослеЗаписи = Истина;
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.РеестрГосслужащих") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("РеестрГосслужащих");
		Модуль.ЗаписатьДополнительныеСвойстваВидаОтпуска(ЭтаФорма, ТекущийОбъект.Ссылка);
	КонецЕсли;	
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	Если ПереопределятьНеобходимостьСоздаватьНачисления Тогда
		ТекущийОбъект.УстановитьНеобходимостьСоздаватьНачислениеОтпуска(СоздаватьНачисления);
		ТекущийОбъект.УстановитьНеобходимостьСоздаватьНачислениеКомпенсацииОтпуска(СоздаватьНачисления);
	ИначеЕсли ОтпускСталЕжегодным(ТекущийОбъект) Тогда
		ТекущийОбъект.УстановитьНеобходимостьСоздаватьНачислениеКомпенсацииОтпуска(Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	Если ЗакрытьПослеЗаписи Тогда
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// СтандартныеПодсистемы.Свойства
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
	Если ИмяСобытия = "ЗаписанаШкалаОценкиСтажа" Тогда
		ОбработкаЗаполненияШкалыСтажа(Параметр);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ВыполнитьЧтениеНаСервере(ТекущийОбъект = Неопределено)
		
	Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.РеестрГосслужащих") Тогда
		Модуль = ОбщегоНазначения.ОбщийМодуль("РеестрГосслужащих");
		Модуль.ДополнитьФормуВидыОтпусков(ЭтаФорма);
		Модуль.ПрочитатьДополнительныеДанныеВидаОтпуска(ЭтаФорма);		
	КонецЕсли;
		
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
	
	Если НЕ ЗначениеЗаполнено(Объект.НаименованиеПолное) Тогда
		Объект.НаименованиеПолное = Объект.Наименование;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтпускБезОплатыПриИзменении(Элемент)
	
	Если Объект.ОтпускБезОплаты Тогда
		Объект.ОтпускЯвляетсяЕжегодным = Ложь;
		Объект.ПредоставлятьОтпускВсемСотрудникам = Ложь;
		Объект.КоличествоДнейВГод = Неопределено;
	КонецЕсли;
	
	УстановитьДоступностьЭлементов(ЭтаФорма);
	
	УстановитьОтметкуНезаполненногоЭлементов(Объект, Элементы);
	
КонецПроцедуры

&НаКлиенте
Процедура ОтпускЯвляетсяЕжегоднымПриИзменении(Элемент)
	
	Если Объект.ОтпускЯвляетсяЕжегодным Тогда
		Объект.ОтпускБезОплаты = Ложь;
		Если Объект.СпособРасчетаОтпуска.Пустая() Тогда
			Объект.СпособРасчетаОтпуска = ПредопределенноеЗначение("Перечисление.СпособыРасчетаОтпуска.ВКалендарныхДнях");
		КонецЕсли;
	Иначе
		Объект.ПредоставлятьОтпускВсемСотрудникам = Ложь;
		Объект.КоличествоДнейВГод = Неопределено;
	КонецЕсли;
	
	УстановитьОтметкуНезаполненногоЭлементов(Объект, Элементы);
	УстановитьДоступностьЭлементов(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ХарактерЗависимостиДнейОтпускаПриИзменении(Элемент)
	
	Если НЕ Объект.ХарактерЗависимостиДнейОтпуска = ПредопределенноеЗначение("Перечисление.ХарактерЗависимостиКоличестваДнейОтпуска.НеЗависит") Тогда
		Объект.КоличествоДнейВГод = 0;
	КонецЕсли;
	
	УстановитьДоступностьЭлементов(ЭтаФорма);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	
	ЗакрытьПослеЗаписи = Истина;
	Записать();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// СтандартныеПодсистемы.Свойства 
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементов(Форма)
	
	Объект = Форма.Объект;
	Элементы = Форма.Элементы;
	
	Если Объект.Предопределенный Тогда
		ЭтоСпециальныйОтпуск = (Объект.ИмяПредопределенныхДанных = "Северный") ИЛИ (Объект.ИмяПредопределенныхДанных = "ОтпускЗаВредность");
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Наименование", 							"Доступность", Не Объект.Предопределенный);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтпускБезОплаты", 						"Доступность", Не Объект.Предопределенный);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтпускЯвляетсяЕжегодным", 				"Доступность", Не Объект.Предопределенный);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СпособРасчетаОтпуска", 					"Доступность", Не Объект.Предопределенный);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПредоставлятьОтпускВсемСотрудникам", 	"Доступность", Не Объект.ИмяПредопределенныхДанных = "Основной");
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГод", 					"Доступность", Объект.ОтпускЯвляетсяЕжегодным);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГодГруппа", 				"Доступность", НЕ ЭтоСпециальныйОтпуск);
	Иначе
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтпускЯвляетсяЕжегодным", 				"Доступность", Не Объект.ОтпускБезОплаты);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГод", 					"Доступность", Не Объект.ОтпускБезОплаты);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СпособРасчетаОтпуска", 					"Доступность", Не Объект.ОтпускБезОплаты);
		ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПредоставлятьОтпускВсемСотрудникам", 	"Доступность", Объект.ОтпускЯвляетсяЕжегодным);
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГод", 		"Доступность", Объект.ХарактерЗависимостиДнейОтпуска = ПредопределенноеЗначение("Перечисление.ХарактерЗависимостиКоличестваДнейОтпуска.НеЗависит"));
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НастроитьШкалу", 			"Доступность", Объект.ХарактерЗависимостиДнейОтпуска = ПредопределенноеЗначение("Перечисление.ХарактерЗависимостиКоличестваДнейОтпуска.ЗависитОтСтажа"));
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НакопительныйОтпуск", 		"Видимость", Объект.Ссылка = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.ОтпускЗаВредность"));
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГодГруппа", 	"Доступность", Объект.ОтпускЯвляетсяЕжегодным);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтметкуНезаполненногоЭлементов(Объект, Элементы)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СпособРасчетаОтпуска", 	"АвтоОтметкаНезаполненного", 	Не Объект.ОтпускБезОплаты);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СпособРасчетаОтпуска",	"ОтметкаНезаполненного", 		Не Объект.ОтпускБезОплаты И Не ЗначениеЗаполнено(Объект.СпособРасчетаОтпуска));
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГод",	"АвтоОтметкаНезаполненного", 	Объект.ОтпускЯвляетсяЕжегодным);
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КоличествоДнейВГод", 	"ОтметкаНезаполненного", 		Объект.ОтпускЯвляетсяЕжегодным И Не ЗначениеЗаполнено(Объект.КоличествоДнейВГод));

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокВыбораСпособаРасчетаОтпуска()
	
	Элементы.СпособРасчетаОтпуска.СписокВыбора.Очистить();
	Элементы.СпособРасчетаОтпуска.СписокВыбора.Добавить(Перечисления.СпособыРасчетаОтпуска.ВКалендарныхДнях);
	Элементы.СпособРасчетаОтпуска.СписокВыбора.Добавить(Перечисления.СпособыРасчетаОтпуска.ВРабочихДнях);
	
	Если Объект.Предопределенный Тогда
		Элементы.СпособРасчетаОтпуска.СписокВыбора.Добавить(Перечисления.СпособыРасчетаОтпуска.ВКалендарныхИлиРабочихДняхВЗависимостиОтТрудовогоДоговора);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПереопределитьНеобходимостьСоздаватьНачисления(Параметры)
	
	ПереопределятьНеобходимостьСоздаватьНачисления = Ложь;
	НеобходимоСоздаватьНачисления = Ложь;
	
	Если Параметры.ДополнительныеПараметры.Свойство("СоздаватьНачисления") Тогда 
		ПереопределятьНеобходимостьСоздаватьНачисления = Истина;
		СоздаватьНачисления = Параметры.ДополнительныеПараметры.СоздаватьНачисления;	
	КонецЕсли;
	
КонецПроцедуры 

&НаСервере
Функция ОтпускСталЕжегодным(ТекущийОбъект)
	
	БылЕжегодный = ОтпускБылЕжегодным(ТекущийОбъект);
	
	Возврат БылЕжегодный <> Неопределено И (НЕ БылЕжегодный И ТекущийОбъект.ОтпускЯвляетсяЕжегодным);
	
КонецФункции 

&НаСервере
Функция ОтпускБылЕжегодным(ТекущийОбъект)
	
	БылЕжегодный = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект.Ссылка, "ОтпускЯвляетсяЕжегодным");
	
	Возврат БылЕжегодный;
	
КонецФункции 

&НаСервереБезКонтекста
Функция КоличествоДнейВГодНаСервере(Ссылка)

	Запрос = Новый Запрос("ВЫБРАТЬ
		|	ВидыОтпусков.КоличествоДнейВГод
		|ИЗ
		|	Справочник.ВидыОтпусков КАК ВидыОтпусков
		|ГДЕ
		|	ВидыОтпусков.Ссылка = &Ссылка");
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	РезультатЗапроса = Запрос.Выполнить();
	
	Возврат ?(РезультатЗапроса.Пустой(),Неопределено,РезультатЗапроса.Выгрузить()[0].КоличествоДнейВГод);

КонецФункции

&НаСервереБезКонтекста
Функция УжеВведеныСведенияПоДанномуВиду(Ссылка)

	Запрос = Новый Запрос("ВЫБРАТЬ
		|	ПоложенныеВидыЕжегодныхОтпусков.Регистратор
		|ИЗ
		|	РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков КАК ПоложенныеВидыЕжегодныхОтпусков
		|ГДЕ
		|	ПоложенныеВидыЕжегодныхОтпусков.ВидЕжегодногоОтпуска = &Ссылка");
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	
	Возврат НЕ Запрос.Выполнить().Пустой();
	
КонецФункции

&НаКлиенте
Процедура ПроверитьИзменениеКоличестваЕжегодногоОтпускаКлиент(Отказ)

	ДнейБыло = КоличествоДнейВГодНаСервере(Объект.Ссылка);
	Если (ДнейБыло <> Неопределено) И (Объект.КоличествоДнейВГод <> ДнейБыло)  Тогда
		Если УжеВведеныСведенияПоДанномуВиду(Объект.Ссылка) Тогда
			
			ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПроверитьИзменениеКоличестваЕжегодногоОтпускаЗавершение", ЭтотОбъект);
			ПоказатьВопрос(ОбработчикОповещенияОЗакрытии,
			НСтр("ru = 'Уже существуют документы, использующие данный вид отпуска.
			|Вы уверены что хотите изменить количество дней отпуска в год для данного вида отпуска?'"),
			РежимДиалогаВопрос.ДаНет,
			,
			КодВозвратаДиалога.Да);
			
			Отказ = Истина;
			
		КонецЕсли;
	КонецЕсли;
		
КонецПроцедуры

// Обработчик оповещения закрытия
&НаКлиенте
Процедура ПроверитьИзменениеКоличестваЕжегодногоОтпускаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Объект.КоличествоДнейВГод = КоличествоДнейВГодНаСервере(Объект.Ссылка);
	КонецЕсли;
	
	Записать(Новый Структура("ЗаписатьБезПроверки", Истина));
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьИзменениеНакопительногоОтпуска(Отказ)
	
	Если ИзменилсяПризнакНакопительногоОтпуска(Объект.Ссылка, Объект.НакопительныйОтпуск)
		И УжеВведеныСведенияПоДанномуВиду(Объект.Ссылка) Тогда
		
		ОбработчикОповещения = Новый ОписаниеОповещения("СменаНакопительностиЗавершение", ЭтотОбъект);
		ТекстВопроса = НСтр("ru = 'Внимание!
			|Вы изменяете способ расчета отпуска и, следовательно, его остатки для всех сотрудников.
			|Вы уверены что хотите его изменить?'");
				
		ПоказатьВопрос(ОбработчикОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да);
		
		Отказ = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СменаНакопительностиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт

	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Объект.НакопительныйОтпуск = Не Объект.НакопительныйОтпуск;
	КонецЕсли;

	Записать(Новый Структура("ЗаписатьБезПроверки", Истина));
	
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		ПересчитатьНакопительныеОтпускаНаСервере();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПересчитатьНакопительныеОтпускаНаСервере()

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	ЗаработанныеПраваНаОтпуска.Сотрудник,
		|	ЗаработанныеПраваНаОтпуска.ВидЕжегодногоОтпуска,
		|	ЗаработанныеПраваНаОтпуска.Период
		|ПОМЕСТИТЬ ВТСотрудникиОтпуска
		|ИЗ
		|	РегистрСведений.ЗаработанныеПраваНаОтпуска КАК ЗаработанныеПраваНаОтпуска
		|ГДЕ
		|	ЗаработанныеПраваНаОтпуска.ВидЕжегодногоОтпуска = &Вредный
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТСотрудникиОтпуска.Сотрудник,
		|	ВТСотрудникиОтпуска.ВидЕжегодногоОтпуска,
		|	МИНИМУМ(ВТСотрудникиОтпуска.Период) КАК Период
		|ИЗ
		|	ВТСотрудникиОтпуска КАК ВТСотрудникиОтпуска
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТСотрудникиОтпуска.Сотрудник,
		|	ВТСотрудникиОтпуска.ВидЕжегодногоОтпуска
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	ВТСотрудникиОтпуска.Сотрудник
		|ИЗ
		|	ВТСотрудникиОтпуска КАК ВТСотрудникиОтпуска";
	Запрос.УстановитьПараметр("Вредный", ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.ОтпускЗаВредность"));
	
	РезультатыЗапроса = Запрос.ВыполнитьПакет();
	
	ТаблицаВредников = РезультатыЗапроса[РезультатыЗапроса.Количество()-2].Выгрузить();
	ОстаткиОтпусков.УдалитьЗаписиЗаработанныхОтпусков(ТаблицаВредников);
	
	СписокСотрудников = РезультатыЗапроса[РезультатыЗапроса.Количество()-1].Выгрузить().ВыгрузитьКолонку("Сотрудник");
	ОстаткиОтпусков.РассчитатьЗаработанныеОтпускаСпискуСотрудников(СписокСотрудников, ТекущаяДатаСеанса());
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьШкалуСтажа(Команда)
	ПараметрыФормы = Новый Структура("ВидСтажа", Объект.ВидСтажа);
	ПараметрыФормы.Вставить("АдресШкалыОценкиСтажа", АдресШкалыОценкиСтажа());
	ОткрытьФорму("Справочник.ВидыОтпусков.Форма.ФормаРедактированияЗависимостиДнейОтСтажа", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры

&НаСервере
Функция АдресШкалыОценкиСтажа()
	Возврат ПоместитьВоВременноеХранилище(Объект.ШкалаОценкиСтажа.Выгрузить());
КонецФункции

&НаСервере
Процедура ОбработкаЗаполненияШкалыСтажа(Параметры)
	Объект.ВидСтажа = Параметры.ВидСтажа;
	Объект.ШкалаОценкиСтажа.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресШкалыОценкиСтажа));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ИзменилсяПризнакНакопительногоОтпуска(Ссылка, Стало)

	Было = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "НакопительныйОтпуск");
	Возврат Стало <> Было;

КонецФункции


#КонецОбласти

Связанные материалы