Битрикс: проверка существования раздела

Небольшая подборка готового кода для работы с разделами инфоблоков.
Задача: проверять наличие раздела (SECTION) по его названию, если раздела не существует — создавать его. В качестве названия раздела — будет использоваться текущая дата (см. переменную $today).

//идентификатор инфоблока
$iblock_logs = 19;

//название инфоблока
$today = date('d.m.Y');

//выполняем проверку, если раздела не существует -> создаем его
$arFilter = Array("IBLOCK_ID"=>$iblock_logs, "NAME"=>$today);
$db_list = CIBlockSection::GetCount($arFilter);                        

if($db_list==0) {
$bs = new CIBlockSection;
$arFields = Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => $iblock_logs,
"NAME" => $today,
"SORT" => "ASC",
);
$created_section = $bs->Add($arFields);
} else {
echo "Раздел уже существует";
}

Решение работает, но CIBlockSection::GetCount не всегда может подойти для решения вашей задачи.
Например, если нам нужно не только знать о существовании раздела, но и его идентификатор.

//идентификатор инфоблока
$iblock_logs = 19;

//название инфоблока
$today = date('d.m.Y');

//выполняем проверку, если раздела не существует -> создаем его
$arFilter = Array("IBLOCK_ID"=>$iblock_logs, "NAME"=>$today);
$get_info = CIBlockSection::GetList(Array(), $arFilter, true);
$ar_result = $get_info->GetNext();                   

if(empty($ar_result['ID'])) {
$bs = new CIBlockSection;
$arFields = Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => $iblock_logs,
"NAME" => $today,
"SORT" => "ASC",
);
$created_section = $bs->Add($arFields);
$section_id = $created_section;
} else {
echo "Раздел уже существует";
$section_id = $ar_result['ID'];
}

Воспользуемся методом CIBlockSection::GetList. Теперь в переменной $section_id у нас всегда будет находиться идентификатор раздела, не важно существовал ли он ранее или был создан только что. Далее с помощью метода CIBlockElement::Add можно добавлять элементы в раздел.

Опубликовано: 18 марта 2020 года, в рубрике «Битрикс».

Оставить комментарий

5000
  Подписаться  
Уведомление о
Поблагодарить автора статьи
Зачем это нужно