Информационные блоки в 1С-Битрикс. Структура таблиц модуля информационных блоков

Ниже приведена детальная инструкция по работе со структурой таблиц модуля «Информационные блоки» (ИБ) в 1С-Битрикс. Рассмотрим основные таблицы, их ключевые поля и способы применения. Материал будет полезен как разработчикам, только начинающим знакомство с 1С-Битрикс, так и тем, кто хочет глубже понять внутреннее устройство инфоблоков и уметь выполнять точечные операции через SQL.

Инструкция по работе с таблицами модуля «Информационные блоки» в 1С-Битрикс

1. Общая структура модуля «Информационные блоки»

Модуль «Информационные блоки» в 1С-Битрикс хранит данные в нескольких связанных таблицах. Основные:

  • b_iblock – хранит общую информацию о каждом инфоблоке (название, код, настройки и т.п.).
  • b_iblock_type – хранит типы инфоблоков (например, «catalog», «news» и другие).
  • b_iblock_element – хранит элементы инфоблоков (записи, новости, товары и т. д.).
  • b_iblock_section – хранит разделы (категории, рубрики) инфоблока.
  • b_iblock_property – хранит описания пользовательских свойств (дополнительные поля элементов инфоблока).
  • b_iblock_property_enum – хранит варианты значений для свойств типа «список».
  • b_iblock_section_element – связывает элементы инфоблока с разделами.

Кроме того, для хранения значений свойств (например, в виде строк, чисел, списков) используются особые таблицы – b_iblock_element_prop_sXX и b_iblock_element_prop_mXX, где XX – это идентификатор инфоблока. При создании свойства с определёнными типами (строки, HTML-текст и т. д.) 1С-Битрикс создаёт соответствующие таблицы с суффиксами для хранения значений.

2. Таблица b_iblock

Таблица b_iblock содержит информацию обо всех созданных в системе инфоблоках.

Основные поля

  • ID – уникальный идентификатор инфоблока.
  • NAME – название инфоблока (например, «Каталог товаров»).
  • CODE – символьный код (латиницей) для инфоблока (используется в ЧПУ и других местах).
  • IBLOCK_TYPE_ID – тип инфоблока (ссылка на таблицу b_iblock_type).
  • LID – код сайта, к которому привязан инфоблок.
  • ACTIVE – флаг активности инфоблока (Y/N).
  • SORT – порядковый номер для сортировки.
  • LIST_PAGE_URL, DETAIL_PAGE_URL, SECTION_PAGE_URL – шаблоны URL страниц списка элементов, детальной страницы и страницы раздела соответственно.
  • DESCRIPTION, DESCRIPTION_TYPE – описание инфоблока (может быть HTML).

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

Допустим, вам нужно через SQL быстро отключить (деактивировать) определённый инфоблок с ID = 3:

UPDATE b_iblock
SET ACTIVE = 'N'
WHERE ID = 3;

После этой операции инфоблок перестанет считаться активным в настройках, что может отключить его показ на сайте (зависит от логики шаблонов и компонентов).

3. Таблица b_iblock_element

Таблица b_iblock_element хранит собственно «элементы» (записи) выбранного инфоблока: новости, товары, статьи и т. п.

Основные поля

  • ID – уникальный идентификатор элемента.
  • IBLOCK_ID – идентификатор инфоблока (ссылка на b_iblock.ID).
  • NAME – название элемента.
  • CODE – символьный код элемента.
  • ACTIVE – активность элемента (Y/N).
  • ACTIVE_FROM, ACTIVE_TO – дата начала и конца активности.
  • SORT – сортировка элемента.
  • PREVIEW_TEXT, PREVIEW_TEXT_TYPE – анонс элемента, его тип (html/text).
  • DETAIL_TEXT, DETAIL_TEXT_TYPE – детальный текст элемента, его тип (html/text).
  • DATE_CREATE, TIMESTAMP_X – дата создания и дата последнего изменения.
  • CREATED_BY, MODIFIED_BY – идентификаторы пользователей, создавших и изменивших элемент.

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

Выборка всех активных элементов из инфоблока с символьным кодом «catalog»:

SELECT be.ID, be.NAME
FROM b_iblock_element be
JOIN b_iblock bi ON be.IBLOCK_ID = bi.ID
WHERE bi.CODE = 'catalog'
  AND be.ACTIVE = 'Y';

Особенность после события OnAfterIBlockElementUpdate

По замечанию из задания: после события OnAfterIBlockElementUpdate у элемента инфоблока нет ключа IBLOCK_SECTION_ID, но при этом есть массив полей IBLOCK_SECTION. Это значит, что для получения данных о разделах, к которым относится элемент, нужно использовать либо свойство IBLOCK_SECTION, либо отдельную таблицу b_iblock_section_element, где хранится связь «элемент – раздел».

4. Таблица b_iblock_section

В этой таблице хранятся разделы инфоблоков.

Основные поля

  • ID – идентификатор раздела.
  • IBLOCK_ID – идентификатор инфоблока, к которому принадлежит раздел.
  • NAME – название раздела.
  • CODE – символьный код раздела.
  • ACTIVE – активность (Y/N).
  • SORT – сортировка раздела.
  • DESCRIPTION, DESCRIPTION_TYPE – описание раздела, его тип (html/text).
  • PICTURE – идентификатор файла-изображения для раздела (ссылка на b_file.ID).
  • LEFT_MARGIN, RIGHT_MARGIN, DEPTH_LEVEL – служебные поля для деревообразной структуры разделов (Nested Sets).
  • IBLOCK_SECTION_ID – идентификатор родительского раздела.

Важные нюансы

  1. В таблице b_iblock_section нет поля SECTION_PROPERTY. Иногда в документации или интерфейсе может появляться упоминание возможности «Показывать на странице редактирования элемента» (связано с привязкой разделов и свойств), однако физически колонки SECTION_PROPERTY в базе нет.
  2. Как снять галку «Показывать на странице редактирования элемента» через SQL Если в админке существует раздел, «привязанный» к настройкам, и нужно его «отвязать» от конкретных свойств так, чтобы в форме редактирования элемента эти свойства/разделы не показывались, вы можете:
    • Либо воспользоваться штатными средствами админки.
    • Либо, по замечанию, удалить запись из b_iblock_section, полностью убрав таким образом раздел (если именно он несёт эту настройку).
    Однако важно: удаление записи из b_iblock_section физически убирает раздел из базы! Обычно это радикальная мера – убедитесь, что вы не удаляете нужную структуру разделов.

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

Выберите все активные подразделы раздела с ID = 10:

SELECT ID, NAME
FROM b_iblock_section
WHERE IBLOCK_SECTION_ID = 10
  AND ACTIVE = 'Y';

5. Таблица b_iblock_property

Содержит описание пользовательских свойств (характеристик) элементов, которые задаются в настройках инфоблока (например, «Цвет», «Вес», «Цена» и т. д.).

Основные поля

  • ID – идентификатор свойства.
  • IBLOCK_ID – идентификатор инфоблока.
  • NAME – название свойства («Цвет», «Размер»).
  • CODE – символьный код свойства («COLOR», «SIZE»).
  • PROPERTY_TYPE – тип свойства (S – строка, N – число, L – список, F – файл, E – привязка к элементу и т. д.).
  • MULTIPLE – флаг множественности (Y/N).
  • SORT – индекс сортировки (число).
  • ACTIVE – активность свойства (Y/N).
  • USER_TYPE, USER_TYPE_SETTINGS – служебные поля, используемые для пользовательских типов свойств (например, «HTML-текст», «Привязка к Highload-блоку» и т. д.).

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

Поиск всех свойств инфоблока c ID = 7, которые являются списками (PROPERTY_TYPE = 'L'):

SELECT ID, NAME, CODE
FROM b_iblock_property
WHERE IBLOCK_ID = 7
  AND PROPERTY_TYPE = 'L';

6. Таблица b_iblock_property_enum

Хранит значения для свойств, имеющих тип «Список».

Основные поля

  • ID – идентификатор варианта значения свойства.
  • PROPERTY_ID – ссылка на b_iblock_property.ID.
  • VALUE – текстовое значение (например, «Красный», «Синий»).
  • XML_ID – символьный идентификатор (может использоваться для обменов или фильтрации).
  • SORT – индекс сортировки.

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

Для свойства «Цвет» (допустим, ID свойства = 15) получить все варианты значений:

SELECT ID, VALUE, XML_ID
FROM b_iblock_property_enum
WHERE PROPERTY_ID = 15
ORDER BY SORT;

7. Таблица b_iblock_section_element

Связывает элементы с разделами. Если элемент может находиться сразу в нескольких разделах, то в этой таблице будет несколько записей на каждый элемент.

Основные поля

  • ID – идентификатор записи.
  • IBLOCK_ELEMENT_ID – элемент (ссылка на b_iblock_element.ID).
  • IBLOCK_SECTION_ID – раздел (ссылка на b_iblock_section.ID).
  • ADDITIONAL_PROPERTY_ID – используется в некоторых сценариях, когда элемент является не «обычным» элементом, а значением свойства типа «привязка к разделам» или «привязка к элементам».

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

Выбрать все разделы, в которых лежит элемент с ID = 100:

SELECT s.ID, s.NAME
FROM b_iblock_section_element se
JOIN b_iblock_section s ON se.IBLOCK_SECTION_ID = s.ID
WHERE se.IBLOCK_ELEMENT_ID = 100;

8. Дополнительные таблицы свойств элементов

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

  • b_iblock_element_prop_sXX – хранит значения «простых» свойств (S, N и др.) в виде строк (в том числе HTML).
  • b_iblock_element_prop_mXX – хранит значения множественных свойств.

Где XX – это ID инфоблока. Например, если инфоблок имеет ID = 7, то таблицы будут называться b_iblock_element_prop_s7 и b_iblock_element_prop_m7.

Основные поля b_iblock_element_prop_sXX

  • IBLOCK_ELEMENT_ID – ссылка на элемент.
  • PROPERTY_ – колонки для хранения значения каждого свойства (для каждого свойства создаётся отдельная колонка с таким именем).

Основные поля b_iblock_element_prop_mXX

  • ID – идентификатор записи.
  • IBLOCK_ELEMENT_ID – ссылка на элемент.
  • IBLOCK_PROPERTY_ID – ссылка на b_iblock_property.ID.
  • VALUE, VALUE_NUM, VALUE_TYPE и т. д. – хранят само значение, которое может быть строкой, числом, HTML-текстом и т. д.

9. Резюме и основные рекомендации

  1. Аккуратно работайте с SQL-запросами. Вручную менять записи в этих таблицах рекомендуется только в крайних случаях, если по каким-то причинам стандартные средства не подходят.
  2. Учитывайте связи между элементами и разделами, свойствами и их значениями. 1С-Битрикс активно использует реляционные отношения, а также кэширование. После изменений напрямую в базе не забудьте очистить кэш.
  3. Нет поля SECTION_PROPERTY в таблице b_iblock_section. Не пытайтесь его искать или изменять.
  4. Снятие галки «Показывать на странице редактирования элемента» может быть реализовано удалением записи из b_iblock_section (если речь именно о разделе), но это радикальный способ, который удалит сам раздел.
  5. После события OnAfterIBlockElementUpdate не полагайтесь на IBLOCK_SECTION_ID, в массиве полей будет IBLOCK_SECTION. Если нужна более детальная информация о разделах, используйте либо дополнительные механизмы (события, методы API), либо смотрите таблицу b_iblock_section_element.

10. Полезные примеры для разработчиков

Ниже приведены несколько типовых SQL-запросов, которые могут пригодиться в работе.

Добавить элемент инфоблока (псевдокод через INSERT):

INSERT INTO b_iblock_element (IBLOCK_ID, NAME, ACTIVE, CODE, SORT, TIMESTAMP_X, DATE_CREATE, CREATED_BY, MODIFIED_BY)
VALUES (5, 'Новый товар', 'Y', 'new-product', 500, NOW(), NOW(), 1, 1);

После этого обычно нужно позаботиться о вставке значений свойств (в таблицы b_iblock_element_prop_s5 или b_iblock_element_prop_m5).

Получить последние 10 изменённых элементов:

SELECT ID, NAME, TIMESTAMP_X
FROM b_iblock_element
ORDER BY TIMESTAMP_X DESC
LIMIT 10;

Удалить элемент (важно понимать, что при удалении из b_iblock_element его свойства тоже нужно удалять вручную из соответствующих таблиц, либо использовать штатный API Bitrix):

DELETE FROM b_iblock_element
WHERE ID = 200;

Обновить свойство элемента (пример для таблицы b_iblock_element_prop_sXX):

UPDATE b_iblock_element_prop_s7
SET PROPERTY_18 = 'Новое значение'
WHERE IBLOCK_ELEMENT_ID = 100;

Здесь 7 – ID инфоблока, а 18 – ID свойства.

Проверить в каких разделах лежит конкретный элемент:

SELECT s.ID, s.NAME
FROM b_iblock_section_element se
INNER JOIN b_iblock_section s ON se.IBLOCK_SECTION_ID = s.ID
WHERE se.IBLOCK_ELEMENT_ID = 120;

Результат – список ID и названий разделов.

Вывод

Структура таблиц модуля «Информационные блоки» в 1С-Битрикс достаточно обширна и гибка. Понимание того, как хранится информация о типах, элементах, разделах, свойствах и их значениях, позволяет:

  • Грамотно и безопасно решать задачи по миграции данных;
  • Автоматизировать массовые операции (например, массовое обновление свойств);
  • Быстрее разбираться в ошибках и корректировать их при необходимости «вручную».

Однако, прежде чем вносить изменения в таблицы напрямую, всегда оценивайте риски и по возможности используйте встроенные инструменты 1С-Битрикс (API, админку, компоненты). Это убережёт ваш проект от возможных ошибок целостности данных и непредвиденных последствий.

Теги:  справочник, SQL, база данных

Интернет-магазин от 120 000 руб., срок от 4 недель

Платформа для продажи товаров или услуг. Включает интерактивные формы обратной связи в каждой карточке товара, а также множество статичных и динамичных разделов.

Корпоративный сайт от 60 000 руб., срок от 3 недель

Готовый информационный ресурс, включающий лицензию на 1С-Битрикс «Стандарт», технологию «Композитный сайт».

Лендинг от 25 000 руб., срок от 2 недель

Компактный сайт, идеально подходящий для старта. На одной странице можно представить ключевые преимущества вашей компании и разместить форму для обратной связи.