• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/internals/trace.php
  • Класс: Bitrix\Crm\Tracking\Internals\TraceTable
  • Вызов: TraceTable::deleteUnusedTraces
static function deleteUnusedTraces($limit = 200)
{
	$optionCode = 'tracking_trace_del_time';
	$ts = (int)Option::get('crm', $optionCode, 0);
	if ($ts && (time() - $ts) < 36000)
	{
		return;
	}

	$channelCodes = [];
	foreach (Channel\Factory::getCodes() as $code)
	{
		if (Channel\Factory::create($code)->isSupportTraceDetecting())
		{
			$channelCodes[] = $code;
		}
	}

	$rows = static::getList([
		'select' => ['ID'],
		'filter' => [
			' (new DateTime())->add('-1 day'),
			'=ENTITY.ID' => null,
			'=CHANNEL.CODE' => $channelCodes,
		],
		'limit' => $limit ?: 50,
	])->fetchAll();
	foreach ($rows as $row)
	{
		static::delete($row['ID']);
	}

	if ($limit && $limit > count($rows))
	{
		Option::set('crm', $optionCode, time());
	}
}