|
Распределить остаток отпуска по периодам | ☑ | ||
---|---|---|---|---|
0
егаис
11.06.22
✎
15:58
|
Коллеги, не нравится код, хоть убейте.
Как бы вы решили задачу распределения остатка отпуска по периодам (для документа остатки отпусков в ЗУП) На входе общий остаток отпуска (инвентаризацию провели) и дата ввода отпуска. На примере основного отпуска. ДатаОстатковОтпусков = Дата(2022,04,30); ГраницаОкончание = ДатаОстатковОтпусков; ГраницаНачало = ?(Месяц(ДатаПриема) > Месяц(ДатаОстатковОтпусков), Дата(2021, Месяц(ДатаПриема), День(ДатаПриема)), Дата(2022, Месяц(ДатаПриема), День(ДатаПриема))); //учитываем факт, что дата приема может быть раньше 30.04, тогда отрезок за 22 год Пока ОстатокОсновной > 0 Цикл РазницаВДнях = (НачалоДня(ГраницаОкончание) - НачалоДня(ГраницаНачало)) / (60 * 60 * 24) + 1; ПоложеноОтпускаЗаПериод = 28 / 365 * РазницаВДнях; ОстатокКРаспределению = Мин(ПоложеноОтпускаЗаПериод, ОстатокОсновной); ОстатокОсновной = ОстатокОсновной - ОстатокКРаспределению; ГраницаОкончания = ГраницаНачало - 86400; ГраницаНачало = Макс(ДатаПриема, ДобавитьМесяц(ГраницаНачало, -12)); КонецЦикла; |
|||
1
Amra
11.06.22
✎
16:39
|
Выкинуть весь код нафиг. Ибо неверный алгоритм. Вот тут - ПоложеноОтпускаЗаПериод = 28 / 365 * РазницаВДнях;
А значит и все остальное в топку |
|||
2
егаис
14.06.22
✎
07:04
|
(1)хотелось бы узнать почему "весь код нафиг"?
На примере, остаток 40 дней, сотрудник принят 15.06.19 г по алгоритму Первый период равен 15.06.21 - 30.04.22, остаток по распределению = 28 / 365 * 285 = 21,86 |
|||
3
егаис
14.06.22
✎
07:05
|
Второй период 15.06.20 - 14.06.21, остаток = мин(18.14, 28 / 365 * 365) = 18.14
|
|||
4
hhhh
14.06.22
✎
09:27
|
(3) но вы сами придумали эту формулу? По законодательству ведь другие цифры. И там дробей вообще нет. Например, человек отгулял 10 дней за рассматриваемый период, всего за период положено 28 дней, значит, ему осталось 18 дней. Откуда у вас дроби взялись. Да еще 14 сотых.
|
|||
5
егаис
14.06.22
✎
09:33
|
(4) дроби вторичны, можно и округлить, не суть.
Задача раскидать остаток отпуска по годам от обратного. Поэтому и спрашиваю, что не уверен. |
|||
6
егаис
14.06.22
✎
09:36
|
сам код рабочий, вопросов нет. Сам подход насколько верен, это интересует
|
|||
7
pavlika
14.06.22
✎
09:56
|
Где проверка, что одна часть отпуска не меньше 14 дней? Где проверка на отпуска за свой счет свыше 14 дней, прогулы и отпуска по уходу, которые увеличиват рабочиц год?
|
|||
8
pavlika
14.06.22
✎
10:11
|
||||
9
SleepyHead
гуру
14.06.22
✎
10:19
|
А чем стандартный алгоритм не устраивает?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |