Фильтрация CCalendarEvent::getList или отчистка таблицы b_calendar_event

По итогу аудита Битрикс24 получаем, что таблица b_calendar_event за 5 лет разрослась до объема 2,8Г. Данные устарели необходимо их удалить.

Для начала обратился к методу CCalendarEvent::getList, но как показала практика фильтрация в данном методе не работает, поэтому для поиска событий использовал другой метод EventTable::getList:


use Bitrix\Main\Loader;
use Bitrix\Calendar\Internals\EventTable;

Loader::includeModule('calendar');
$events = EventTable::getList([
    'select' => ['ID'],
    'filter' => [
        'DELETED' => 'N', // Исключаем уже удаленные события
    ],
    'order' => ['DATE_FROM' => 'ASC'], // Сортировка по дате
    'limit' => 10, // Максимум 10 событий
]);
while ($event = $events->fetch()) {
    $result = EventTable::delete($event['ID']); // Удаляем событие
    if ($result->isSuccess()) {
        echo "Событие с ID {$event['ID']} успешно удалено.
"; } else { echo "Ошибка при удалении события с ID {$event['ID']}.
"; } }
Связаться с нами

Свяжитесь с нами удобным для вас способом

Наши контакты
Написать нам