Перейти к основному содержимому

Ключевые таблицы

Почтовая подсистема (Mail System)

"Событие" (Event) в контексте базы данных битрикса — это почти всегда почтовое событие. Вся система отправки писем строится на трех таблицах.

Таблица b_event (Очередь отправки)

Эта таблица хранит конкретные письма, которые были сформированы системой и ждут отправки (или уже отправлены).

  • ID: Первичный ключ (Primary Key).
  • EVENT_NAME: Символьный код типа почтового события (например, SALE_NEW_ORDER или FEEDBACK_FORM). Связывает письмо с шаблоном.
  • MESSAGE_ID: ID почтового шаблона (b_event_message), на основе которого было создано это письмо. Если письмо создано по нескольким шаблонам, поле может быть пустым или содержать один из ID.
  • LID (Language ID / Site ID): Символьный код сайта (s1), к которому относится событие.
  • C_FIELDS: Самое важное поле. Здесь хранится сериализованный массив (или специальная строка) с данными, которые подставляются в письмо.
    • Пример: #ORDER_ID# => 123, #USER_NAME# => Иван.
    • Как работает: Когда агент отправки берет запись, он распаковывает C_FIELDS и заменяет плейсхолдеры в шаблоне на эти значения.
  • DATE_INSERT: Дата и время создания события.
  • DATE_EXEC: Дата и время фактической отправки письма почтовым сервером.
  • SUCCESS_EXEC: Статус отправки.
    • Y — Успешно отправлено.
    • N — Ошибка отправки (письмо осталось в очереди).
    • 0 — Еще не обработано (ждет очереди).
    • F — Ошибка при выполнении mail().
  • DUPLICATE: Флаг дублирования (Y/N). Используется, если событие нужно отправить несколько раз разным получателям.

Таблица b_event_type (Типы событий)

Справочник, определяющий, какие вообще бывают события в системе.

  • ID: Первичный ключ.
  • LID: Язык интерфейса (ru, en). Для одного EVENT_NAME может быть несколько записей на разных языках (для админки).
  • EVENT_NAME: Уникальный код (строка). Например: USER_INFO, NEW_USER.
  • NAME: Название типа события (видно в админке).
  • DESCRIPTION: Описание доступных полей (макросов).
    • Пример: #USER_ID# - ID пользователя, #EMAIL# - Email пользователя. Подсказка для админа при создании шаблона.

Таблица b_event_message (Почтовые шаблоны)

Хранит верстку и настройки конкретных писем.

  • ID: Первичный ключ.
  • EVENT_NAME: Привязка к типу события (b_event_type).
  • ACTIVE: Активность шаблона (Y/N).
  • LID: Привязка к сайту.
  • EMAIL_FROM / EMAIL_TO: От кого и кому. Здесь могут быть макросы (#EMAIL_TO#).
  • SUBJECT: Тема письма.
  • MESSAGE: Тело письма (TEXT или HTML). Здесь находится основной контент с макросами.
  • BODY_TYPE: Тип содержимого: text или html.

Файловая система (File System)

Битрикс не хранит файлы в базе (BLOB), но хранит ссылки на них.

Таблица b_file (Реестр файлов)

Главная таблица для всех картинок и документов (аватарки, товары, документы).

  • ID: Числовой идентификатор файла. Именно это число хранится в свойствах инфоблоков (PREVIEW_PICTURE, PROPERTY_FILE).
  • TIMESTAMP_X: Дата загрузки файла.
  • MODULE_ID: Модуль, который загрузил файл (например, iblock, main, sale). Помогает при очистке мусора.
  • HEIGHT / WIDTH: Высота и ширина (если изображение). Позволяет узнать размеры, не открывая сам файл с диска.
  • FILE_SIZE: Размер в байтах.
  • CONTENT_TYPE: MIME-тип (например, image/jpeg, application/pdf).
  • SUBDIR: Подпапка внутри директории /upload/.
    • Пример: iblock/a14. Битрикс автоматически раскидывает файлы по папкам, чтобы в одной не скапливались миллионы файлов.
  • FILE_NAME: Имя файла на диске (часто хешированное, например d41d8cd98f00b204e9800998ecf8427e.jpg).
  • ORIGINAL_NAME: Исходное имя файла при загрузке (например, photo_2023.jpg).

Как собрать полный путь: /upload/ + SUBDIR + / + FILE_NAME.


Пользователи (Users)

Таблица b_user (Пользователи)

Центральная таблица авторизации.

  • ID: Уникальный ID пользователя.
  • LOGIN: Логин (обязательное, мин. 3 символа).
  • PASSWORD: Хеш пароля. В старых версиях MD5, в новых — более сложные алгоритмы с солью.
  • EMAIL: Email адрес.
  • ACTIVE: Флаг активности (Y/N). Если N, вход запрещен.
  • DATE_REGISTER: Дата регистрации.
  • LAST_LOGIN: Дата последнего успешного входа.
  • LID: Сайт, на котором зарегистрировался пользователь (важно для мультисайтовости).
  • PERSONAL_... / WORK_...: Группы полей профиля (PHOTO, PHONE, CITY и т.д.).
  • XML_ID: Внешний код (для синхронизации с 1С или Active Directory).

Настройки ядра (Kernel)

Таблица b_option (Настройки модулей)

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

  • MODULE_ID: ID модуля (например, main, sale, catalog).
  • NAME: Имя настройки (ключа).
    • Пример: admin_passwordh (хеш пароля для сессии), update_devsrv (использовать ли dev-сервер обновлений).
  • VALUE: Значение настройки. Обычно строка.
  • SITE_ID: Если настройка привязана к конкретному сайту (необязательно).

Таблица b_agent (Агенты / Cron)

Планировщик задач.

  • ID: ID агента.
  • MODULE_ID: Модуль, к которому относится агент.
  • NAME: PHP-код, который нужно выполнить.
    • Пример: CIBLock::CleanUp();
  • ACTIVE: Активность (Y/N).
  • LAST_EXEC: Когда запускался в последний раз.
  • NEXT_EXEC: Когда должен запуститься в следующий раз.
  • AGENT_INTERVAL: Интервал запуска в секундах.
  • IS_PERIOD: Y — периодический (запускать строго раз в N секунд), N — однократный (или нестрогий период).

Как с ними работать?

Напрямую SQL-запросами в эти таблицы писать категорически не рекомендуется (кроме случаев экстремального восстановления сайта). Битрикс имеет API для всего:

  1. b_event -> CEvent::Send(...)
  2. b_file -> CFile::SaveFile(...), CFile::GetPath(...)
  3. b_user -> CUser::Add(...), CUser::GetList(...)
  4. b_option -> COption::SetOptionString(...), COption::GetOptionString(...)