Задача следующая — при регистрации пользователя на сайте автоматически создавать профиль покупателя с данными, которые были указаны при регистрации. После этого пользователю не потребуется вводить какие-то дополнительные данные при оформлении заказа, которые, возможно, уже были введены в форме регистрации, т. е. у него сразу будет готовый профиль покупателя.
Задача решается написанием обработчика события OnAfterUserRegister:
<?
AddEventHandler("main", "OnAfterUserRegister", "OnBeforeUserRegisterHandler");
function OnBeforeUserRegisterHandler(&$arFields)
{
//создаём профиль
//PERSON_TYPE_ID - идентификатор типа плательщика, для которого создаётся профиль
$arProfileFields = array(
"NAME" => "Профиль покупателя (".$arFields['LOGIN'].')',
"USER_ID" => $arFields['USER_ID'],
"PERSON_TYPE_ID" => 1
);
$PROFILE_ID = CSaleOrderUserProps::Add($arProfileFields);
//если профиль создан
if ($PROFILE_ID)
{
//формируем массив свойств
$PROPS=Array(
array(
"USER_PROPS_ID" => $PROFILE_ID,
"ORDER_PROPS_ID" => 3,
"NAME" => "Телефон",
"VALUE" => $arFields['WORK_PHONE']
),
array(
"USER_PROPS_ID" => $PROFILE_ID,
"ORDER_PROPS_ID" => 1,
"NAME" => "Ф.И.О.",
"VALUE" => $arFields['LAST_NAME'].' '.$arFields['NAME'].' '.$arFields['SECOND_NAME']
)
);
//добавляем значения свойств к созданному ранее профилю
foreach ($PROPS as $prop)
CSaleOrderUserPropsValue::Add($prop);
}
}
?>
В данном примере:
Создаётся профиль покупателя со значениями 2-х свойств — ФИО и Телефон. Предварительно эти свойства заказа были созданы и их идентификаторы использовались в обработчике для присвоения им значений в профиле покупателя. Для регистрации нужно использовать компонент main.register, в настройках параметров данного компонента выбрать поля «Телефон», «Фамилия», «Имя» и «Отчество».
Свойств профиля покупателя, конечно, можно создавать больше, главное ассоциировать их с полями регистрационной формы и соответственно в обработчике присваивать значение этих полей свойствам свеженького профиля покупателя.