Приведенный ниже 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']);
};