Обновление связей элементов и разделов в 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-Битрикс

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack

* на основе готовой верстки

Лечение сайтов от вирусов

восстановление сайта и подъем версии PHP

от 25 000 рублей
Лечение сайтов на решениях АСПРО и прочих.

* полный комплекс лечения проекта и закрытия дыр

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная