Как работать с «Журналом событий» в 1С-Битрикс: подборка рецептов

В статье собраны «рецепты» — готовые инструкции с примерами кода — для вывода истории из журнала событий Bitrix на сайте. Все рецепты можно варьировать и дополнять по своему усмотрению.

Как вывести историю из «Журнала событий» в 1С-Битрикс

Рецепт 1. Быстрый просмотр через админ-панель

Ингредиенты:

  • Доступ к административной части сайта.
  • Разрешения на просмотр журнала событий.

Приготовление:

  1. Перейдите в админ-панель, чаще всего по адресу: http://ваш_сайт/bitrix/admin/.
  2. Откройте раздел «Настройки» → «Инструменты» → «Журнал событий» (или «Настройки» → «Журнал событий» в зависимости от версии).
  3. Просмотрите события (например, авторизацию пользователей, изменения контента и т. д.) прямо через встроенный интерфейс. Здесь можно быстро оценить актуальное состояние, не трогая публичную часть.

Комментарий шефа: Это самый простой способ «пробовать» журнал событий, но он не подходит, если нужно вывести логи прямо на пользовательской странице сайта.

Рецепт 2. Вывод журнала на публичной странице с помощью CEventLog

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

Шаг 2.1: Базовая структура файла

Создайте, к примеру, файл /logs/index.php (или любую другую страницу) и добавьте следующий код:

<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// Устанавливаем заголовок (не обязательно, но полезно)
global $APPLICATION;
$APPLICATION->SetTitle("Журнал событий (пример)");

// Подключаем класс
use Bitrix\Main\Loader;
Loader::includeModule("main");

// Параметры сортировки
$arOrder = ["ID" => "DESC"];

// Параметры фильтра
$arFilter = [
    // Пример фильтрации по типу события
    "AUDIT_TYPE_ID" => "USER_AUTHORIZE",
    // Пример фильтрации по дате, начиная с 1 января 2025
    ">=TIMESTAMP_X" => "01.01.2025",
];

// Нет группировки и произвольные настройки пагинации
$arGroupBy = false;
$arNavStartParams = [
    "nPageSize" => 10, // Количество записей на странице
    "bShowAll"  => false
];

// Получаем объекты из журнала
$rsLogs = CEventLog::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams);

// Выводим результат
while ($arLog = $rsLogs->Fetch()) {
    echo "<div style='border:1px solid #ccc; margin-bottom:10px; padding:10px;'>";
    echo "<strong>Дата:</strong> " . $arLog["TIMESTAMP_X"] . "<br>";
    echo "<strong>Пользователь:</strong> " . $arLog["USER_ID"] . "<br>";
    echo "<strong>Тип события:</strong> " . $arLog["AUDIT_TYPE_ID"] . "<br>";
    echo "<strong>Описание:</strong> " . $arLog["DESCRIPTION"];
    echo "</div>";
}

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
?>

Комментарий шефа:

  • В фильтре можно менять параметры — так вы легко показываете логи только определенного типа или за конкретный период.
  • Если нужно, чтобы на странице был вывод всех типов событий, удалите или скорректируйте AUDIT_TYPE_ID в фильтре.
  • Дата в фильтре может быть заменена на динамическое значение (например, прошлый месяц).

Шаг 2.2: Расширенный пример с несколькими типами событий

Чтобы отобразить сразу несколько типов аудита (например, авторизация и выход пользователя), можно использовать конструкцию:

$arFilter = [
    "AUDIT_TYPE_ID" => [
       "USER_AUTHORIZE",
       "USER_LOGOUT"
    ],
];

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

Шаг 2.3: Пагинация и навигация

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

<?php
// ...
$arNavStartParams = ["nPageSize" => 5];
$rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);

// Выводим
while ($arLog = $rsLogs->Fetch()) {
    echo "<p>Запись ID: " . $arLog["ID"] . " | Дата: " . $arLog["TIMESTAMP_X"] . "</p>";
}

// Теперь выводим ссылки для перехода по страницам
echo $rsLogs->NavPrint("События");
?>

Комментарий шефа:

  • $rsLogs->NavPrint("События") выведет стандартный блок с номерами страниц.
  • Строка «События» — это текст, который будет выведен рядом с навигационными ссылками.

Рецепт 3. Компонент для повторного использования

Если планируется гибкая верстка или многократное применение функционала, лучше создать собственный компонент. Структура может быть такой:

  1. Создайте каталог компонента: local/components/my/eventlog/
  2. Внутри него — файл component.php с логикой работы:
  3. <?php
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    use Bitrix\Main\Loader;
    
    Loader::includeModule("main");
    
    $arOrder = ["ID" => "DESC"];
    $arFilter = [
       "AUDIT_TYPE_ID" => "USER_AUTHORIZE"
    ];
    
    $arNavStartParams = [
       "nPageSize" => 10
    ];
    
    $rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);
    
    $arResult = [];
    while($arLog = $rsLogs->Fetch()) {
       $arResult[] = $arLog;
    }
    
    // Подготавливаем данные для вывода
    $this->arResult = $arResult;
    
    // Подключаем шаблон
    $this->includeComponentTemplate();
    ?>
  4. Файл шаблона template.php (внутри templates/.default/):
  5. <?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); ?>
    
    <h2>Журнал событий (пример компонента)</h2>
    <?php foreach($arResult as $logItem): ?>
       <div>
           <strong>Дата:</strong> <?= $logItem["TIMESTAMP_X"] ?><br>
           <strong>Описание:</strong> <?= $logItem["DESCRIPTION"] ?><br>
       </div>
       <hr>
    <?php endforeach; ?>
  6. Подключите компонент в любой странице сайта (или в шаблоне):
  7. <?$APPLICATION->IncludeComponent(
       "my:eventlog",
       "",
       []
    );?>

Комментарий шефа:

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

Рецепт 4. Фильтрация и безопасность

Вывод журнала событий на публичной части потенциально несет риск утечки конфиденциальной информации. Поэтому:

  1. Проверяйте права доступа: кто может просматривать эти логи?
    • Используйте if (!$USER->IsAdmin()) { LocalRedirect('/'); } или настраивайте группы пользователей с соответствующими правами.
  2. Ограничивайте количество данных:
    • Не всегда нужно показывать полный лог (особенно если он содержит чувствительные данные). Применяйте фильтры по датам и типам событий.
  3. Производительность:
    • При большом объеме записей ограничивайте вывод (параметр nPageSize) и/или используйте дополнительные условия.

Итог

  • Рецепт 1: Быстро просмотреть логи через админ-панель.
  • Рецепт 2: Создать публичную страницу, в которой с помощью CEventLog::GetList получаются и выводятся нужные данные.
  • Рецепт 3: Организовать вывод логов через собственный компонент — наиболее гибкий вариант для постоянного использования.
  • Рецепт 4: Не забывать про безопасность, права доступа и фильтрацию.

С этими рецептами вы без труда сможете отобразить историю из «Журнала событий» 1С-Битрикс на своем сайте, обеспечив при этом удобство просмотра и сохранность конфиденциальных данных.

Пример кода с прологом и эпилогом (для публичной страницы)

Чтобы закрепить материал, вот базовый пример целостного файла с корректным подключением пролога и эпилога:

<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

/* Ваш код здесь */
use Bitrix\Main\Loader;
Loader::includeModule("main");

$arOrder = ["ID" => "DESC"];
$arFilter = ["AUDIT_TYPE_ID" => "USER_AUTHORIZE"];
$arNavStartParams = ["nPageSize" => 10];

$rsLogs = CEventLog::GetList($arOrder, $arFilter, false, $arNavStartParams);
while ($arLog = $rsLogs->Fetch()) {
    echo "<p>[" . $arLog["ID"] . "] " . $arLog["TIMESTAMP_X"] . " — " . $arLog["DESCRIPTION"] . "</p>";
}

require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
?>

Готово! Теперь вы знаете несколько способов вывести логи и сможете легко адаптировать решения под ваши задачи в Bitrix. Приятной разработки!

Теги:  журнал событий, вывод истории, Bitrix, CEventLog, админ-панель, компоненты Bitrix

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Участие в проекте

привлечение в проект на part-time основе

от 20 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Техническая поддержка

выполняется с сайтами на основе любых CMS

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

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.