Как удалить инфоблок битрикс
Перейти к содержимому

Как удалить инфоблок битрикс

  • автор:

Удалить все свойства инфоблока в админке в Битрикс

Для использования этого скрипта вам необходимо открыть административную часть вашего сайта на платформе Битрикс в браузере Google Chrome. Затем откройте JavaScript Console, нажав правую кнопку мыши на любом месте страницы и выбрав «Исследовать элемент» (Inspect). В появившемся окне инструментов выберите вкладку «Console» и вставьте указанный ниже скрипт в поле команд консоли. Нажмите Enter, и все свойства инфоблока будут выделены для удаления.

Выделить сразу все чекбоксы:

var inputs = document.querySelectorAll("input[type=checkbox][value=Y]"); var elements = []; for (var i=0; i_DEL$/.test(inputs[i].id)) inputs[i].checked = true;

Выделить сразу выбранный диапазон чекбоксов:

var startPropertyId = 1; // начальный идентификатор свойства var endPropertyId = 10; // конечный идентификатор свойства var inputs = document.querySelectorAll("input[type=checkbox][value=Y]"); var elements = []; for (var i = 0; i < inputs.length; i++) < var propertyId = inputs[i].id.split('_')[2]; if (inputs[i].name == inputs[i].id && /^IB_PROPERTY_\d_DEL$/.test(inputs[i].id)) < if (propertyId >= startPropertyId && propertyId > >

Скрипт удаления элементов Битрикс

Логика скрипта (скачать):
1) Задаём set_time_limit
2) Включаем вывод ошибок
3) Подключаем prolog bitrix
4) Подключаем нужный модуль iblock
5) Вытаскиваем элементы
6) Собираем ID-шники
7) Делаем перебор массива ID-шников и удаляем элементы

set_time_limit(60000); // включаем вывод ошибочек ini_set(‘error_reporting’, E_ALL); ini_set(‘display_errors’, 1); ini_set(‘display_startup_errors’, 1); // включаем замер исполнения скрипта // подключаем prolog bitrix require $_SERVER[«DOCUMENT_ROOT»] . ‘/bitrix/modules/main/include/prolog_before.php’; // подключаем нужные модули CModule::IncludeModule(«iblock»); $infoblock = 3; // Инфоблок с ID ХХХ (необходимо установить ID нужного инфоблока) //Вытаскиваем элементы $arSelectElems = array ( «ID» ); $arFilterElems = array ( «IBLOCK_ID» => $infoblock ); $arSortElems = array ( «NAME» => «ASC» ); $arResult[«ELEMENTS»] = array(); $rsElementElement = CIBlockElement::GetList(array(‘left_margin’ => ‘asc’), $arFilterElems, false, false, $arSelectElems); while ( $ar_Element = $rsElementElement->Fetch() ) < $ar_Resu[] = array( // собираем массив того, что нам нужно 'ID' =>$ar_Element[‘ID’], // id ); > //Удаляем элементы foreach ($ar_Resu as $section)

Ещё статьи:

08.11.2023 Прощай bitrix.xscan, не стало битрикс скан модуля
Сегодня увидел, что полезного модуля bitrix.xscan не стало на маркетплейсе. ID: 464

26.07.2023 Сохренение ютм меток в сессию
Вариант сохренения ютм меток в сессию в афйле init.php ID: 462

29.06.2023 Почему DNS есть, но ошибка «Не удалось получить записи с DNS серверов»
Проверка на VPS показывает, что DNS есть, но по факту ошибка «Не удалось получить записи с DNS серверов» ID: 461

Форум

Как удалить инфоблок. Я полагаю, что этот вопрос необходимо вынести в документацию.
Я думала, что это делается так: Контент -> Информационные блоки -> Типы информационных блоков.
Там выбираем те блоки, которые нужно удалить и жмем на крестик внизу.

Оказывается как-то не так. Вопрос: как?

Сообщений: 1126 Баллов: 569 Регистрация: 23.03.2005
05.07.2006 13:57:22

Цитата
Гость пишет:
Оказывается как-то не так. Вопрос: как?

именно так и удаляются типы информационных блоков.
Чтобы удалить информационный блок, нужно зайти в его тип и там проделать вышеуказанную операцию.

студия Leveret
05.07.2006 15:29:57

Не получается. Пожалуйста, укажите на раздел в документации, где подробно указана данная процедура. Я думаю, что такой раздел просто обязан быть в документации.

05.07.2006 15:34:42

Не работают функции редактирования и удаления записей. И еще раз прошу дать ссылку нараздел в документации.

05.07.2006 15:40:06
Просто удивительно! в опере все работает, в а IE — нет.
Администратор
Сообщений: 2449 Баллов: 271 Регистрация: 30.12.2002
05.07.2006 16:01:34

Цитата
Гость пишет:
Просто удивительно! в опере все работает, в а IE — нет.

Не совсем понятен вопрос, что и где не получается удалить?

Если проблему решить не удается, создайте пожалуйста обращение в техподдержку, проконсультируем.

Заглянувший
Сообщений: 4 Регистрация: 27.09.2016
27.09.2016 09:30:58
У меня инфоблок создался с пустым именем. теперь не могу его удалить
Как удалить его
Заглянувший
Сообщений: 2 Регистрация: 28.10.2017
01.07.2021 15:53:30

Цитата
Сико Дос написал:
У меня инфоблок создался с пустым именем. теперь не могу его удалить
Как удалить его

Поддерживаю, такая же ситуация. Не знаю как так получилось, но у клиента Инфоблок с пустым именем, соответственно нет возможности его удалить стандартными средствами. Только через базу походу (если он там будет)

Страницы: 1

Центр поддержки

Продукты

Управление сайтом
Битрикс24
Интернет-магазин + CRM

Решения

Для интернет-магазинов
Каталог готовых решений

Внедрение

Выбрать партнера
Проверить партнера
Стать партнером

1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

Контент для лиц от 16 лет и старше

© 2001-2024 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности

1С-Битрикс. Как массово и достаточно быстро удалить все разделы в инфоблоке?

Добрый день!
Подскажите пожалуйста как массово и достаточно быстро удалить все разделы в инфоблоке?
Всего разделов 55к
Через админку всё виснет, несмотря на больше max execution time.

Скрипт такой набросал, но как-то долговато работает.. Или это норма?

 'asc'), array('IBLOCK_ID' => $infoblock)); while ( $ar_Section = $rs_Section->Fetch() ) < $ar_Resu[] = array( // собираем массив того, что нам нужно 'ID' =>$ar_Section['ID'], // id раздела 'NAME' => $ar_Section['NAME'], // имя раздела (что нас, собственно, интересует) 'IBLOCK_SECTION_ID' => $ar_Section['IBLOCK_SECTION_ID'], ); > foreach ($ar_Resu as $section) < CIBlockElement::Delete($section["ID"]); >?>
  • Вопрос задан более трёх лет назад
  • 7632 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 4
можно попробовать отключить пересчет дерева или прямо из базы грохнуть
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
TechNOIR @TechNOIR Автор вопроса
А как отключить пересчет дерева?
Илья @jasper-blondin

Скрипт уже закончил работу?
Я так понимаю, Вы запустили скрипт, а потом написали вопрос.

Оптимизировать можно следующим образом:
— в метод GetList добавить массив с полями выборки array(«ID»), чтобы не тянуть из базы значения, которые не нужны
— выполнять метод Delete прямо в теле цикла while, чтобы не собирать без надобности массив

Если все еще не хватает времени на выполнение, написать простенькую клиентскую часть с AJAX-запросом. Будет работать медленно, но гарантировано выполнит задачу и не уйдет в таймаут.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

winer

занимаюсь разработкой сайтов на 1c-bitrix

При большом количестве разделов (30к+), Bitrix начинает вставлять палки в колеса как разработчику, так и пользователю, который будет работать с такими ИБ.
— Списки элементов ИБ будут безбожно тормозить в интерфейсе. На каждом хите будет добавляться фильтр по разделу.
— Редактировать их становится очень затруднительно, опять же из за долгой загрузки интерфейса и большого времени изменения.

Всё это из за того что разделы это NESTED SETS деревья. При добавлении/удалении раздела происходит вычисление LEFT_MARGIN и RIGHT_MARGIN для каждого раздела во всем инфоблоке.

Для добавления и обновления (CIBlockSection::Add, CIBlockSection::Update) есть параметр метода $bResort, который позволяет отключить этот перерасчёт в момент их выполнения.
Только после этого ОБЯЗАТЕЛЬНО надо выполнять CIBlockSection::Resort.

Это можно использовать при большом количестве операций Update и Add. Сначала выполняете все операции Update и Add с $bResort=false, а после них CIBlockSection::Resort

  • пересчет границ NESTED SETS,
  • CIblockElement::GetList (поиск вложенных элементов)
  • CIblockElement::Delete (если в разделе были элементы),
  • Запрос к таблице которая хранит множественные привязки элемента к разделам (поиск значений и их удаление)
  • CIBlockSection::GetList (поиск вложенных разделов)
  • CIBlockSection::Delete (удаление вложенных разделов)
  • Переиндексирование поиска
  • Запросы к UF_* полям раздела (поиск значений и их удаление)
  • При заполненных SEO полях, запросы к таблицам которые их хранят (поиск значений и их удаление)
  • При расширенном управлении правами это еще запросы к таблицам которые хранят эти настройки (поиск значений и их удаление)

и это скорее всего не полный список, а только то что могу назвать по памяти.

Нельзя быстро удалить разделы стандартным API без написания своих запросов к БД которые проделают всё что описано выше. В идеале надо взять код стандартного CIBlockSection::Delete, внимательно его изучить и написать свой метод который будет с помощью прямых запросов делать тоже самое, но оптимально.

Если же вопрос стоит в том чтобы удалить эти разделы за ЛЮБОЕ количество времени, тогда можно написать страничку с пошаговым удалением разделов, через ajax запросы. Причем надо учитывать, что вначале разделы будут удаляться ОЧЕНЬ медленно и ajax запрос может отвалиться по таймауту, поэтому надо будет за один шаг удалять пару разделов. А ближе к границе в 10к разделов, за один шаг можно будет удалять уже большее количество.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *