Удалить половину элементов инфоблока с помощью API

Просмотров: 445

Задача: вот такая странная задача, нужно удалить из инфоблока половину элементов. Не важно каких, просто половину элементов.

Удалить половину элементов инфоблока с помощью API

Получение и удаление элементов через API

Скрипт который удалит элементы, если вы знаете сколько элементов в инфоблоке. Например, в инфоблоке 12 346 элементов, соотвественно нужно удалить 6 173:

use Bitrix\Main\Loader,
    Bitrix\Iblock\ElementTable;

Loader::includeModule('iblock');

$rsElements = ElementTable::getList([
    'filter' => [
        'IBLOCK_ID' => '1', // ID инфоблока
    ],
    'select' => [
        'ID',
    ],
    'limit' => '6173'
]);

foreach ($rsElements as $element) {
    CIBlockElement::Delete($element['ID'])
}

С помощью ElementTable::getList получили 6173 элемента этого инфоблока и удалили их с помощью CIBlockElement::Delete

Другой вариант удаления

Этот вариант подойдет, если не знаете сколько элементов в инфоблоке и не хочется делать скрипт подсчета.

use Bitrix\Main\Loader,
    Bitrix\Iblock\ElementTable;

Loader::includeModule('iblock');

$rsElements = ElementTable::getList([
    'filter' => [
        'IBLOCK_ID' => '1', // ID инфоблока
    ],
    'select' => [
        'ID'
    ]
]);

foreach ($rsElements as $k => $element) {
  if ($k % 2 == 0) {
      CIBlockElement::Delete($element['ID'])
  }
}

Здесь происходит перебор полученного списка элементов. С помощью переменной $k отслеживается текущий индекс элемента в списке. Условие if ($k % 2 == 0) проверяет, является ли индекс чётным (то есть, каждый второй элемент). Если условие выполняется, вызывается метод Delete класса CIBlockElement для удаления элемента по его ID.

Таким образом удалиться ровно половина элементов.

Гость 08.06.2024
Интересно, где такое могло понадобицца )))
Михаил Базаров 08.06.2024
На личном проекте  :) - но может еще кому пригодится

Блог-note: заметки разработчика

Основные функции вывода в шаблонах Битрикс

Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну кучку. Ведь у каждого бывают мо...

Input Type File, множественный с дропзоной и показом превью

Задача: Сделать возможность загрузки файлов в множественный input type="file" c помощью drag&drop и показом превью загру...

Увидеть файл заказов который передаст Битрикс в 1С

Для диагностики обмена заказов, интернет-магазина на 1С Битрикс с 1С Управление Торговлей, нужно увидеть xml файл с зака...

Работа с HTTP-запросами в Bitrix: Обзор возможностей класса \Bitrix\Main\HttpRequest

Класс \Bitrix\Main\HttpRequest, является наследником класса Request, представляет собой мощный инструмент для работы с д...

AJAX корзина с отправкой количества из раздела каталога

Столкнулся с задачкой: нужно было на одном сайте реализовать интерактивный прайс лист. При этом, у пользователя должна б...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Ajax форма обратной связи, реализация в битрикс

Иногда, на сайте требуется создать форму обратной связи, которая будет писать все данные в инфоблок. Способов реализации...

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...