gifts2017

Расчет стажа

Опубликовал Алекс Одинэсник (Alex1Cnic) в раздел Обработки - Универсальные обработки

Доработанная версия обработки "Расчет стажа" от Rom-x (http://infostart.ru/public/93102), за что ему отдельное СПАСИБО

18-12-2013 

1) добавлена функция при изменении Сотрудника автоматически заполняются поля периодов на форме обработки, если например у сотрудника уже заполнен стаж

2) также исправлен метод вычисления ДатаОтсчета

похожая проблема с задвоением стажа произошла:
1)Сначала я корректно заполнил обе табличные части: "Трудовая деятельность" и "Стажи общего характера".
Получилось: стаж равен 12 лет и дата начала стажа 01.09.2001.

2) Оформляю "Начисление больничного" при выборе сотрудника в докумнте стаж заполняется не 12 лет, а 24 года.

Теперь выяснилось в чем проблема:
В типовом коде фирмы 1С общего модулея(УПП релиз 1.3.46) ПроведениеРасчетов.ПолучитьНачалоСтажаДляБольничногоЛиста
вычисляется дата начала стажа ДатаСтажа

Код типовой 1С УПП релиз 1.3.46
ДатаСтажа = ДобавитьМесяц(ВыборкаПоСтажу.ДатаОтсчета, - ВыборкаПоСтажу.РазмерМесяцев) - ВыборкаПоСтажу.РазмерДней*86400;

ОбщегоНазначенияЗК.РазобратьРазностьДат(ДатаНачалаСобытия, ДатаСтажа, Лет, Месяцев);
НачислениеБольничного.СтажЛет = Лет;
НачислениеБольничного.СтажМесяцев = Месяцев;



Т.е. мы видим, что от ДатаОтсчета отнимается размер стажа РазмерМесяцев и в итоге получается дата начала стажа не 01.09.2001, а дата начала стажа 01.09.1989. И уже далее рассчитывается разница ДатаНачалаСобытия(это дата начала болезни в больничном) - 01.09.1989 = удвоенный стаж!!!

Проблема оказывается решается просто:
в данной обработке "Расчет стажа"
заменил строку в процедуре Процедура ЗаписатьНажатие(Элемент)
НовСтр.ДатаОтсчета = Дата(ДобавитьМесяц(НачалоДня(ТекущаяДата()),-ГГ*12-ММ)-ДД*86400); //данная формула вычисляет в моем примере 17.12.2001
на строку
НовСтр.ДатаОтсчета = Дата(ДобавитьМесяц(НачалоДня(ДатаНач1),ГГ*12+ММ)+ДД*86400);//в моем примере вычисляет 17.12.2013

Т.е. ДатаОтсчета - это не дата, равная разности ТекущаяДата() и размера стажа.
ДатаОтсчета - это и есть так скажем ТекущаяДата(), если в таблице стажей заполнены периоды по текущую дату, или правильнее ДатаОтсчета это момент, когда делался расчет стажа , либо это последняя заполнненая дата окончания стажа
(ДатаНач1 - это первая дата стажа в форме обработки "Расчет стажа" и к ней добавляется размера стажа).

После такого изменения кода в данной обработке "Расчет стажа" в документах "Начисление больничного" теперь стаж считаеся корректно

3) При нажатии на конпку Записать в список выбора видов стажа берутся только не помеченные на удаление

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Расчет стажа
.epf 29,01Kb
18.12.13
42
.epf 29,01Kb 42 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. MagIvan (RailMen) 12.01.14 22:38
Задача расчета стажа решается классически одним запросом, у которого в качестве параметров выступают соответствующие даты начала отсчета стажа в организации и дата, на которую необходимо рассчитать стаж. Вычисляются 3 поля: Лет, Месяцев и Дней. Один запрос может расчитать все виды стажа для всех сотрудников предприятия. Всего за пару секунд. Докручиваем компановщик данных и вуаля ;)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа