Меню

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

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
} ?>

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

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

В примере, пошагово удаляются элементы инфоблока. Но вы можете использовать это для любой обработки элементов.
Что-то перезаписать в них, изменить, обновить цены, остатки и так далее. В общем, что угодно.
Изменено: Михаил Базаров - 27.05.2024 15:43:47
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

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

Настройка: Redis кеширование для 1С-Битрикс, под Ubuntu

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

Запретить изменения описаний товаров при выгрузке из 1С УТ на сайт

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

Малая корзина Битрикс, упрощенный шаблон

Шаблон малой корзины битрикс, который можно вывести в боковом разделе шаблона или в шапке интернет-магазина. Код окульту...

Отфильтровать новости в Битрикс за заданный период

Иногда, нужно отфильтровать элементы (новости например) по дате в Битрикс, с помощью компонента "список новостей". Для э...

Подключение jquery из ядра битрикс и объединение своих скриптов в один файл

Если используете большое количество js скриптов на сайте. Например: фансибокс, всяческие галереи и прочее- то таких внеш...

Автоматическое создание подразделов в инфоблоке при добавлении раздела: реализация события OnAfterIBlockSectionAdd

Задача: когда контент-менеджер создает раздел в инфоблоке, необходимо автоматически создавать подразделы с заранее задан...

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

Если вы хотите сделать подгрузку любой страницы сайта в боковой слайдер, для этого в битриксе есть метод BX.SidePanel.In...

Time Capsule на Windows 10. Хранение бекапов Time Machine на компьютере с Windows 10

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

Быстрая отписка от всех рассылок модуля "E-mail маркетинг", в кабинете пользователя

Задача: дать пользователям возможность отписаться от всех рассылок "E-mail маркетинга", не только по ссылке из...