Документация 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 (так как дата начала периода следует раньше даты рождения человека) и будет считать, что человек находится в коллективе пожизненно. Если бы для человека была указана дата смерти (дата снятия с учёта), то период пребывания в коллективе был бы ограничен датой смерти (датой снятия с учёта), так как дата окончания периода следует после даты смерти (даты снятия с учёта).
Редактирование текста функции
Текст функции расчёта периодов пребывания экземпляра роли в коллективе вводится на вкладке «Функция расчёта периодов пребывания» диалога свойств класса коллектива (справочник «Классы коллективов»).