Просмотров: 67365
Дата последнего изменения: 19.04.2023
Сложность урока:
2 уровень — несложные понятия и действия, но не расслабляйтесь.
3
4
5
Недоступно в лицензиях:
Ограничений нет
Что может помешать
удалению сайта
Удаление сайта возможно только из Административного раздела со страницы Список сайтов (Настройки > Настройки продукта > Сайты > Список сайтов). Перед удалением сайта необходимо удалить
сущности
Сущность — любой конкретный или абстрактный объект в рассматриваемой предметной области.
В рамках 1С-Битрикс: Управление сайтом сущности — это инфоблоки, привязки разного вида, правила, скидки, валюты, форумы и прочее.
, которые имеют отношение к удаляемому сайту (или снять привязку с них).
В некоторых случаях зависимость — сложная, например, инфоблок имеет торговые предложения, которые сами по себе являются инфоблоком.
Если какие-то сущности невозможно удалить, сайт тоже не удаляется и система выведет ошибки. В коде ошибок, как правило, указывается класс или метод, по которому определяется где искать объект для удаления или отвязывания:
Примеры ошибок, возникающих
при удалении сайтов
| Ошибка при удалении в CForumNew::OnBeforeLangDelete (forum) | Не удалён форум |
| Ошибка при удалении в CIBlock::OnBeforeLangDelete (iblock) | Не удалены инфоблоки. Привязанные инфоблоки могут находиться в разных типах инфоблоков. |
| Ошибка удаления. Возможно есть ссылающиеся объекты. | Не удалены сущности, ссылающиеся на удаляемые объекты. Например, при удалении инфоблока, являющегося торговым каталогом, Для удаления торгового каталога нужно предварительно сделать его обычным инфоблоком, выполнив два действия:
не отвязаны инфоблоки, являющиеся торговыми предложениями для удаляемого инфоблока. |
| Ошибка при удалении в CSalePersonType::OnBeforeLangDelete (sale) | Ошибка связана с наличием типов плательщиков привязанных к сайту. |
| В заказах используется тип плательщика с ID=* | Не удалены заказы, относящиеся к удаляемым типам плательщиков |
| Ошибка при удалении в CRubric::OnBeforeLangDelete (subscribe) | Не удалены привязанные к сайту рассылки. |
| Ошибка при удалении в модуле BitrixLandingSite::onBeforeMainSiteDelete (landing) | Нужно сначала удалить страницы соответствующего сайта в разделе Сайты24. |
Сущности, которые могут запретить
удаление сайта
Список сущностей системы, имеющих привязку к сайтам и которые могут запретить удаление сайта:
- Инфоблоки (Контент> Инфоблоки > Типы инфоблоков > Название инфоблока)
- Привязка одного инфоблока к другому в качестве торгового предложения. (Контент> Инфоблоки > Типы инфоблоков > Название инфоблока, закладка Торговый каталог)
- Привязка одного инфоблока к другому в качестве источника для полей Привязка к разделам и Привязка к элементам и других. (Контент> Инфоблоки > Типы инфоблоков > Название инфоблока, закладка Свойства)
- Страницы сайтов (Сайты > Сайты 24 > Название сайта > Название страницы)
- Правила работы с корзиной (Маркетинг > Товарный маркетинг > Правила работы с корзиной > Правила работы с корзиной)
- Скидки на товар (Маркетинг > Товарный маркетинг > Скидки на товар > Скидки на товар)
- Накопительные скидки (Маркетинг > Товарный маркетинг > Накопительные скидки)
- Список рассылок Email-маркетинга (Маркетинг > Email-маркетинг > Список рассылок)
- Список триггерных рассылок (Маркетинг > Триггерные рассылки > Список рассылок)
- Настройка карты сайта (Маркетинг > Поисковая оптимизация > Настройка sitemap.xml)
- Привязка баннеров (Маркетинг > Баннерная реклама > Баннеры)
- Контракты (Маркетинг > Баннерная реклама > Контракты)
- Заказы (Магазин > Заказы либо Магазин > Покупатели > Список покупателей)
- Покупатели (Магазин > Покупатели > Список покупателей)
- Брошенные корзины пользователей (Магазин > Покупатели > Корзины)
- Склады (Магазин > Складской учет > Склады)
- Складские документы (Магазин > Складской учет > Документы)
- Службы доставки (Магазин > Настройки > Службы доставки)
- Платежная система (Магазин > Настройки > Платежные системы)
- Налоги (Магазин > Настройки > Налоги > Список налогов)
- Привязка налоговых ставок к налогам (Магазин > Настройки > Налоги > Ставки налогов)
- Типы плательщиков (Магазин > Настройки > Типы плательщиков)
- Аффилиаты (Магазин > Аффилиаты > Аффилиаты)
- Планы комиссий (Магазин > Аффилиаты > Планы)
- Пирамиды (Магазин > Аффилиаты > Пирамида)
- Группы опросов (Сервисы > Опросы > Дополнительно > Группы опросов)
- Веб-формы (Сервисы > Веб-формы > Настройка форм)
- Выпуски рассылки (Сервисы > Рассылки > Выпуски)
- Подписчики (Сервисы > Рассылки > Подписчики)
- Список рассылок (Сервисы > Рассылки > Список рассылок)
- Справочники техподдержки (Сервисы > Техподдержка > Справочники > Название справочника)
- Уровни техподдержки (Сервисы > Техподдержка > Уровни поддержки)
- Обращения (Сервисы > Техподдержка > Обращения)
- Группы блогов (Сервисы > Блоги > Группы блогов)
- Форумы (Сервисы > Форумы > Список форумов)
- Темы Социальной сети (Сервисы > Социальная сеть > Темы)
- Группы Социальной сети (Сервисы > Социальная сеть > Группы)
- Учебные курсы (Сервисы > Обучение > Курсы)
- Привязка Учебной группы к курсу (Сервисы > Обучение > Учебные группы)
- Почтовые ящики (Сервисы > Почта > Почтовые ящики)
- Почтовые сервисы (Сервисы > Почта > Почтовые сервисы)
- Создание Google Sitemap (Настройки > Поиск > Google Sitemap)
- Правила сортировки (Настройки > Поиск > Правила сортировки)
- Стоп-лист (Настройки > Проактивная защита > Стоп-лист)
- Облако 1С-Битрикс (Настройки > Облако 1С-Битрикс > Ускорение сайта CDN)
- Почтовые шаблоны (Настройки > Настройки продукта > Почтовые события > Почтовые шаблоны)
- Правила обработки адресов (Настройки > Настройки продукта > Обработка адресов > Правила обработки)
Контент
Сайты 24
Маркетинг
Магазин
Сервисы
Настройки
Удаление сайтов
при многосайтовости
Возможны 2 варианта:
- Вы удаляете сайт, который не содержит ядро продукта.
В этом случае нужно лишь удалить или снять привязку со всех объектов, которые имеют отношение к удаляемому сайту. Подсказки об оставшихся объектах или зависимостях система выведет как ошибки. Ликвидировав ошибки, вы снимете запрет и сайт удалится.
- Вы удаляете сайт, который содержит ядро (к примеру, сайт s1) и на который настроены
симлинки
Символьная ссылка: (также симлинк от англ. Symbolic link, символическая ссылка) — cпециальный файл, для которого в файловой системе не хранится никакой информации, кроме одной текстовой строки. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке.
Подробнее о настройке симлинков…
с других сайтов, например, с сайта s2.В этом случае, нужно из папки основного (содержащего ядро) сайта s1 перенести папки ядра (
/bitrix,/localи/upload, то есть все те папки, на которые настроены симлинки) в папку сайта s2, замещая симлинки. После переноса можно удалить папку сайта s1.
Развернуть комментарии
Перейти к содержимому
Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.
Ситуация: при настройке в 1С и тестах обменов в Битрикс выгружается номенклатура. На сайте создались несколько ненужных каталогов товаров и предложений. Содержимое этих ИБ не использовалось в работе сайта (не создавались заказы и пр.).
Проблема: при попытке удалить любой из этих ИБ возникает ошибка: “Ошибка удаления. Возможно есть ссылающиеся объекты.”

Задача: таки удалить бесполезные инфоблоки, появившиеся врезультате тестов.
Причина: инфоблоки каталога и предложений создаются и всегда сосуществуют вместе, ссылаясь друг на друга. Просто взять и сразу удалить их нельзя. Хотя решение очень простое.
Решение
Для начала следует открыть админку и перейти в раздел Контент > Инфоблоки > Типы инфоблоков > Каталог.
Для наглядности я переименовал ненужные ИБ, которые нужно удалить, тебе этого можно не делать:
Открываем ИБ каталога товаров (не предложений), на вкладке Торговый каталог снимаем отметки с чекбоксов Является торговым каталогом и Инфоблок имеет торговые предложения:
Сохраняем. Удаляем.
Не могу удалить пустые инфоблоки каталога и торгового предложения
|
Пользователь 116789 Постоянный посетитель Сообщений: 166 |
Были инфоблоки каталога и торгового предложения потом вместо них создали другие. Эти очистили и хотели удалить. Не могу удалить пустые инфоблоки каталога и торгового предложения |
|
Пользователь 65972 Постоянный посетитель Сообщений: 358 |
Попробуйте сначала удалить инфоблок торговых предложений, потом — каталога |
|
Пользователь 129963 Заглянувший Сообщений: 4 |
#3 10 09.08.2012 18:45:03 Сначала нужно отвязать инфоблок торговых предложений от инфоблока каталога (они ссылаются друг на друга вот и не дают удалить, снимите галочку в настройках инфоблока каталога «Инфоблок имеет торговые предложения» и можно будет удалить оба) |
|
Пользователь 116789 Постоянный посетитель Сообщений: 166 |
спасибо, действительно надо было просто убрать галку |
|
Пользователь 213947 Заглянувший Сообщений: 1 |
Большое спасибо, помогло. |
|
Пользователь 452559 Заглянувший Сообщений: 1 |
Поле с галочкой неактивно, как убрать связь? |
|
Администратор Сообщений: 9025 Epic fail — сказать «это так просто» и не суметь сделать |
Покажите скриншот. Не надо сверлить зубы через задний проход дрелью от Сваровски |
|
Пользователь 1474153 Посетитель Сообщений: 29 |
ПОСМОТРИТЕ в папке инфоблока новости, там также необ удалить новости относящиеся к сайту2 |
|
Пользователь 764867 Заглянувший Сообщений: 9 |
#9 0 15.09.2018 09:38:19 Большое спасибо! Помогло. |
Перейти к содержимому
Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.
Ситуация: при настройке в 1С и тестах обменов в Битрикс выгружается номенклатура. На сайте создались несколько ненужных каталогов товаров и предложений. Содержимое этих ИБ не использовалось в работе сайта (не создавались заказы и пр.).
Проблема: при попытке удалить любой из этих ИБ возникает ошибка: «Ошибка удаления. Возможно есть ссылающиеся объекты.»
Задача: таки удалить бесполезные инфоблоки, появившиеся врезультате тестов.
Причина: инфоблоки каталога и предложений создаются и всегда сосуществуют вместе, ссылаясь друг на друга. Просто взять и сразу удалить их нельзя. Хотя решение очень простое.
Решение
Для начала следует открыть админку и перейти в раздел Контент > Инфоблоки > Типы инфоблоков > Каталог.
Для наглядности я переименовал ненужные ИБ, которые нужно удалить, тебе этого можно не делать:
Открываем ИБ каталога товаров (не предложений), на вкладке Торговый каталог снимаем отметки с чекбоксов Является торговым каталогом и Инфоблок имеет торговые предложения:
Сохраняем. Удаляем.
|
0 / 0 / 0 Регистрация: 01.09.2015 Сообщений: 1 |
|
|
1 |
|
Удаляю каталог товаров. Ошибка удаления. Возможно есть ссылающиеся объекты. Как исправить?(01.09.2015, 14:56. Показов 3562. Ответов 1
Удаляю каталог товаров. Ошибка удаления. Возможно есть ссылающиеся объекты. Как решить?((((
__________________ 0 |
|
2 / 2 / 0 Регистрация: 11.08.2015 Сообщений: 33 |
|
|
01.09.2015, 14:59 |
2 |
|
Во-первых, нужно отвязать пакет предложений. И еще парочку действий совершить)) 0 |
Иногда приходится сталкиваться с сайтами, которые размещены на очень слабом хостинге. Если на таком хостинге нужно удалить все элементы инфоблока — тут или удалять напрямую, через базу данных (что не очень хорошо), либо постранично удалять элементы, что тоже муторно:(
Представляю вашему вниманию скрипт, позволяющий настроить автоматическое удаление всех элементов инфоблока с постраничной переборкой элементов в автоматическом режиме:
use BitrixMain;
use BitrixMainApplication;
use BitrixMainLocalizationLoc as Loc;
use BitrixMainDataCache;
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/prolog.php");
Loc::loadMessages(__FILE__);
if (!MainLoader::includeModule('iblock'))
{
die('Module `iblock` is not installed');
}
CJSCore::Init(array('jquery'));
$POST_RIGHT = $APPLICATION->GetGroupRight("catalog");
// если нет прав - отправим к форме авторизации с сообщением об ошибке
if ($POST_RIGHT == "D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
if ($request->isPost() && $request->get('action') && $POST_RIGHT == "W" && check_bitrix_sessid())
{
$arResult = array();
$arPostData = $request->getPostList()->toArray();
switch ($request->get('action'))
{
case 'clearElements':
$arSelect = Array("ID", "IBLOCK_ID");
$arFilter = Array("IBLOCK_ID" => IntVal($arPostData['IBLOCK_ID']));
$maxForStep = 5;
$pagesParams = ($arPostData['num'] == 1) ? array('nPageSize' => $maxForStep) : array('nTopCount' => $maxForStep);
$res = CIBlockElement::GetList(Array(), $arFilter, false,
$pagesParams, $arSelect);
$arResult['CNT'] = $res->NavPageCount;
global $DB;
while ($arFields = $res->GetNext())
{
$DB->StartTransaction();
if (!CIBlockElement::Delete($arFields['ID']))
{
$arResult['STATUS']['ERROR'][] = $arFields['ID'] . ' not deleted!';
$DB->Rollback();
} else
{
$arResult['STATUS']['OK'][] = $arFields['ID'];
$DB->Commit();
}
// $arResult[] = $arFields;
}
break;
default:
print_r($arPostData);
}
if ($request->isAjaxRequest() && !empty($arResult))
{
$APPLICATION->RestartBuffer();
header('Content-type: application/json');
echo BitrixMainWebJson::encode($arResult);
exit();
}
}
$APPLICATION->SetTitle('Обработчик элементов информационного блока');
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php");
class clIblockEntitiesProcessor
{
public static function GetIblockTypes($life_time = 3600 * 24 * 30)
{
$result = false;
$cache_params = array('function' => 'CIBlockType::GetList');
$cache_id = md5(serialize($cache_params));
$cache_dir = __CLASS__;
$cache = Cache::createInstance();
if ($life_time < 0)
{
$cache->clean($cache_id, $cache_dir);
}
if ($cache->initCache($life_time, $cache_id, $cache_dir))
{
$result = $cache->getVars();
} elseif ($cache->startDataCache() && BitrixMainLoader::includeModule('iblock'))
{
$db_iblock_type = CIBlockType::GetList();
while ($ar_iblock_type = $db_iblock_type->Fetch())
{
if ($arIBType = CIBlockType::GetByIDLang($ar_iblock_type["ID"], LANG))
{
$arIBType['NAME'] = htmlspecialcharsEx($arIBType["NAME"]);
$result[$arIBType['IBLOCK_TYPE_ID']] = array(
'IBLOCK_TYPE_ID' => $arIBType['IBLOCK_TYPE_ID'],
'NAME' => $arIBType['NAME'],
);
}
}
$cache->endDataCache($result);
}
return $result;
}
public static function GetIblockList($filter = array(), $life_time = 3600 * 24 * 30)
{
$result = false;
$cache_params = array('function' => 'CIBlock::GetList', 'filter_params' => $filter);
$cache_id = md5(serialize($cache_params));
$cache_dir = __CLASS__;
$cache = BitrixMainDataCache::createInstance();
if ($life_time < 0)
{
$cache->clean($cache_id, $cache_dir);
}
if ($cache->initCache($life_time, $cache_id, $cache_dir))
{
$result = $cache->getVars();
} elseif ($cache->startDataCache() && BitrixMainLoader::includeModule('iblock'))
{
$res = CIBlock::GetList(
Array(),
$filter,
false
);
while ($ar_res = $res->Fetch())
{
$result[$ar_res['ID']] = array(
'ID' => $ar_res['ID'],
'IBLOCK_TYPE_ID' => $ar_res['IBLOCK_TYPE_ID'],
'CODE' => $ar_res['CODE'],
'NAME' => $ar_res['NAME'],
'ACTIVE' => $ar_res['ACTIVE'],
'PICTURE' => $ar_res['PICTURE'],
'DESCRIPTION' => $ar_res['DESCRIPTION'],
'DESCRIPTION_TYPE' => $ar_res['DESCRIPTION_TYPE'],
'CATALOG' => CCatalogSKU::GetInfoByProductIBlock(intval($ar_res['ID'])),
);
}
$cache->endDataCache($result);
}
return $result;
}
public static function GetIblockElementItems(
$arParams = array('filter' => array(), 'select' => false, 'sort' => array('name' => 'asc'),
'page_params' => false, 'group' => false),
$life_time = 3600)
{
if (!isset($arParams['filter']) || empty($arParams['filter'])) return false;
$arFilter = $arParams['filter'];
$arSelect = (isset($arParams['select'])) ? $arParams['select'] : false;
$arSort = (isset($arParams['sort'])) ? $arParams['sort'] : array('name' => 'asc');
$pageParams = (isset($arParams['page_params'])) ? $arParams['page_params'] : false;
$groupParams = (isset($arParams['group'])) ? $arParams['group'] : false;
$result = false;
$cache_params = array();
foreach (array_keys($arParams) as $array_key)
{
if (is_array($arParams[$array_key]))
{
foreach ($arParams[$array_key] as $key => $value)
{
$cache_params[$array_key . '-' . $key] = $value;
}
} elseif (is_bool($arParams[$array_key]))
{
$cache_params[$array_key] = $arParams[$array_key] ? 1 : 0;
}
}
$cache_id = md5(serialize($cache_params));
$cache_dir = __CLASS__ . '/' . __FUNCTION__;
$cache = BitrixMainDataCache::createInstance();
if ($life_time < 0)
{
$cache->clean($cache_id, $cache_dir);
}
if ($cache->initCache($life_time, $cache_id, $cache_dir))
{
$result = $cache->getVars();
} elseif ($cache->startDataCache() && BitrixMainLoader::includeModule('iblock'))
{
$rsItems = CIBlockElement::GetList($arSort, $arFilter, $groupParams, $pageParams, $arSelect);
if (
is_array($arSelect)
&& in_array('IBLOCK_ID', $arSelect)
&& in_array('ID', $arSelect)
)
{
$filterProperties = array();
foreach ($arSelect as $select)
{
if (strpos($select, 'PROPERTY_') !== false)
{
$filterProperties[] = str_replace('PROPERTY_', '', $select);
}
}
while ($arElement = $rsItems->GetNextElement())
{
$arFields = $arElement->GetFields();
if (!empty($filterProperties))
{
foreach ($filterProperties as $arFilterCode)
{
if (!isset($arFields['PROPERTIES'])) $arFields['PROPERTIES'] = array();
$arFields['PROPERTIES'] = array_merge($arFields['PROPERTIES'], $arElement->GetProperties(false, array(
'CODE' => $arFilterCode
)));
// $arFields['PROPERTIES'][$arFilterCode] = ;
}
// $arFields['PROPERTIES'] = $arElement->GetProperties(false,array('CODE'=>$filterProperties));
}
$result[] = $arFields;
}
} elseif (empty($arSelect))
{
while ($arElement = $rsItems->GetNextElement())
{
$arFields = $arElement->GetFields();
$arFields['PROPERTIES'] = $arElement->GetProperties();
$result[] = $arFields;
}
} else
{
while ($arElement = $rsItems->GetNext())
{
$result[] = $arElement;
}
}
if (!empty($result))
{
foreach ($result as $key => $arItem)
{
if (!empty($arItem['PROPERTIES']))
{
foreach ($arItem['PROPERTIES'] as $pCode => $arProperty)
{
$result[$key]['PROPERTIES'][$pCode] = CIBlockFormatProperties::GetDisplayValue(
array('ID' => $arItem['ID'], 'NAME' => $arItem['NAME']), $arProperty, '');
}
}
}
}
if (isset($pageParams) && !empty($pageParams) && $pageParams['nPageSize'] == 1 && !empty($result[0]))
{
$result = $result[0];
}
$cache->endDataCache($result);
}
return $result;
}
}
$tmp = clIblockEntitiesProcessor::GetIblockList(array('ACTIVE' => 'Y'));
$arIblockList = array();
foreach ($tmp as $item)
{
$arIblockList[$item['ID']] = $item;
}
// echo '<pre>'; print_r($arIblockList);echo '</pre>';
?>
<form method="post" action="<? echo $APPLICATION->GetCurPage() ?>"
enctype="multipart/form-data" name="iblocksProcessorForm">
<? echo bitrix_sessid_post(); ?>
<div>
<select name="IBLOCK_ID" id="IBLOCK_ID">
<? foreach ($arIblockList as $arIblock)
{
?>
<option value="<?= $arIblock['ID'] ?>">[<?= $arIblock['ID'] ?>]
<?= $arIblock['NAME'] ?></option>
<? } ?>
</select>
</div>
<div id="loading"><p class="persents" style="display: none;">
Обработано: <span class="pv">0</span>% (Строка: <span class="rv">1</span>/
<span class="maxrows">0</span>) </p></div>
<div>
<button id="DeleteElements">Удалить все элементы</button>
</div>
</form>
<script type="text/javascript">
var deferreds = [];
var i = 10;
var maxRows = false;
var Form;
$(document).ready(function(){
lastSelectedIblock = localStorage.getItem('IBLOCK_ID');
if(lastSelectedIblock!==undefined && parseInt(lastSelectedIblock)>0){
$('form[name="iblocksProcessorForm"]').find('option[value="'+lastSelectedIblock+'"]').attr('selected','selected');
}
});
$(document).on('change','form[name="iblocksProcessorForm"] select[name="IBLOCK_ID"]', function () {
localStorage.setItem('IBLOCK_ID',$(this).val()) ;
});
$(document).on('click', 'form[name="iblocksProcessorForm"] button#DeleteElements', function () {
var that = this;
Form = $(this).parents('form');
var num = 1;
var wait = BX.showWait('loading');
var persentsContainer = Form.find('p.persents');
var PostParams = {
num: num, action: 'clearElements', sessid: Form.find('input[name="sessid"]').val(),
'IBLOCK_ID': Form.find('select[name="IBLOCK_ID"]').val()
};
function work_with_row(num, d) {
var Persents = (parseInt(num)-1) * 100 / parseInt(maxRows);
persentsContainer.find('span.pv').html(Math.round(Persents));
persentsContainer.find('span.rv').html(parseInt(num)-1);
PostParams.num = num;
$.ajax({
type: "POST",
url: location.href,
data: PostParams,
dataType: "json",
success: function (data) {
d && d.resolve();
},
onfailure: function () {
d && d.resolve();
}
});
}
$.ajax({
type: "POST",
url: location.href,
data: PostParams,
dataType: "json"
}).then(function (data) {
if (!maxRows && data.CNT !== undefined) {
maxRows = data.CNT;
var deferreds = [];
var i = 10;
persentsContainer.find('span.maxrows').html(maxRows);
persentsContainer.show();
for (var index = num + 1; index <= maxRows; index++) {
(function (index) {
var d = new $.Deferred();
window.setTimeout(function () {
work_with_row(index, d)
}, 3000 * index + (i++));
deferreds.push(d);
})(index);
}
$.when.apply($, deferreds).done(function () {
$('p.persents').html('Обработка завершена!');
BX.closeWait('loading', wait);
$(that).remove();
});
}
}, function (reason) {
console.debug(reason);
});
return false;
});
</script>
<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php");
Таким образом, при первом аякс-запросе скрипт получает информацию о том, сколько всего страниц ему нужно обработать
(количество элементов на странице выбирается на основании производительности сервера),а дальше уже проходится по всем страницам и производит удаление.
P.S. Скрипт написан в виде страницы административного раздела сайта
Для того чтобы победить ошибку “Ошибка при удалении в CSalePersonType::OnBeforeLangDelete (sale)” нужно проделать следующее:
Открыть раздел Настройки магазина – Типы плательщиков, путь имя_сайта/bitrix/admin/sale_person_type.php?lang=ru и удалить там типы плательщиков привязанные к тому сайту который мы удаляем. Перед удалением, возможно, потребуется удаление заказов связанных с этим плательщиком, путь имя_сайта/bitrix/admin/sale_order.php?lang=ru
Ошибка при удалении в CSalePersonType::OnBeforeLangDelete (sale)
Если вы хотите скрыть сайт от клиентов, то его можно Удалить или Снять с публикации.
Удаление сайтов
Если необходимо совсем удалить сайт вместе со всеми его страницами, то выберите Удалить сайт в списке действий.

Удаленные сайты не пропадают, а сначала помещаются в Корзину.

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

Снятие сайта с публикации
Если вы хотите оставить сайт на вашем Битрикс24, но при это запретить пользователям доступ к нему, то можете просто снять его с публикации. В дальнейшем, этот сайт можно будет опубликовать заново с тем же адресом.
Вы можете снять с публикации как весь сайт, так и каждую отдельную страницу в нем.

Спасибо, помогло!
Спасибо 
Это не то, что я ищу
Написано очень сложно и непонятно
Есть устаревшая информация
Слишком коротко, мне не хватает информации
Мне не нравится, как это работает





