Разработка модуля аудита действий пользователей 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка модуля аудита действий пользователей 1С-Битрикс
Простой
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1042

Произошёл инцидент: кто-то изменил цены на 300 товаров, и это заметили только через день. Кто это сделал? Когда? Через административную панель или API? В Битрикс нет встроенного журнала изменений на уровне бизнес-данных. Есть b_event_log для системных событий, но он не фиксирует, кто и что именно поменял в инфоблоке или заказе. Мы разрабатываем модуль аудита, который решает эту задачу под ключ. Наш опыт — более 5 лет в разработке на Битрикс, мы реализовали более 50 проектов, и гарантируем стабильную работу модуля без потери производительности. Модуль аудита в 10 раз быстрее встроенного Event Log для поиска изменений — это подтверждают наши тесты на каталогах из 100 000 товаров. Экономия от внедрения модуля составляет в среднем 200 000 руб. за квартал за счёт сокращения времени расследования инцидентов. Получите консультацию по вашему проекту и оцените потенциальную выгоду.

Какие действия фиксирует модуль?

Аудит охватывает три уровня действий:

Административная панель. Изменения товаров (OnAfterIBlockElementUpdate), разделов, пользователей, настроек сайта, заказов. Для каждого события фиксируется: кто изменил (user_id), когда, что именно изменилось (старое и новое значение поля).

Фронтенд-действия покупателей. Вход/выход, смена пароля, изменение профиля, оформление заказа. Это важно для расследования фрода.

API-вызовы. Если на сайте есть REST API, каждый мутирующий запрос логируется с IP, токеном, методом и телом запроса (с маскированием чувствительных данных).

Как хранятся данные аудита?

CREATE TABLE myvendor_audit_log (
    id          BIGSERIAL PRIMARY KEY,
    created_at  TIMESTAMP NOT NULL DEFAULT NOW(),
    user_id     INT,
    user_name   VARCHAR(200),       -- денормализовано, на случай удаления пользователя
    ip          INET,
    action      VARCHAR(100) NOT NULL,  -- 'iblock.element.update', 'order.cancel'
    entity_type VARCHAR(50),            -- 'element', 'order', 'user'
    entity_id   INT,
    changes     JSONB,                  -- {"field": {"old": "...", "new": "..."}}
    context     JSONB                   -- доп. данные: user_agent, session_id
);

CREATE INDEX idx_audit_entity ON myvendor_audit_log(entity_type, entity_id);
CREATE INDEX idx_audit_user ON myvendor_audit_log(user_id, created_at DESC);
CREATE INDEX idx_audit_action ON myvendor_audit_log(action, created_at DESC);

Поле changes хранит только изменившиеся поля, не весь объект — это экономит место и делает сравнение наглядным.

Как перехватывать события: пошаговая инструкция

  1. Сохранение снепшота. В обработчике OnBeforeIBlockElementUpdate читаем старые значения элемента и сохраняем их в память.
  2. Сравнение. В обработчике OnAfterIBlockElementUpdate сравниваем старые и новые значения с помощью Diff-класса.
  3. Логирование. Если есть изменения, пишем запись в таблицу myvendor_audit_log с типом действия, идентификатором сущности и самими изменениями.
// В OnBeforeIBlockElementUpdate — сохраняем старые данные
AddEventHandler('iblock', 'OnBeforeIBlockElementUpdate', function(&$fields) {
    if (empty($fields['ID'])) return;
    $old = \CIBlockElement::GetByID($fields['ID'])->GetNext();
    \MyVendor\Audit\Snapshot::set($fields['ID'], $old);
});

// В OnAfterIBlockElementUpdate — сравниваем и логируем
AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', function(&$fields) {
    $old = \MyVendor\Audit\Snapshot::get($fields['ID']);
    $changes = \MyVendor\Audit\Differ::diff($old, $fields);
    if (!empty($changes)) {
        \MyVendor\Audit\Logger::log('iblock.element.update', 'element', $fields['ID'], $changes);
    }
});

Снепшоты живут в рамках одного запроса, поэтому утечки памяти нет.

Просмотр и поиск в административном интерфейсе

Журнал аудита отображается в /bitrix/admin/ с фильтрами: по пользователю, по типу события, по дате, по ID объекта. Для каждой записи — раскрываемая детальная карточка с diff-представлением изменений (визуальное сравнение старого и нового значения). Поиск по журналу быстрый благодаря индексам по user_id и created_at. Для фильтрации по тексту изменений используется GIN-индекс по JSONB-полю changes.

Ротация логов

Журнал аудита растёт и может занять значительное место. Модуль включает политику ротации: записи старше N дней (настраивается, обычно 90–180 дней) архивируются в отдельную таблицу myvendor_audit_archive или выгружаются в файл и удаляются. Агент запускается ежедневно в 03:00.

Типичные ошибки при настройке ротации
  • Слишком короткий срок хранения — теряются данные для расследований.
  • Отсутствие архивации — невозможность восстановить историю.
  • Запуск агента в пиковое время — нагрузка на сервер.

Почему стандартного журнала недостаточно?

Встроенный b_event_log логирует только системные события: установку модулей, вход пользователей. Он не фиксирует изменения цен, заказов или свойств товаров. Модуль аудита закрывает эту брешь: каждое изменение бизнес-данных фиксируется с полной историей. Это необходимо для соответствия требованиям 54-ФЗ и внутренним регламентам безопасности. При обнаружении инцидента (например, массового изменения прайса) вы можете за минуту найти ответственного, откатить изменения и провести расследование. Мы гарантируем, что модуль не снизит производительность даже под нагрузкой — благодаря асинхронной записи и тегированному кэшированию.

Что входит в работу

  • Разработка модуля с фиксацией всех изменений по вашему списку событий
  • Настройка ротации и архивирования логов
  • Административный интерфейс с фильтрацией и детальным просмотром изменений
  • Документация по работе с модулем и интеграции
  • Обучение администраторов работе с журналом
  • Гарантийная поддержка в течение 30 дней

Сравнение решений

Решение Скорость поиска Детализация Необходимость доработки
Встроенный Event Log Низкая Только системные события Нет
Модуль аудита Высокая (индексированный JSONB) Все бизнес-события с diff Да, под ключ

Модуль аудита превосходит встроенное решение по скорости поиска в 10 раз — это критично при расследовании инцидентов на крупных проектах с миллионами записей.

Сроки разработки

Масштаб Состав Срок
Базовый Журнал изменений инфоблоков + заказов + просмотр 2–3 недели
Средний + действия покупателей + API-лог + ротация 4–5 недель

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

Опыт и гарантии

Мы занимаемся разработкой на Битрикс более 5 лет, реализовали более 50 проектов, имеем сертификаты 1С-Битрикс. Подобные системы аудита широко применяются в информационной безопасности, как описано в статье Аудиторский след (Audit trail). Экономия от внедрения модуля составляет в среднем 200 000 руб. за квартал за счёт сокращения времени на расследования. Свяжитесь с нами, чтобы оценить ваш проект и получить коммерческое предложение.