Каталог решений - Предупреждения при загрузке больничных: Сотрудник уволен больше месяца назад, Сотрудник в месяце регистрации в отпуске. УПП 1.3

Предупреждения при загрузке больничных: Сотрудник уволен больше месяца назад, Сотрудник в месяце регистрации в отпуске. УПП 1.3

Предупреждения при загрузке больничных: Сотрудник уволен больше месяца назад, Сотрудник в месяце регистрации в отпуске. УПП 1.3

В наличии

Это решение для УПП 1.3 (в ЗУП 2.5 и Комплексной автоматизации должно быть аналогично).
Документ «Начисление по больничному листу» при нажатии на кнопку «Рассчитать» проверяется на два условия:
1) Сотрудник уволен больше месяца назад от даты начала больничного
2) В месяце больничного было начисление отпускных.

Категория:

Описание

Задача от расчетчиков:

Документ "Начисление по больничному листу": при нажатии на кнопку "Рассчитать" нужно выполнить проверку на два условия

  1. Сотрудник уволен больше месяца назад от даты начала больничного 
  2. В периоде регистрации больничного были отпускные

Выдать предупреждение

Делюсь своим решением:

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

	СообщениеОтпуск = ПроверкаОтпуска(ДокументОбъект.Сотрудник, ДокументОбъект.ПериодРегистрации);
	Если СообщениеОтпуск <> "" И СообщениеОтпуск <> Неопределено Тогда 
		Ответ = Вопрос(СообщениеОтпуск, РежимДиалогаВопрос.ДаНет);
		Если Ответ = КодВозвратаДиалога.Нет Тогда
			Возврат
		КонецЕсли;
	КонецЕсли;	
	//МОЯ ВСТАВКА-
	
    // далее сохранен оригинальный код процедуры

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


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

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

 

has been added to your cart:
Оформление заказа