Документация iSZN

Класс роли (техническая информация)

Определение периода пребывания человека в коллективе выполняется с помощью функции расчёта периодов пребывания экземпляра роли в коллективе. Эта функция представляет собой анонимный блок PL/SQL и возвращает в параметре :RESULT попарно даты начала и окончания периода пребывания в коллективе. Система пользуется при работе с функциями расчёта периода следующими правилами:

  • Если в параметре :RESULT возвращается значение null, то считается, что человек не имеет периодов пребывания в коллективе.
  • Если функция возвращает пересекающиеся периоды, то они автоматически объединяются Системой в один.
  • Если функция возвращает дату начала периода, которая следует раньше даты рождения человека, то эта дата заменяется датой рождения человека. Дата рождения человека выбирается из кеша персональных реквизитов.
  • Если функция возвращает дату окончания периода, которая следует позже даты смерти человека (даты снятия с учёта), то эта дата заменяется датой смерти человека (датой снятия с учёта). Дата смерти или дата снятия с учёта (см. персональные документы «Свидетельство о смерти» или «Отметка о снятии с учёта») выбираются из кеша персональных реквизитов.

Функция расчёта периодов пребывания экземпляра роли в коллективе использует следующие параметры:

Имя Описание
:RESULT Результат работы в виде:
<Дата_с1>,<Дата_по1>,<Дата_с2>,<Дата_по2>,....
REGION Идентификатор района человека, для которого рассчитывается период пребывания в коллективе.
PIC_ID Идентификатор экземпляра роли коллектива.
PEOPLE_ID Идентификатор человека, для которого рассчитывается период пребывания в коллективе.
COLL_ID Идентификатор коллектива, для которого рассчитывается период пребывания человека.
ROLE_CLASS Идентификатор класса роли.
COLL_CLASS Идентификатор класса коллектива.

Пример функции расчёта периода:

begin
  :RESULT := '01.01.0001,31.12.9999';
end;

Эта функция возвращает период с 01.01.0001 по 31.12.9999. В случае если функция вызвана для человека, у которого дата рождения 01.01.1970 и не указана дата смерти (дата снятия с учёта), Система заменит дату 01.01.0001 датой 01.01.1970 (так как дата начала периода следует раньше даты рождения человека) и будет считать, что человек находится в коллективе пожизненно. Если бы для человека была указана дата смерти (дата снятия с учёта), то период пребывания в коллективе был бы ограничен датой смерти (датой снятия с учёта), так как дата окончания периода следует после даты смерти (даты снятия с учёта).

Редактирование текста функции

Текст функции расчёта периодов пребывания экземпляра роли в коллективе вводится на вкладке «Функция расчёта периодов пребывания» диалога свойств класса коллектива (справочник «Классы коллективов»).

См. также