Удаление всех пользователей, у которых нет заказов в интернет-магазине 1с-Битрикс  


Приведенный ниже PHP-скрипт позволяет удалить всех пользователей веб-сайта на платформе 1с-Битрикс, у которых нет заказов (отгрузок, оплат) в модуле интернет-магазина.

Суть подхода заключается в том, что при стандартном удалении пользователя, если в системе зарегистрирован связанный с ним заказ, платформа выдаст ошибку и не даст его удалить, чем и пользуемся – запускаем цикл удаления всех пользователей и в итоге те что с заказами – остаются в системе.

Это может быть полезно в ситуациях, когда в интернет-магазине накоплена большая ненормализованная база пользователей и нужно оставить только тех, кто после регистрации делал заказ.

Операция достаточно экстремальная, поэтому крайне рекомендуется перед выполнением сделать резервную копию базы данных – для возможности отката в случае непредвиденных обстоятельств, скрипт работает из любого места с подключенным PROLOG (проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687))

<?php
$rsUsers = CUser::GetList(array('sort' => 'asc'), 'sort'); 
 
while($arUser = $rsUsers->Fetch()){ 
    CUser::Delete($arUser['ID']); 
};