Модуль «Корзина» (recyclebin) позволяет не удалять данные безвозвратно, а временно сохранять их с возможностью восстановления.
Это стандарт для задач, сделок CRM и элементов инфоблоков.
1. Перемещение в корзину
Если сущность поддерживает корзину (например, задачи), стандартный метод Delete часто имеет опцию «в корзину». Но можно использовать и прямой API корзины для своих сущностей.
use Bitrix\Recyclebin\Recyclebin;
// Регистрируем удаление
$recyclebin = new Recyclebin($moduleId, $entityType, $entityId);
$recyclebin->setName("Название удаленного элемента");
$recyclebin->setData(['field1' => 'value1', 'field2' => 'value2']); // Сохраняем данные для восстановления
$result = $recyclebin->save();
if ($result->isSuccess()) {
echo "Элемент перемещен в корзину. ID записи: " . $result->getId();
// Теперь можно физически удалять данные из основной таблицы
}2. Поиск в корзине
use Bitrix\Recyclebin\Internals\RecyclebinTable;
$res = RecyclebinTable::getList([
'filter' => [
'=MODULE_ID' => 'my.module',
'=ENTITY_TYPE' => 'my_entity'
]
]);
while ($item = $res->fetch()) {
echo "Удаленный элемент: {$item['NAME']} (ID в корзине: {$item['ID']})";
}3. Восстановление из корзины
$recyclebinId = 10; // ID записи в корзине
$result = Recyclebin::restore($recyclebinId);
if ($result->isSuccess()) {
echo "Элемент восстановлен!";
}При восстановлении сработает событие OnBeforeRecycleBinRestore, где ваш модуль должен получить сохраненные данные (getData()) и заново создать запись в своей таблице.
Вывод:
Интеграция с модулем recyclebin — правило хорошего тона для важных данных.
Это защищает пользователей от случайного удаления и снижает нагрузку на техподдержку.
Recyclebin, корзина битрикс, CRecycleBin, удаление в корзину, восстановление из корзины, API корзины, OnBeforeRecycleBinAdd