Инфоблоки Битрикс: устройство, свойства и выборки в D7

Обновлено 19 сентября 2026 г.

Практическое руководство по инфоблокам: как они устроены, как выбирать элементы через старое API и ORM D7 и как не убить базу выборками.

Инфоблоки — фундамент почти любого проекта на 1С-Битрикс. Новости, статьи, каталог товаров, баннеры, сотрудники, FAQ — всё это обычно инфоблоки. Эта статья, к слову, тоже хранится в инфоблоке и отдаётся компонентом.

Из чего состоит инфоблок

  • Тип инфоблока — папка для группировки (например, «Контент», «Каталог»).
  • Инфоблок — сама сущность со своими настройками, правами и шаблонами URL.
  • Разделы — дерево категорий (необязательно).
  • Элементы — записи: название, символьный код, анонс, детальный текст, картинки, даты активности.
  • Свойства — произвольные поля: строка, число, список, файл, привязка к элементу, HTML, справочник и другие.

Инфоблоки 1.0 и 2.0

В версии 1.0 значения свойств всех инфоблоков лежат в одной общей таблице b_iblock_element_property. В версии 2.0 у каждого инфоблока своя таблица значений — выборки и фильтры по свойствам работают быстрее. Для каталогов и всего, где будет много элементов, используйте 2.0.

Выборка: старое API

use Bitrix\Main\Loader;
Loader::includeModule('iblock');

$res = CIBlockElement::GetList(
    ['SORT' => 'ASC'],
    ['IBLOCK_ID' => 5, 'ACTIVE' => 'Y', 'PROPERTY_CLUSTER' => 'Интеграции'],
    false,
    ['nPageSize' => 20],
    ['ID', 'IBLOCK_ID', 'NAME', 'CODE', 'PROPERTY_CLUSTER']
);
while ($row = $res->Fetch()) {
    // ...
}

Всегда передавайте arSelect и IBLOCK_ID в фильтре. Выборка без select тянет все поля и делает лишние джойны.

Выборка: ORM D7

Задайте инфоблоку «Символьный код API» (например, Articles) — после этого доступен ORM-класс:

use Bitrix\Iblock\Elements\ElementArticlesTable;

$items = ElementArticlesTable::getList([
    'select' => ['ID', 'NAME', 'CODE', 'CLUSTER_' => 'CLUSTER'],
    'filter' => ['=ACTIVE' => 'Y'],
    'order'  => ['SORT' => 'ASC'],
    'limit'  => 20,
    'cache'  => ['ttl' => 3600],
])->fetchAll();

Плюсы D7: типизация, джойны через runtime-поля, встроенный кэш запросов. Минус: множественные свойства в select размножают строки — их удобнее получать через fetchCollection().

SEO-поля элемента

Мета-теги задаются на вкладке SEO элемента или шаблонами на уровне инфоблока, например {=this.Name} — купить в Москве. В коде значения получаются так:

use Bitrix\Iblock\InheritedProperty\ElementValues;
$seo = (new ElementValues($iblockId, $elementId))->getValues();
$title = $seo['ELEMENT_META_TITLE'];

Производительность

  • Выносите выборки в компоненты с кэшем, а не в шаблоны сайта. Как писать компонент — в статье «Свой компонент Битрикс».
  • Используйте тегированный кэш: при изменении элемента кэш инфоблока сбросится сам.
  • Не делайте GetList в цикле — сначала соберите ID, затем одна выборка.
  • Для фильтрации по свойствам на больших каталогах включайте фасетный индекс.
  • Не храните в инфоблоках логи и счётчики — для них нужны свои таблицы (ORM-сущности).

Когда инфоблок — не лучший выбор

Высокочастотная запись (логи, события, статистика), сложные связи многие-ко-многим, строгая схема с транзакциями — это задачи для собственных таблиц через ORM D7 или Highload-блоков. Инфоблоки хороши для контента, который редактируют люди.

Нужна помощь с архитектурой проекта на Битриксе или ускорением медленного каталога — обращайтесь.

Частые вопросы

Что такое инфоблок в Битрикс?

Инфоблок — универсальное хранилище однотипного контента: новостей, товаров, статей, сотрудников. У него есть разделы, элементы, стандартные поля и произвольные свойства.

Чем инфоблоки 2.0 отличаются от 1.0?

В инфоблоках 2.0 значения свойств хранятся в отдельной таблице на каждый инфоблок. Это ускоряет выборки и фильтрацию по свойствам на больших объёмах.

Как получить элементы инфоблока в D7?

Задайте инфоблоку символьный код API, после чего используйте класс \Bitrix\Iblock\Elements\Element<ApiCode>Table::getList() с выборкой свойств по коду.