# Трассировка прав доступа

Трассировка прав доступа используется для диагностики проверок прав в рамках выбранной пользовательской сессии. Она позволяет отследить, какие проверки выполнялись при действиях пользователя.

Для анализа изменений ролей, профилей и назначений пользователей см. раздел [«Аудит прав доступа»](https://help.globalerp.ru/books/GlobalUserGuideSystemWide/SNAPSHOT/html/service/010_audits_journals/02_%D0%90%D1%83%D0%B4%D0%B8%D1%82%D1%8B_%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8/050_%D0%90%D1%83%D0%B4%D0%B8%D1%82_%D0%BF%D1%80%D0%B0%D0%B2_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0.html).

## Запуск трассировки

1. Перейдите в раздел `Сервис` > `Инструменты`.
2. Выберите операцию `Начать трассировку прав`.
3. Выполните необходимые действия в системе — в этот момент система будет отслеживать проверки прав.
4. Для завершения выберите операцию `Закончить трассировку прав` в том же меню.

## Отчёт сессии трассировки

Отчёт `Сессии трассировки прав пользователей` доступен в приложении `Администратор`, меню `Отчеты`.

Отчёт отображает список сессий трассировки. При открытии карточки сессии в детализации выводится подробная информация по проверкам прав, вызванным в ходе этой сессии.

## Очистка записей

Сессии сохраняются в таблице `Btk_AcTraceSession`, а детализация — в `Btk_AcTraceJournal`.

По умолчанию зарегистрировано задание очистки для класса `Btk_AcTraceSession`, удаляющее записи старше 30 дней.

## Реализация трассировки

**При запуске трассировки:**
- в параметрах рабочей сессии сохраняется параметр активности трассировки;
- в логирующей транзакции создаётся запись в `Btk_AcTraceSession`;
- сохраняется идентификатор сессии трассировки;
- для открытых выборок подключается подписка на события;
- при открытии новой выборки подписка также подключается в `onLoadAdminMeta`.

**При действиях пользователя:**
- на методах проверки прав, при вызове операции или сеттера на администрируемых выборках создаётся запись в `Btk_AcTraceJournal`.

**При завершении трассировки:**
- вызывается коммит логирующих транзакций со всех сессий выборок;
- в `Btk_AcTraceSession` сохраняется дата завершения;
- отключается подписка на события;
- из параметров рабочей сессии удаляются параметры активности и идентификатор сессии.