Меню

Пошаговая обработка большого количества элементов инфоблока, быстро скрипт

Это быстрый черновик для будущей, развернутой заметки в блог.

Иногда нужно что-то массово сделать с элементами инфоблока, если их много можно упереться в лимиты.
Пошаговый скрипт для обработки элементов.

С помощью этого скрипта можно обработать элементы пошагово.
Размещаете скрипт на странице и открываете ее в браузере.
Код
<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

use Bitrix\Main\Loader;
Loader::includeModule("iblock");

$ibId = 5; // Ваш инфоблок
$elsCount = 10; // По сколько элементов обрабатывать за шаг
$lastId = $_POST['LAST_ID'];
$i = 0;
$ibElements = CIBlockElement::GetList(
    array('ID' => 'ASC'),
    array(
        'IBLOCK_ID' => $ibId,
        '>ID' => $lastId
    ),
    false,
    array(
        'nTopCount' => $elsCount
    ),
    array(
      // Тут указываете поля элемента, которые нужны для обработки
      // Для примера, нужен только ID
      'ID'
    )
);
while ($dbRes = $ibElements->Fetch()) {
    // Тут пишите свой обработчик элементов
    // Для примера удаление элементов
    CIBlockElement::Delete($dbRes['ID']);
    $lastId = $dbRes['ID'];
$i++;
}
?>
<form action="" method="POST">
        <input type="text" name="LAST_ID" value="<?echo $lastId > 2 ? $lastId : '1';?>">
        <button type="submit" id="go">Go</button>
</form>
<? if ($i > 1) {?>
    <script>
        $('#go').click();
    </script>
<?
} else {
    ?>
    Элементы обработаны
    <?php
} ?>

Скрипт написан по быстрому.

Смысл в том что, пошагово отправляем на страницу ID последнего обработанного элемента элемента
и на каждом шаге обновляем этот ID получая по nTopCount элементов за шаг.
Стартуем c 1-го ID, даже  если такого ID нет, счетчик сместится до ближайшего существующего.

В примере, пошагово удаляются элементы инфоблока. Но вы можете использовать это для любой обработки элементов.
Что-то перезаписать в них, изменить, обновить цены, остатки и так далее. В общем, что угодно.
Видеоуроки по
1С-Битрикс
на моем Boosty канале Видео
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

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

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

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

Добавить все свойства инфоблока в умный фильтр одним разом

Если у вас достаточно много свойств, в инфоблоке с товарами, например: больше 1000-чи, после интеграции с 1С или импорта...

Запретить оплату с внутреннего счета, если в корзине есть определенный товар

Задача: пользователи могут оплачивать заказы с бонусного счета (штатный внутренний счет), но если в корзине&nbsp...

Настройка обмена между 1С:Предприятие и магазином на "1С-Битрикс24: Интернет-магазин + CRM" по REST протоколу

В этой заметке расскажу как настроить синхронизацию между 1С:предприятие и "1С-Битрикс24: Интернет-магазин + CR...

Смена вида карточек товаров в catalog.section с иммитацией AJAX

Смену вида карточек товаров, в разделе каталога, можно реализовать с помощью сессии, записывая в нее нужный вида шаблона...

Пункты меню из разделов инфоблока Битрикс

В принципе это стандартная возможность системы управления битрикс, но почему-то часто спрашивают как это сделать. Возмож...

Вывести товары в каталоге перебрав их по свойству и разделив на секции.

Задача: В каталоге, у товаров, есть свойство типа список с названием "Тип изделия" и кодом "TIP_IZDELIYA&...

Fancybox в стандартном шаблоне детальной карточки товара, 1С-Битрикс, вместо всплывающего окна и лупы.

Задача: заменить работу с изображениями в стандартном или кастомном шаблоне детальной карточки (catalog.element)...

Сортировать товары по названию, цене и дате поступления в каталоге Битрикс

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