Сергей, я увидела по приведенному Вами коду, что разработчик берет инфо о контракте из Appointments, и тоже взяла оттуда )
Данные по предыдущим контрактам можно получить пробежав по appointments в обратном порядке.
Ранее я написала не об этом. Приведу пример. Сотрудник может быть на назначении по РПД на перевод более 5 лет, пусть 8 лет. Когда его переводили на это назначение, с ним заключили контракт №1 на 2 года. По истечении 2 лет этот контракт могут продлить на 1 год/ 2 года/3 года. По истечении продленного контракта его могут продлить на 2 года / 1 год/ заключить новый контракт №2. Т.е. при назначении длительностью > 5 лет фактически сотрудник может проработать более чем на одном контракте, т. к. продление можно делать только в общей сложности до 5 лет (2 + 2 + 1, или 1 + 3 + 1, или 3 + 2, и т. д.), а после 5 лет заключается новый контракт.
И работа по этим обоим контрактам будет в пределах одного назначения. Если мы распечатаем приказ на перевод в таком примере (который был 8 лет назад), то в назначении будет инфо о последнем контракте, а не о том, который был при оформлении приказа на перевод. Хотя кто-то может возразить, что приказы очень задними датами печатать не будут )
Тогда на мой взгляд правильно спуститься в историю назначения на нужную дату, и инфо о контракте взять из связи истории назначения и SpAllStaff.
Конечно мой пример работает, если условия контракта остаются неизменными. Если условия контракта меняются, то изменение могут сделать созданием новой ставки в ШР и приказом на перевод сотрудника на новую ставку. Тогда, конечно, предыдущее назначение будет на период не менее 5 лет и будет действовать один контракт, а после перевода будет действовать другой контракт.
И по поводу приведенного Вами объекта AppointmentsFunctions. Думаю, что его не всегда будет правильно использовать. Приведенный метод работает, если у сотрудника только основное назначение. А, если сотрудник работает под 2 тн (основной и внутреннее совместительство), то контракты заключаются по каждому назначению, а в указанном методе нет параметра со ссылкой на л/сч или тн или вид назначения.
Возможно в РФ контракты заключаются по-другому.
Сергей, еще раз спасибо за Ваш ответ!!! Я очень благодарна за Ваше внимание. Выше я просто привела свои мысли по заключению контрактов.