Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

подсчет стажа [D7, Access]


Kley ©   (2007-11-26 21:58:00) 

Здравствуйте
подскажите может кто занимался подсчетом стажа и есть готовые наработки
задача посчитать стаж граждан
забивается период допустим 01.01.1996 по 02.02.1997 нужен
результат : 1 год 1 месяц 1 день
как реализовать?


Труп Васи Доброго(заб. пароль)   (2007-11-28 10:32:00) [1]

Правила подсчёта утверждены пенсионным фондом и пока ни один из предложенных вариантов им не соответствует. Сам писал такую программку лет 7 назад, но всё осталось у заказчика, посему кодом не поделюсь ибо нету.


Anatoly Podgoretsky   (2007-11-27 11:49:00) [2]

> Виталий Панасенко(дом)  (27.11.2007 10:24:11)  [11]

Я тоже подчеркну ПОЛНЫХлет, высчитывание полных лет не вызывает никаких проблем, кроме последней даты, включать ее или не включать, но это вопрос соглашения.


Anatoly Podgoretsky   (2007-11-27 11:38:00) [3]

> ЮЮ  (27.11.2007 09:26:10)  [10]

Я на это и намекаю, что сначала должны быть утверждены правила подсчета, для стажа третий вариант, но только не в dd.mm.yy, а в днях, для других случая нужно опять согласования правил.


Виталий Панасенко(дом)   (2007-11-27 10:24:00) [4]


> Anatoly Podgoretsky ©   (27.11.07 09:12) [8]
>
> > Виталий Панасенко(дом)  (27.11.2007 08:26:05)  [5]
>
> При этом подразумевают, что проработал не 25 лет, а около
> того.
>

Как это ? Если 100% больничный начисляется только после 8 ПОЛНЫХ лет рабочего стажа - "около того" тут, на мой взгляд, не проходит... Кроме случая "более"...И иногда до пенсии людям не хватает 1-2 месяца...Я о сумме начислений


ЮЮ   (2007-11-27 09:26:00) [5]

> Между 1 и 3
>
> а. один
> б. два
> в. три
>
> Неоднозначно когда говорим о периодах




Когда говорим о стаже работы и 1 - дата приема, 3 - дата увольнения, она же последний день работы, то совершенно однозначно (согласно последним постановлениям ВЦСПС) стаж работы = 3.

В общем случае, конечно, неоднозначно.

Для устранения неоднозначности достаточно определиться входят ли девая и правая граница интервала в подсет длительности интервала.


Anatoly Podgoretsky   (2007-11-27 09:13:00) [6]

> ЮЮ  (27.11.2007 08:56:06)  [6]

Между 1 и 3

а. один
б. два
в. три

Неоднозначно когда говорим о периодах


Anatoly Podgoretsky   (2007-11-27 09:12:00) [7]

> Виталий Панасенко(дом)  (27.11.2007 08:26:05)  [5]

При этом подразумевают, что проработал не 25 лет, а около того.


Anatoly Podgoretsky   (2007-11-27 09:11:00) [8]

> Германн  (27.11.2007 01:52:03)  [3]

> Жаль что он до сих пор не переложен на стихи.

Саботажники, ни стихов ни фото.


ЮЮ   (2007-11-27 08:56:00) [9]

> забивается период допустим 01.01.1996 по 02.02.1997 нужен
> результат : 1 год 1 месяц 1 день
> как реализовать?


Нормально - никак. Ибо в забитомпериоде - 1 год 1 месяц 2дня.


> задача посчитать стаж граждан
> забивается период


А если периодоа несколько? Будешь дни с днями опять складывать? А если их в сумме окажется 32, что делать станешь.  
Есть такая метода.
1) устанавливается "начало периода".
Для стажа, естественно, начало трудлвой леятельности.

2) при перерывах в деятельности "начало периода" корректируется на КОЛИЧЕСТВО ДНЕЙ перерыва деятельности. Твк, например, поступают с периодом, за который дается отпуск/компенсация, когда в это период вкрадываются отпуска без сохранения заработной платы.

Тогда ждя подсяета стажв на ЗАДАННУЮ ДАТУ остается подсчитать разницу медлу ЗАДАННОЙ ДАТОЙ и скорректированной датой "начало трудовой деятельности". А как считать интервал в годах, месяцах и днях обсуждалось совсем недпвно:

http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1194516434

З.Ы. Возьми методику подсчета стажа у заказчика.


Виталий Панасенко(дом)   (2007-11-27 08:26:00) [10]


> Германн ©   (27.11.07 01:52) [3]
>
>
> > Виталий Панасенко(дом)   (26.11.07 22:44) [1]
>
>
> И как тут не вспомнить "последний" $13-тый из "20 вредных
> советов".
> http://www.podgoretsky.com/DM/BadTips.html
> Жаль что он до сих пор не переложен на стихи.
> :-)

Возможно...Хотя разработчики Delphi очень уважительно относятся к ребятам, создавшим(собравшим) JEDI компоненты.. Откуда пример собственно и взят (JvDateUtil.pas)... Значит, кому-то это нужно..:-). И стаж как раз считают в годах, месяцах, днях(это не помню точно)...Говорят "проработал 25 лет", но никак не "1300 недель"


Kley   (2007-11-27 07:37:00) [11]

Спасибо понял


Германн   (2007-11-27 01:52:00) [12]


> Виталий Панасенко(дом)   (26.11.07 22:44) [1]


И как тут не вспомнить "последний" $13-тый из "20 вредных советов".
http://www.podgoretsky.com/DM/BadTips.html
Жаль что он до сих пор не переложен на стихи.
:-)


Petr V. Abramov   (2007-11-27 00:31:00) [13]

с учетом больничных, праздников, отгулов, переносов праздников, армии, нахождения в СИЗО?
> подскажите может кто занимался подсчетом стажа
кто занимался, до сих пор занимаются, потому что законы меняются

если хочешь заняться - займись, без хлеба не останешься


Виталий Панасенко(дом)   (2007-11-26 22:44:00) [14]

procedure DateDiff(Date1, Date2: TDateTime; var Days, Months, Years: Word);
{ Corrected by Anatoly A. Sanko (2:450/73) }
var
 DtSwap: TDateTime;
 Day1, Day2, Month1, Month2, Year1, Year2: Word;
begin
 if Date1 > Date2 then
 begin
   DtSwap := Date1;
   Date1 := Date2;
   Date2 := DtSwap;
 end;
 DecodeDate(Date1, Year1, Month1, Day1);
 DecodeDate(Date2, Year2, Month2, Day2);
 Years := Year2 - Year1;
 Months := 0;
 Days := 0;
 if Month2 < Month1 then
 begin
   Inc(Months, 12);
   Dec(Years);
 end;
 Inc(Months, Month2 - Month1);
 if Day2 < Day1 then
 begin
   Inc(Days, DaysPerMonth(Year1, Month1));
   if Months = 0 then
   begin
     Dec(Years);
     Months := 11;
   end
   else
     Dec(Months);
 end;
 Inc(Days, Day2 - Day1);
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо