Создание и ведение электронного журнала учёта операций по опубликованию раскрываемой информации на сайте CMS «Битрикс»
1. Цели и задачи журнала
Цель: обеспечить прозрачный и контролируемый учёт всех операций, связанных с публикацией/изменением раскрываемой информации на сайте.
Задачи:
-
фиксировать дату, время и автора каждой операции;
-
сохранять предыдущие версии опубликованных материалов;
-
обеспечивать возможность аудита и восстановления данных;
-
формировать отчёты по запросам контролирующих органов.
2. Технические требования
Необходимые компоненты:
-
CMS «1С‑Битрикс: Управление сайтом» (версия не ниже 18.0);
-
права администратора на сайте;
-
доступ к файловой системе и БД сайта;
-
PHP 7.4+ (рекомендуется 8.0+).
3. Этапы реализации
Шаг 1. Создание инфоблока для журнала
-
В админ‑панели: Контент → Инфоблоки → Типы инфоблоков.
-
Создайте новый тип (например, «Журнал публикаций») или используйте существующий.
-
Создайте инфоблок:
-
Название: «Журнал учёта публикаций»;
-
Код:
publication_log; -
Раздел: «Служебные данные».
-
-
Добавьте поля:
-
DATE_OPERATION(дата/время операции); -
USER_ID(автор операции); -
ACTION_TYPE(тип действия: «публикация», «редактирование», «удаление»); -
OBJECT_ID(ID объекта публикации); -
OBJECT_NAME(название материала); -
PREVIOUS_VERSION(текст предыдущей версии); -
CURRENT_VERSION(текущая версия); -
COMMENT(комментарий к операции).
-
Шаг 2. Настройка журналирования через API Битрикс
Добавьте в файл /bitrix/php_interface/init.php обработчики событий:
// Логирование при создании элемента
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "LogPublicationAdd");
function LogPublicationAdd(&$arFields) {
if ($arFields["IBLOCK_ID"] == ID_ВАШЕГО_ИНФОБЛОКА) {
$logElement = [
"DATE_OPERATION" => date("Y-m-d H:i:s"),
"USER_ID" => $GLOBALS["USER"]->GetID(),
"ACTION_TYPE" => "публикация",
"OBJECT_ID" => $arFields["ID"],
"OBJECT_NAME" => $arFields["NAME"],
"CURRENT_VERSION" => $arFields["DETAIL_TEXT"],
"COMMENT" => "Автоматически создано"
];
CIBlockElement::Add($logElement, [], false, false, "publication_log");
}
}
// Логирование при обновлении элемента
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "LogPublicationUpdate");
function LogPublicationUpdate(&$arFields) {
if ($arFields["IBLOCK_ID"] == ID_ВАШЕГО_ИНФОБЛОКА) {
// Получаем предыдущую версию
$prevElement = CIBlockElement::GetByID($arFields["ID"])->Fetch();
$logElement = [
"DATE_OPERATION" => date("Y-m-d H:i:s"),
"USER_ID" => $GLOBALS["USER"]->GetID(),
"ACTION_TYPE" => "редактирование",
"OBJECT_ID" => $arFields["ID"],
"OBJECT_NAME" => $arFields["NAME"],
"PREVIOUS_VERSION" => $prevElement["DETAIL_TEXT"],
"CURRENT_VERSION" => $arFields["DETAIL_TEXT"],
"COMMENT" => $_POST["LOG_COMMENT"] ?? "Без комментария"
];
CIBlockElement::Add($logElement, [], false, false, "publication_log");
}
}
// Логирование при удалении элемента
AddEventHandler("iblock", "OnBeforeIBlockElementDelete", "LogPublicationDelete");
function LogPublicationDelete($elementId) {
$element = CIBlockElement::GetByID($elementId)->Fetch();
if ($element["IBLOCK_ID"] == ID_ВАШЕГО_ИНФОБЛОКА) {
$logElement = [
"DATE_OPERATION" => date("Y-m-d H:i:s"),
"USER_ID" => $GLOBALS["USER"]->GetID(),
"ACTION_TYPE" => "удаление",
"OBJECT_ID" => $elementId,
"OBJECT_NAME" => $element["NAME"],
"PREVIOUS_VERSION" => $element["DETAIL_TEXT"],
"COMMENT" => "Элемент удалён"
];
CIBlockElement::Add($logElement, [], false, false, "publication_log");
}
}
Шаг 3. Создание интерфейса просмотра журнала
-
Создайте страницу
/journal-publications/на сайте. -
Добавьте компонент bitrix:news.list:
-
Тип инфоблока:
publication_log; -
Инфоблок: выберите созданный инфоблок;
-
Шаблон: стандартный или кастомный.
-
-
Настройте поля для отображения:
-
дата операции;
-
автор;
-
тип действия;
-
название объекта;
-
предыдущая/текущая версии (в сокращённом виде);
-
комментарий.
-
Шаг 4. Настройка прав доступа
-
В Настройки → Права доступа ограничьте доступ к журналу:
-
группа «Администраторы» — полный доступ;
-
группа «Редакторы» — только просмотр;
-
остальные — нет доступа.
-
-
Для инфоблока
publication_logустановите:-
чтение — «Редакторы»;
-
запись — «Администраторы».
-
Шаг 5. Добавление фильтров и поиска
-
В компоненте
news.listвключите:-
фильтрацию по дате (диапазон);
-
поиск по названию объекта или автору;
-
сортировку по дате (по умолчанию — новые сверху).
-
-
Пример фильтра:
php
$arFilter = [ "DATE_OPERATION_FROM" => $_GET["date_from"], "DATE_OPERATION_TO" => $_GET["date_to"], "OBJECT_NAME" => "%".$_GET["search"]."%" ];
4. Дополнительные функции
Экспорт в Excel/PDF
-
Добавьте кнопку «Скачать отчёт» на странице журнала.
-
Реализуйте экспорт через:
-
Excel: используйте
PhpSpreadsheet; -
PDF: библиотека
mPDFилиTCPDF.
-
Уведомления о критических операциях
-
Настройте отправку email при:
-
удалении материала;
-
редактировании без комментария.
-
-
Пример кода:
php
AddEventHandler("iblock", "OnAfterIBlockElementDelete", function($elementId) { $adminEmail = "admin@site.ru"; mail($adminEmail, "Удаление публикации", "ID: $elementId"); });
5. Тестирование
-
Проверка журналирования:
-
создайте новый материал — в журнале должна появиться запись «публикация»;
-
отредактируйте материал — запись «редактирование» с предыдущей версией;
-
удалите материал — запись «удаление».
-
-
Проверка прав доступа:
-
авторизуйтесь как редактор — убедитесь, что нет кнопки «удалить» в журнале;
-
попробуйте изменить запись — должно быть запрещено.
-
-
Проверка экспорта:
-
скачайте отчёт в Excel — все поля должны быть заполнены корректно.
-
6. Эксплуатация и поддержка
Рекомендации:
-
Ротация логов:
-
настройте автоматическое удаление записей старше 1 года;
-
используйте cron‑задания для очистки.
-
-
Резервное копирование:
-
включайте инфоблок
publication_logв регулярные бэкапы.
-
-
Мониторинг:
-
проверяйте журнал раз в неделю на аномалии (массовые удаления и т. п.).
-
7. Документация
Обязательные документы:
-
Инструкция по работе с журналом (для администраторов).
-
Описание структуры инфоблока
publication_log. -
Логи доступа к журналу (храните в защищённом месте).
Полезные ссылки:
-
Официальная документация Битрикс по API:
dev.1c-bitrix.ru/api_help/; -
Руководство по настройке прав доступа:
dev.1c-bitrix.ru/learning/course/?COURSE_ID=43.
- Комментарии


>

