Как удалить файлы и сущности в корзине Битрикс24, которые уже там год назад, несмотря на то, что установлена настройка "Удалять через 30 дней"?

Как удалить корзину "общего диска" без возможности выбрать все элементы одновременно?
  • 8 мая 2024 г. 17:10
Ответы на вопрос 2
Для удаления файлов и сущностей из корзины Битрикс24, которые уже там более года, можно воспользоваться следующими шагами:

1. Откройте раздел "Диск" в вашем Битрикс24.
2. Перейдите в раздел "Корзина".
3. Найдите файлы или сущности, которые вы хотите удалить, и отметьте их галочкой.
4. Нажмите на кнопку "Удалить" и подтвердите удаление.

Если установлена настройка "Удалять через 30 дней", то возможно файлы и сущности, которые находятся в корзине уже более года, не будут автоматически удалены. В этом случае нужно удалить их вручную, следуя описанным выше шагам.

Чтобы удалить корзину "общего диска" без возможности выбрать все элементы одновременно, можно также поступить пошагово:

1. Откройте раздел "Диск" в вашем Битрикс24.
2. Перейдите в раздел "Общий диск".
3. Откройте корзину данного диска.
4. Перейдите по каждой папке и удаляйте файлы и сущности по очереди, находясь внутри каждой папки.

Это может занять некоторое время, особенно если в корзине "общего диска" есть много файлов и папок. Но таким образом можно удалить все элементы из корзины "общего диска" без возможности выбрать все элементы одновременно.
За эту корзину отчевают таблицы 

b_recyclebin
b_recyclebin_data
b_recyclebin_files

Собственно, варварский способ: truncate.

Способ для любителей проводить через ядро:

use Bitrix\Main\Loader;
use Bitrix\Recyclebin\Internals\Models\RecyclebinTable;


// Функция для удаления порции записей из корзины
function deleteRecycleBinRecords($limit = 50)
{
	Loader::includeModule('recyclebin');

    // Получаем IDs первых $limit записей из корзины
    $result = RecyclebinTable::getList([
        'select' => ['ID'], // Выбираем только ID
        'limit' => $limit,  // Ограничиваем выборку
        'order' => ['ID' => 'ASC'], // Сортируем по ID
    ]);

    $idsToDelete = [];
    while ($item = $result->fetch()) {
        $idsToDelete[] = $item['ID'];
    }

    if (empty($idsToDelete)) {
        echo "Корзина пуста.\n";
        return false; // Нет записей для удаления
    }

    // Удаляем каждую запись
    foreach ($idsToDelete as $id) {
		\Bitrix\Recyclebin\Recyclebin::remove($id);
    }

    return true; // Есть удаленные записи
}


deleteRecycleBinRecords(100);

echo "Корзина очищена.\n";


Можете написать своего агента, воткнуть в крон или позапускать пару тысяч раз в консоли.
Похожие вопросы