# Настройка оповещений пользователей

Инструмент предназначен для отправки пользователям информационных сообщений.

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

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

Путь: `Настройки системы > Настройки и сервисы > Настройка оповещений пользователей`.

**Общая схема работы**  

1. Создайте объект настройки.
2. Заполните поля **Код**, **Наименование**.
3. Заполните основные параметры настройки:
   - **Текст оповещения**;
   - **Дата начала**;
   - **Дата окончания**.
4. Определите область действия настройки:
   - включите параметры **Для всех пользователей** и **Для всех приложений**;
   - или заполните вкладки **Список пользователей**, **Список ролей**, **Список профилей** и **Список приложений**.
5. Запустите настройку действием **Выполнить**.

## Как работает оповещение

Оповещение отправляется однократно в рамках одного запуска настройки.

При запуске настройки система формирует сообщение, помещает его в RabbitMQ и переводит настройку в состояние **Отправлено уведомление**.

Дальнейшая доставка сообщения зависит от состояния пользовательского приложения:

- если пользователь находится в системе сообщение приходит сразу;
- если пользователь не находится в системе, то сообщение поступит при следующем подключении, если срок действия настройки еще не истек;
- если на момент подключения пользователя **Дата окончания** уже наступила, сообщение пользователю не показывается.

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

## Основные параметры настройки

В карточке объекта задаются основные параметры оповещения. Также доступны вкладки для выбора пользователей, ролей, профилей и приложений.

В шапке карточки отображаются общие поля объекта:

- **Код** — уникальный код настройки.
- **Наименование** — название настройки.
- **Тип объекта** — тип настройки. 
- **Состояние** — поле, которое показывает текущий этап обработки настройки. Поле заполняется системой автоматически и не редактируется вручную.

![alt text](/service/img_serv/notifications.png)

### Параметры карточки

- **Для всех пользователей** — при включении настройка применяется ко всем пользователям системы.  
  При выключении настройка действует только для пользователей, ролей и профилей, указанных на вкладках **Список пользователей**, **Список ролей** и **Список профилей**.
- **Для всех приложений** — при включении настройка действует для всех приложений.  
  При выключении настройка действует только для приложений, указанных на вкладке **Список приложений**.
- **Немедленно** — при включении настройка активируется сразу после запуска действия **Выполнить**.  
- **Дата начала** — дата и время, когда настройка должна быть активирована, если выключен параметр **Немедленно**.
- **Дата окончания** — дата и время, после которых настройка автоматически прекращает действовать.
- **Текст оповещения** — сообщение, которое пользователь увидит в приложении.

### Списки пользователей, ролей и профилей

На вкладках **Список пользователей**, **Список ролей** и **Список профилей** указываются целевые пользователи, роли и профили.

Эти вкладки заполняются, если выключен параметр **Для всех пользователей**.

### Список приложений

На вкладке **Список приложений** указываются приложения, для которых действует настройка.

Эта вкладка заполняется, если выключен параметр **Для всех приложений**.

## Применение настройки

Для запуска настройки нажмите **Выполнить**.

Действие **Выполнить** запускает обработку настройки. В рамках этой обработки система отправляет сообщение в RabbitMQ один раз:

- Если параметр **Немедленно** включен, система сразу отправляет сообщение пользователю и переводит настройку в состояние **Отправлено уведомление**.
- Если параметр **Немедленно** выключен, настройка переводится в состояние **Запланировано**. Отправка уведомления выполняется фоновым заданием планировщика при наступлении **Даты начала**. В этот момент система отправляет сообщение в RabbitMQ и переводит настройку в состояние **Отправлено уведомление**.

После отправки сообщения система контролирует **Дату окончания**. Если срок действия настройки истек, новые подключения пользователей уже не приводят к показу этого сообщения.

## Отключение настройки

По умолчанию настройка прекращает действовать автоматически после наступления **Даты окончания**.

- Для отключения настройки вручную в карточке нажмите **Отключить настройку**.  
  Настройка перейдет в состояние **Отменено**.
- Чтобы вернуть настройку в исходное состояние, нажмите **Откатить настройку в начальное состояние**.  
  Настройка перейдет в состояние **Формируется** и будет доступна для повторного запуска.