Наборы прав по расписанию

Справочник предназначен для переопределения набора прав пользователя по заданному расписанию.
Т.е. можно указать, что у пользователей с определенным набором прав (или для всех, если ТЧ Наборы прав пустая) в указанный период присутствует или отсутствует право, не зависимо от наличия права в справочнике Наборы прав.

Дополнительный флаг очистки : {RS}

Элемент справочника загружается атрибутами тега «rights_override».

Пример загрузки:

<rights_override code="code" name="name" active="active">
@ДатаНачала 1;ДатаКонца 1;НачальноеВремя 1;КонечноеВремя 1
...
@ДатаНачала N;ДатаКонца N;НачальноеВремя N;КонечноеВремя N
~КодПрава 1;НаличиеПрава
...
~КодПрава N;НаличиеПрава
&КодНабораПрав 1
...
&КодНабораПрав N
</rights_override>

где:
code (Число (5,0) -- Код элемента
name (Строка (50))-- Наименование элемента
active (Число (1,0) -- флаг активности элемента
В теле тега построчно описывается:
Табличная часть «Расписание» (префикс @) -- определяет условие активности переопределения прав, указанных в ТЧ Права.
1. ДатаНачала (тип Дата, состав Дата) – дата с которой будет обрабатываться элемент.
2. ДатаКонца (тип Дата, состав Дата) – дата по которую будет обрабатываться элемент (не включительно, чтобы действовало до конца указанного дня нужно указать КонечноеВремя = 23:59:59).
3. НачальноеВремя (тип Дата, состав Время) – начальное время, когда начнёт обрабатываться элемент.
4. КонечноеВремя (тип Дата, состав Время) – конечное время, когда будет обрабатываться элемент.
Табличная часть «Права» (префикс ~) - определяет какие права предоставляются или запрещаются пользователю.
КодПрава (Строка 40) - код права (по формату SPR), которые переопределяются.
НаличиеПрава (Число (1,0)) -- если 1, право доступно, если 0 - право запрещается.
Табличная часть «Наборы прав» (префикс &) - определяет для каких наборов прав будет обрабатываться данный элемент. Если данная табличная часть пустая, тогда для всех наборов прав.
КодПрава (Число 5) - код набора прав.

Особенности обработки справочника

1. Если в определенный момент активны (стоит флаг Активность и выполняется условие по расписанию) несколько элементов справочника, тогда обрабатывается элемент с наибольшим кодом.
2. Если в табличной части «Права» код повторяется несколько раз с разными значениями флага «НаличиеПрава», тогда такое право игнорируется и обрабатывается стандартно, согласно наличию/отсутствию в наборе прав пользователя.
3. Начальное время и конечное время проверяется независимо от начальной даты и конечной даты.
4. Чтобы задать интервал типа с 10.11.2021 12:00:00 по 13.11.2021 21:00:00 нужно задать три строки в ТЧ «Расписание»:
@10.11.21;10.11.21;12:00:00;23:59:59
@11.11.21;12.11.21;00:00:00;23:59:59
@13.11.21;13.11.21;12:00:00;21:00:00
5. Чтобы задать интервал типа каждый день с 22:00:00 до 12:00:00 нужно задать строки в ТЧ «Расписание»:
@01.01.21;01.01.99;22:00:00;23:59:59
@01.01.21;01.01.99;00:00:00;12:00:00