# mail_report

В базе данных Ally настройки почтовых отчетов и служебных рассылок хранятся в таблице mail\_report.

[![image.png](https://bookstack.ally.software/uploads/images/gallery/2026-06/scaled-1680-/XYfimage.png)](https://bookstack.ally.software/uploads/images/gallery/2026-06/XYfimage.png)

Описание полей таблицы mail\_report:

<table border="1" id="bkmrk-%D0%9F%D0%BE%D0%BB%D0%B5-%D0%A2%D0%B8%D0%BF-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-not-" style="width: 100%;"><tbody><tr><th style="background-color: rgb(206, 212, 217); width: 11.7429%;">Поле

</th><th style="background-color: rgb(206, 212, 217); width: 11.9901%;">Тип данных

</th><th style="background-color: rgb(206, 212, 217); width: 5.93203%;">Not null

</th><th style="background-color: rgb(206, 212, 217); width: 63.7837%;">Описание

</th><th style="background-color: rgb(206, 212, 217); width: 6.5513%;">Ключ

</th></tr><tr><td style="width: 11.7429%;">id

</td><td style="width: 11.9901%;">serial4

</td><td style="width: 5.93203%;">X

</td><td style="width: 63.7837%;">Уникальный идентификатор запроса

</td><td style="width: 6.5513%;">X

</td></tr><tr><td style="width: 11.7429%;">name

</td><td style="width: 11.9901%;">varchar(255)

</td><td style="width: 5.93203%;">X</td><td style="width: 63.7837%;">Название отчета</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">query

</td><td style="width: 11.9901%;">text

</td><td style="width: 5.93203%;">  
</td><td style="width: 63.7837%;">SQL-запрос, который выполняется при запуске отчета

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">jsonata

</td><td style="width: 11.9901%;">text

</td><td style="width: 5.93203%;"></td><td style="width: 63.7837%;">JSONata-выражение для обработки, преобразования или подготовки данных, полученных из запроса

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">template

</td><td style="width: 11.9901%;">text

</td><td style="width: 5.93203%;"></td><td style="width: 63.7837%;">Шаблон для формирования

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">client

</td><td style="width: 11.9901%;">varchar(255)

</td><td style="width: 5.93203%;"></td><td style="width: 63.7837%;">Клиент для которого используется отчет

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">createdAt

</td><td style="width: 11.9901%;">timestamptz

</td><td style="width: 5.93203%;">X</td><td style="width: 63.7837%;">Дата и время создания записи

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">updatedAt

</td><td style="width: 11.9901%;">timestamptz

</td><td style="width: 5.93203%;">X</td><td style="width: 63.7837%;">Дата и время последнего обновления записи

</td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">schema

</td><td style="width: 11.9901%;">jsonb

</td><td style="width: 5.93203%;">  
</td><td style="width: 63.7837%;"></td><td style="width: 6.5513%;">  
</td></tr><tr><td style="width: 11.7429%;">form

</td><td style="width: 11.9901%;">text

</td><td style="width: 5.93203%;"> </td><td style="width: 63.7837%;"> </td><td style="width: 6.5513%;">  
</td></tr></tbody></table>

#### Как запускаются отчеты

Запросы вызываются из Node-RED, вкладка "Рассылка почтовых отчетов**"**.

[![image.png](https://bookstack.ally.software/uploads/images/gallery/2026-06/scaled-1680-/DAYimage.png)](https://bookstack.ally.software/uploads/images/gallery/2026-06/DAYimage.png)

Запуск возможен двумя способами:

- автоматически - каждые 30 минут;
- вручную - через узел "Ручная рассылка**"**.

Для ручного запуска нужно указать одинаковый параметр:

- в узле "Ручная рассылка**"**;
- в поле `group` таблицы `mail_report_schedule` (таблица используется для расписания этих запросов).

Например:

```
["SEND_DIFF"]
```

[![image.png](https://bookstack.ally.software/uploads/images/gallery/2026-06/scaled-1680-/KYsimage.png)](https://bookstack.ally.software/uploads/images/gallery/2026-06/KYsimage.png)


#### Проверка запускаемого отчета

Проверить, какой отчет будет запущен, можно через запрос из узла SELECT reports.

В запросе `$1` — это параметр, переданный из узла "Ручная рассылка". Например: `<span class="text-token-text-primary cursor-text rounded-sm" data-placeholder-token="true">["SEND_DIFF"]</span>`.

```sql
select mr.*, mrs.settings || jsonb_build_object('name', mrs.name) settings
from mail_report mr 
join mail_report_schedule mrs on mrs.report_id = mr.id
where (mrs.day_of_month is null 
	or extract(day from current_date)::varchar = any (string_to_array(mrs.day_of_month, ','))
	or date_part('day', current_date - (date_trunc('month', current_date) + interval '1 month'))::varchar = any (string_to_array(mrs.day_of_month, ','))
  )
  and (mrs.month is null or extract(month from current_date)::varchar = any (string_to_array(mrs.month, ',')))
  and (mrs.day_of_week is null or extract(isodow from current_date)::varchar = any (string_to_array(mrs.day_of_week , ',')))
  and ("group" @> ('"' || $1 || '"')::JSONB or 'DIRECT:' || mrs.id = $1)
```


#### Пример использования

Пример запроса для отправки пушей можно посмотреть в mail\_report "Рассылка старшим уведомлений о расхождениях".