Есть событие, которое при отправки формы, регистрирует ещё и пользователя, но я добавил чтобы ещё и создавал профиль по умолчанию. Выдаёт ошибку что не указан код пользователя. При этот пользователь создался. , профиль нет и дальнейших действий не произошло. Вот мой код
function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
global $APPLICATION;
if ($WEB_FORM_ID == 99)
{
$usermail = $arrVALUES['form_text_227'];
$username = $arrVALUES['form_text_236'];
$userlogin = $arrVALUES['form_text_238'];
$userphone = $arrVALUES['form_text_226'];
$useradress = $arrVALUES['form_text_224'];
$userpassword = $arrVALUES['form_password_239'];
$user = new CUser;
$arUserFields = Array(
"NAME" => $username,
"EMAIL" => $usermail,
"LOGIN" => $userlogin,
"LID" => "s1",
"ACTIVE" => "N",
"GROUP_ID" => array(6,8),
"PASSWORD" => $userpassword,
"CONFIRM_PASSWORD" => $userpassword,
"PERSONAL_PHONE" => $userphone
);
// echo '<pre>'; print_r($arrVALUES); echo '</pre>';
$ID = $user->Add($arUserFields);
echo $user->LAST_ERROR;
//создаём профиль
if(isset($arFields['EXTERNAL_AUTH_ID']))
unset($arFields['EXTERNAL_AUTH_ID']);
$arProfileFields = array(
"NAME" => "Профиль покупателя (".$userlogin.')',
"USER_ID" => $arrVALUES['BX_USER_ID'],
"PERSON_TYPE_ID" => 3
);
$PROFILE_ID = CSaleOrderUserProps::Add($arProfileFields);
//если профиль создан
if ($PROFILE_ID)
{
//формируем массив свойств
$PROPS=Array(
array(
"USER_PROPS_ID" => $PROFILE_ID,
"ORDER_PROPS_ID" => 15,
"NAME" => "Телефон",
"VALUE" => $userphone
),
array(
"USER_PROPS_ID" => $PROFILE_ID,
"ORDER_PROPS_ID" => 24,
"NAME" => "Юридический адрес",
"VALUE" => $useradress
),
array(
"USER_PROPS_ID" => $PROFILE_ID,
"ORDER_PROPS_ID" => 9,
"NAME" => "Ф.И.О.",
"VALUE" => $username
)
);
foreach ($PROPS as $prop)
CSaleOrderUserPropsValue::Add($prop);
}
}
}
AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
AddEventHandler("main", "OnAfterUserRegister", "my_onBeforeResultAdd");