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

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

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

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

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

Имя Описание
:RESULT Результат работы в виде:
<Дата_с1>,<Дата_по1>,<Дата_с2>,<Дата_по2>,....
PC_ID Идентификатор человека или коллектива, для которого рассчитывается категория.
PC_REGION Идентификатор района человека или коллектива.
CAT_ID Идентификатор рассчитываемой категории.
CAT_REGION Идентификатор района рассчитываемой категории.
PCT_ID Идентификатор человека (роли коллектива), для которого вызвана функция расчёта (используется для функций, вызываемых для каждой роли коллектива).
PCT_CLASS Идентификатор класса роли человека PCT_ID (используется для функций, вызываемых для каждой роли коллектива).

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

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

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

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

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

См. также