Каталог решений - Корректный расчет стажа (расширение для ЗиК ГУ 3.1.18)

Корректный расчет стажа (расширение для ЗиК ГУ 3.1.18)

Корректный расчет стажа (расширение для ЗиК ГУ 3.1.18)

В наличии

Обратился ко мне кадровик с проблемой неправильного расчета стажа сотрудника в ЗиК ГУ 3.1.18. Математика там очень простая, но в 1С стаж не совпадает с рассчитанным вручную или с помощью программы «Расчет стажа 1.4» на 1-3 дня. В результате получилось расширение с исправлением расчета стажа в форме «Трудовая деятельность».

Категория:

Описание

Математика для расчета стажа очень простая, каждые 30 дней переводятся в полные месяцы, 12 месяцев в полные годы (прикладываю скриншот из приказа).

 

 

Т.е. что бы посчитать стаж между двумя датами, нужно вычесть между собой Годы, Месяцы и Дни, при этом если не хватает месяцев, то превращаем один год в 12 месяцев, а если не хватает дней, то превращаем один месяц в 30 дней.

Например:

   02.02.2000

—  02.04.1998

—————-

от 2-х месяцев мы не можем отнять 4, занимаем у года 12 месяцев

   02.14.1999

—  02.04.1998

—————-

   00.10.0001

получается 1 год и 10 месяцев.

 

В 1С данный расчет сделан через запрос, и, насколько я понял, берется число календарных дней месяца, а не 30 как изложено в Приказе Минтруда, из-за этого набегает разница 1-3 дня.

 

Реализуем процедуру для расчета стажа по методу из приказа:

Процедура РазностьДатСтаж(ДатаНачала, ДатаОкончания, ПериодРаботыДней, ПериодРаботыЛет, ПериодРаботыМесяцев) Экспорт 
	
	//Разность лет
	ГодН = Год(ДатаНачала);
	ГодК = Год(ДатаОкончания);
	ПериодРаботыЛет = ГодК - ГодН;
	
    //Разность месяцев
	МесяцН = Месяц(ДатаНачала);
	МесяцК = Месяц(ДатаОкончания);

    //Если месяцев не хватает - занимаем у года
	Если МесяцК < МесяцН Тогда 
		ПериодРаботыЛет = ПериодРаботыЛет - 1;
		МесяцК = МесяцК + 12;
	КонецЕсли;
	ПериодРаботыМесяцев = МесяцК - МесяцН;
	
    //Разность дней
	ДеньН = День(ДатаНачала);  
	ДеньК = День(ДатаОкончания)+1;
	
    //Если дней не хватает - занимаем у месяца
	Если ДеньК < ДеньН Тогда 
		ПериодРаботыМесяцев = ПериодРаботыМесяцев - 1;
		ДеньК = ДеньК + 30;
	КонецЕсли;
	
	ПериодРаботыДней = ДеньК - ДеньН;

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

Проверку на пересечение периодов я не делал, т.к. кадровик адекватный и данные вводит сразу без пересечений.

 

Данный код включен в расширение, в котором заменена процедура расчета стажа по кнопке "Рассчитать стажи" и изменена процедура расчета стажа при выводе стажа на текущую дату, расширение необходимо подключать без использования безопасного режима.

 

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