Документация для разработчиков
Темная тема

add

\Bitrix\Main\ORM\Data\AddResult public static
\Bitrix\Iblock\IblockTable::add(
	array $data
);

Добавляет отдельную запись в таблицу b_iblock через ORM. Статический метод. Унаследован от \Bitrix\Main\ORM\Data\DataManager.

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

Параметры

Параметр Описание
$data Массив имя поля => значение из карты IblockTable. Также допустима обертка ['fields' => массив полей, 'auth_context' => объект контекста]; auth_context — необязательный объект \Bitrix\Main\Authentication\Context

Поля записи

Поле Описание
IBLOCK_TYPE_ID Идентификатор существующего типа инфоблоков. Обязательное поле, до 50 символов
NAME Название инфоблока. Обязательное поле, до 255 символов
LID Идентификатор сайта, до 2 символов. Передайте его явно: столбец базы данных не допускает NULL и не имеет значения по умолчанию
ID Автоинкрементный идентификатор инфоблока. При обычном добавлении не передается
CODE, API_CODE Символьный код инфоблока и код API соответственно, до 50 символов каждый. API_CODE используется для класса элементов
ACTIVE Активность: Y или N
SORT Индекс сортировки
TIMESTAMP_X Дата и время изменения. ORM задает текущую дату по умолчанию; обработчик onBeforeAdd также подставляет ее, если значение отсутствует или равно null
VERSION Режим хранения свойств: 1 — общая таблица, 2 — отдельные таблицы. Значение ORM по умолчанию — 1

Полный состав полей описан в getMap. Связи TYPE и PROPERTIES не являются скалярными столбцами таблицы.

Возвращаемое значение

Объект \Bitrix\Main\ORM\Data\AddResult. Метод isSuccess() сообщает об успехе, getErrorMessages() возвращает сообщения об ошибках. После успешного добавления getId() возвращает идентификатор инфоблока, getPrimary() — массив с ключом ID.

Особенности

Метод вызывает события ORM OnBeforeAdd, OnAdd и OnAfterAdd. Перед записью проверяет обязательные поля и валидаторы карты. После записи обработчик IblockTable::onAfterAdd очищает кеш.

Вызов IblockTable::add() не создает привязку в b_iblock_site, не назначает права групп, не сохраняет настройки полей и SEO-шаблоны. При VERSION = 2 он не создает таблицы отдельного хранения свойств. Значение LID в строке b_iblock не заменяет привязку к сайту.

Исключения

Ошибки настройки ORM, формата данных и выполнения SQL могут привести к исключению. Ошибки проверки полей и отмена операции обработчиком ORM возвращаются в объекте результата. Проверяйте isSuccess() и обрабатывайте исключения отдельно.

Пример

Для создания инфоблока используйте \CIBlock::Add. Пример выбирает существующие тип и сайт, добавляет инфоблок с привязкой к сайту и выводит его идентификатор. Созданный инфоблок остается в системе.

<?php

use Bitrix\Iblock\TypeTable;
use Bitrix\Main\Loader;
use Bitrix\Main\SiteTable;

try
{
	if (!Loader::includeModule('iblock'))
	{
		echo 'Не удалось подключить модуль iblock';
		return;
	}

	$type = TypeTable::getRow(['select' => ['ID'], 'order' => ['ID' => 'ASC']]);
	$site = SiteTable::getRow(['select' => ['LID'], 'order' => ['LID' => 'ASC']]);
	if ($type === null || $site === null)
	{
		echo 'Для примера нужны существующий тип инфоблоков и сайт';
		return;
	}

	// Замените CODE и API_CODE на коды вашего инфоблока; API_CODE должен быть уникальным
	$iblock = new \CIBlock();
	$iblockId = $iblock->Add([
		'IBLOCK_TYPE_ID' => $type['ID'],
		'SITE_ID' => [$site['LID']],
		'NAME' => 'Новости компании',
		'CODE' => 'company_news',
		'API_CODE' => 'CompanyNews',
		'ACTIVE' => 'Y',
	]);
	if (!$iblockId)
	{
		echo htmlspecialchars($iblock->LAST_ERROR, ENT_QUOTES, 'UTF-8');
		return;
	}

	echo 'Создан инфоблок: ' . (int)$iblockId;
}
catch (\Throwable $exception)
{
	echo 'Ошибка: ' . htmlspecialchars($exception->getMessage(), ENT_QUOTES, 'UTF-8');
}

Продолжить изучение



© «Битрикс», 2001-2026, «1С-Битрикс», 2026