Самое простое — кастомизировать компонент sale.basket.order.ajax.
Код, который отвечает за авторегистрацию покупателя там находится элементарно:
[CODE]$user_id = CSaleUser::DoAutoRegisterUser($payerEMail, $payerName, SITE_ID, $arErrors, array());
[/CODE]По сути вам нужно заменить использование этого метода на что-то свое:
1. Вы можете искать пользователя по email и, если такой пользователь найден, привязать заказ к нему.
Потенциально это дыра в безопасности, такого пользователя ни в коем случае нельзя авторизовать, т.к. зная email админа, злоумышленник может оформить на него заказ и авторизоваться на сайте под админской учеткой.
Кроме того, злоумышленник может завалить любой чужой email письмами о заказах.
2. Также вы можете самостоятельно генерировать уникальный логин, добавляя случайную строку к email'у, обрезанному до знака @. Главное не забыть в настройках главного модуля поставить флаг "Не проверять уникальность email при регистрации". При таком раскладе у вас будет куча пользователей с одинаковыми email'ами и разными логинами.