Меню

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

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

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

Удалить половину элементов инфоблока с помощью 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
На личном проекте  :) - но может еще кому пригодится

Стоимость и сроки разработки сайтов и приложений

Окончательная стоимость и сроки разработки сайта формируются после обсуждения деталей на этапе заказа. Как правило, они редко выходят за обозначенные ниже рамки.

Интернет магазин: разработка с нуля от 350 000 руб.
от 4-х недель

Cоздание интернет-магазина на 1С-Битрикс. Разработка с нуля, оптимизация кода под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Интернет-магазин на готовом решении от 100 000 руб.
от 7-ми дней

Готовое решение — вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Запускается на одном из 200-та (на ваш выбор) готовых решений.

Мобильное приложение от 400 000 руб.
от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Опросник на разработку. После ознакомления, задам уточняющие вопросы и оценю проект по стоимости и срокам разработки.