Виды стажа: + стаж в компании + стаж сотрудника + время в декрете 1..N + стаж без декрета + стаж без декрета и легкой + поздравления 5/10 лет + годовой бонус ==================================================== Функция расчета стажей. Параметры: - физлицо - дата Вовзращает таблицу стажей: - физлицо - вид стажа - лет - месяцев - дней - представление (лет/месяцев/дней) ==================================================== Получение стажей происходит в двух процессах: 1. Атоматический расчет стажа на текущую дату (стажи видно в справочнике Сотрудники вместе с типовыми стажами). Перед автоматическим расчетом очищаются все записи по стажам. 2. Произвольное использование функции с передачей физлица и даты ==================================================== Понятия: ДатаФормирования - дата, на которую рассчитывается стаж ГодДатыФормирования - это период год относительно ДатаФормирования, например 01.01.19 - 31.12.19 ДатаПриема_Свойство - дата приема сотрудника, указанная в доп свойстве ДатаПриема_Документ - дата приема сотрудника по длокументу Прием ==================================================== Алгоритм расчета стажей: 1. СТАЖ "Стаж сотрудника" РЕЗУЛЬТАТ = ДатаФормирования - ДатаПриема_Документ 2. СТАЖ "Стаж в компании" Если заполнено ДатаПриема_Свойство Тогда РЕЗУЛЬТАТ = ДатаФормирования - ДатаПриема_Свойство иначе РЕЗУЛЬТАТ = ДатаФормирования - ДатаПриема_Документ 3. СТАЖ "Время в декрете 1..N". У сотрудника может быть несколько таких стажей, т.к. он несколько раз мог быть в декрете. Соответственно надо соблюдать нумерацию от самого раннего, т.е. - Время в декрете 1 - Время в декрете 2 .. - Время в декрете 5 (условим что это максимум) Рассчитывается следующим образом: а) Получаем работающих физлиц, которые были в декрете - состояние ОтпускПоУходуЗаРебенком - состояние ОтпускПоБеременностиИРодам б) Сворачиваем таблицу следующим образом: - если сначала был ОтпускПоБеременностиИРодам, а потом ОтпускПоУходуЗаРебенком, тогда склеиваем эти периоды в одну строку с объединением ДатыНачала в) Удаляем строки, по которым в регистраторе ОтпускаПоУходуЗаРебенком нет начислений г) для состояния ОтпускПоБеременностиИРодам устанавливаем дату окончания - текущую дату д) высчитываем новую колонку "ДатаВыходаИзДекрета". Если в период декрета был документ изменения, тогда берем новую дату окончания от него. Например если вышли в отпуск по уходу, а потом его продлили. Или был возврат из отпуска. - Документ.ВозвратНаРаботуОрганизаций - Документ.ИзменениеУсловийОплатыОтпускаПоУходуЗаРебенком е) Убираем из итоговой таблицы фиктивные отпуска, а именно те строки, в которых с даты начала до даты выхода прошло до 3-х дней включительно. ж) РЕЗУЛЬТАТ = //Наоборот Если ДатаВыхода > ДатаФормирования Тогда рассчитываем с ДатаНачалаДекрета по ДатаВыходаИзДекрета Если ДатаВыхода < ДатаФормирования Тогда рассчитываем с ДатаНачалаДекрета по ДатаФормирования 4. СТАЖ "Стаж без декрета" //Стаж в компании без декрета РЕЗУЛЬТАТ = "Стаж в компании" - "Время в декрете 1..N" //Сумма(Время в декрете 1..N) 5. СТАЖ "стаж без декрета и легкой" а) Рассчитываем колонку "ДатаНачачалаЛегкойРаботы" Заполняется если сотрудник перед декретом начинал работать на легкой должности (признак должности "nt_ЛегкийТруд") (Начало легкой работы в промежутке 9 месяцев до декрета) б) Рассчитываем колонку "ЛегкаяРаботаВДнях" Между "ДатаНачачалаЛегкойРаботы" и "ДатаНачалаДекрета" в) РЕЗУЛЬТАТ = СтажВКомпанииДнях - ВремяВДекретеВДнях - ЛегкаяРаботаВДнях 6. СТАЖ "Поздравления 5/10 лет" РЕЗУЛЬТАТ = "Стаж без декрета" в одном из промежутков - МЕЖДУ 1770 И 2190 (5 лет) - МЕЖДУ 3570 И 3990 (10 лет) 7. СТАЖ "Годовой бонус" //добавить сотрудников, еслт есть бользни/отсутствия в текущем году больше 45 дней одним отрезком Варианты: а) Декретницы с датой начала или датой выхода в ГодДатыФормирования РЕЗУЛЬТАТ = Время работы за год (30*12) - Время в декрете //Если не вышли из декрета, то ноль, у остальных тогда просто 1 год. б) Сотрудники, принятые на работу в ГодДатыФормирования //Если не будет даты формирования то до конца года РЕЗУЛЬТАТ = время работы в ГодДатыФормирования с ДатаПриема_Документ