Обновление связей элементов и разделов в 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Обновление связей элементов и разделов в 1С-Битрикс
Обновление привязки элементов к разделам в 1С-Битрикс

В работе с CMS 1С-Битрикс часто возникает необходимость управления  привязками элементов к разделам. Например, бывает нужно удалить  элементы, которые старше определенного срока, из определенного раздела,  или наоборот — добавить элементы в нужные разделы. В этой статье мы  разберем, как получить список разделов, к которым привязан элемент, и  обновить эту привязку.
Изменено: Валерий Макеев - 29.09.2025 15:17:08
Этот код удаляет устаревшие (старше 3 месяцев) элементы из раздела "Новинки", сохраняя их привязку к другим разделам, если таковые есть.
Код
<?php
// Удаляем привязку к разделу "Новинки" у элементов, созданных более 3 месяцев назад
$section_new = 123; // ID раздела "Новинки"
$objDateTime = new \Bitrix\Main\Type\DateTime();
$objDateTime->add('-3 month');

$arFilter = [
    "IBLOCK_ID" => CATALOG_IBLOCK_ID,
    "ACTIVE" => "Y",
    "<=DATE_CREATE" => $objDateTime->format("Y-m-d"),
    "SECTION_ID" => $section_new
];

$arSelect = ["ID"];
$res = CIBlockElement::GetList([], $arFilter, false, false, $arSelect);

$elementIds = [];
while ($element = $res->Fetch()) {
    $elementIds[] = $element["ID"];
}

if (!empty($elementIds)) {
    $result = CIBlockElement::GetElementGroups($elementIds, true, ["ID"]);
    $elementSections = [];
    while ($group = $result->Fetch()) {
        $elementSections[$group["IBLOCK_ELEMENT_ID"]][] = $group["ID"];
    }

    $el = new CIBlockElement();
    foreach ($elementIds as $elId) {
        if (isset($elementSections[$elId]) && ($key = array_search($section_new, $elementSections[$elId])) !== false) {
            unset($elementSections[$elId][$key]);
            $el->Update($elId, ["IBLOCK_SECTION" => $elementSections[$elId]], false, false, true);
        }
    }
}
?>
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.