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

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

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

С помощью этого скрипта можно обработать элементы пошагово.
Размещаете скрипт на странице и открываете ее в браузере.
Код
<?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
} ?>

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

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

В примере, пошагово удаляются элементы инфоблока. Но вы можете использовать это для любой обработки элементов.
Что-то перезаписать в них, изменить, обновить цены, остатки и так далее. В общем, что угодно.
Изменено: Михаил Базаров - 19.09.2022 15:37:58
 
Да, подразумевается что на странице подключен jquery
Опять таки, в самой заметке все будет переведено на более не зависимый режим работы.
 
Будет ли запись по данному скрипту ?
 
Цитата
Гость написал:
Будет ли запись по данному скрипту ?
да, ни как не допишу ее - думаю через пару недель выложу
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе