Предлагаю создать новое событие для компонента sale.order.ajax, который позволит менять значения массива до создания нового пользователя $user->Add (т.е. для случая !$USER->IsAuthorized() && $arParams["ALLOW_AUTO_REGISTER"] == "Y";) . В частности, не нравится, как сам компонент выбирает логин для пользователя, как он разделяет PAYER_NAME по пробелам и сохраняет в качестве имени и фамилии, а также хотелось бы для пользователей, созданных при оформлении заказа, указывать вместо рандомного пароля определенное значение.
найдено решение:
use Bitrix\Main\EventManager;
EventManager::getInstance()->addEventHandler(
'main',
'OnBeforeUserAdd',
array('UserHandlers', 'OnBeforeUserAddHandler')
);
class UserHandlers {
public static function OnBeforeUserAddHandler(&$arFields)
{
if (isset( $_POST["confirmorder"] ) && ($_POST["confirmorder"] == "Y") )
{
if ($_POST["PERSON_TYPE"] == 1 && $_POST["ORDER_PROP_1"] )
$arFields["NAME"] = trim($_POST["ORDER_PROP_1"] ) ;
$arFields["LAST_NAME"] = "";
}
return true;
}
}
1. По характерным переменным в POST-запросе
2. По url'у