Наконец-то осилил 6 билет по СПР. Программный перерасчёт не делал, т.к. ещё не въезжаю что это и зачем.
Итак, 1 - в условии задачи сказано что возможен обмен автомобилями. По сути здесь у нас автомобили это подразделения. А слово обмен говорит нам, что совместительство невозможно. Т.е. не может человек одновременно ездить на 2 автомобилях, поэтому кидаем автомобиль в реквизит РР.
2 - все сотрудники работают по графику, индивидуальному для каждого автомобиля. Значит автомобили - это и есть графики. Добавляем соотв. измерение в РС графики работы
3 - Не зависимо от отработанного времени сотрудникам предприятия ежемесячно выплачивается фиксированная сумма денег. Размер суммы одинаков для всех сотрудников и не меняется в течение расчетного периода. Это значит что у нас есть произвольное начисление, которое вообще живёт само по себе. Поэтому кидаем это начисление в ДопНачисления, где у нас никакого периода действия нет. Насчёт фикс. суммы - можно добавить константу, туда пихать число и когда юзер будет набивать нашу фиксу, тупо подтягивать значение из константы. Но я не стал заморачиваться.
4 - Сотруднику предприятия выплачивается надбавка, рассчитываемая как общая сумма оплат пассажиров за прошлый месяц, полученная сотрудником, умноженная на определенный процент. Здесь очень хитрое условие. На мой взгляд задача по СПР должна и решаться механизмами СПР, особенно если в условии явно ничего не указано. Ну или как проще. Поэтому я замутил обычный вид расчета "Оплата пассажиров" и беру его как базу. Это очень удобно. Не нужно городить лишний регистр, можно связать сумму оплат пассажиров и автомобиль, на котором наш сотрудник рубил капусту. Одним словом БАЗА.
5 - Значение процента для надбавки может изменяться не чаще, чем один раз в месяц. В информационной базе необходимо хранить историю его изменения. Тоже всё понятно - делаем РС с периодичностью месяц и при расчёте базы, аккуратненько подтягиваем этот процент.
6 - Один календарный месяц в году сотрудникам предоставляется оплачиваемый отпуск, размер которого определяется как количество дней отпуска, умноженное на среднюю дневную ставку. Тут честно говоря, можно словить вакуум от слов "размер" и "определяется", поэтому я забил. Делаем вид расчета отпуск и пусть пользователь вручную его вбивает, с какого и по какое число. Причем какой автомобиль будет указан - неважно. Лишь бы под него была заполнена пятидневка.
7 - Дни отпуска рассчитываются по пятидневному графику. Тут у нас отвисает пачка, мы начинаем нервничать, но не стоит. Решение красивое и простое. Помните, что у нас графики по автомобилям делаются? Логично что никакой автомобиль "пятидневка" или доп.измерение нам городить не нужно и вот почему. Легким движением руки, добавляем второй ресурс пятидневка в наш РС графики работы. И заполняем его всегда программно! Т.е. сб и вс у нас выходные по пятидневке. Всегда. Для всех. Даже если у автомобиля какой-то свой непонятный график, по пятидневке у него своё значение
8 - Средняя дневная ставка определяется как сумма всех начислений за три предыдущих месяца /на кол-во отработанных дней за пред. 3 месяца. Тут всё понятно - используем базу, считать её придётся из 2-х регистров расчета. Не забываем, что отпуск у нас рассчитывается по пятидневке, значит именно по ней мы должны подцепить данные об отработанном времени за пред. 3 месяца
9 - Следует учесть, что данные об отпуске не могут вводиться в систему задним числом. Отлично! Механизм сторнирования не нужно делать!
В принципе всё!