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

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
Наверх