Обработка при выходе и входе

Здравсвуйте! Есть кастомный раздел, в него необходимо добавлять данные(пользователь, дата начала сеанса) пользователя при входе в систему, а при выходе изменять эту запись(изменять, точнее заполнять, дату завершения), каким образом это можно сделать?
Делал я через бп, где устанавливал два события получения сигнала от объекта Сеанс пользователя, когда запускаешь просто БП без сигнала с нахождением пользователя у которого дата завершения не заполнена, данные заполняются, а когда выходишь-входишь в систему...по логике должно вызываться сигнал...но ничего не происходит

Нравится

3 комментария

Добрый день! Данная функциональность реализована в представлении Пользователей системы - https://prnt.sc/snx8dg

Нигрескул Алексей, Я понимаю, там и смотрел, эта деталь ссылается на объект Сеанс пользователя, про который и писал...

Егор, не всегда вставка в таблицу данных идёт так, что срабатывает логика на уровне БП. Например, если вставлять по ESQ или элементом процесса, то срабатывает, а если серверным классом Insert или напрямую через базу, то нет. Аналогично и с изменением и удалением. В стандартном механизме логина в систему в ядре используется именно Insert для начала сессии и Update для её завершения.

 

Для того, что хотите Вы сделать, можно предусмотреть запуск БП по таймеру, который будет обрабатывать все новые сессии с момента прошлого своего запуска.

 

Ещё можно сделать на уровне триггера в базе на таблице SysUserSession, но так есть риск снижения производительности системы, поскольку с таблицей активно работают, особенно, если есть интеграции.

 

Либо вообще не делать отдельную сущность, а настроить в своём разделе отображение той стандартной детали, о которой писал Алексей. А если нужно совмещать с другими данными, то смотреть в сторону создания view в базе и объекта по нему.

 

Показать все комментарии