Вопрос снимаю.
Косяк оказался в том, что у меня и в пользовательском поле и в поле создаваемого инфоблока два этих нужных свойства - списки. Естественно, что у них разные ID в массиве пользовательских свойств и в массиве свойств инфоблока, поэтому они и не могли писаться одно из другого. Задачу решил кастомной перезаписью значения свойства элемента инфоблока по его ID по выполнению условия свойства пользовательского поля тоже по его ID. Огромнейшее всем спасибо за помощь!!! Может быть, кому-то пригодится мой способ решения:
| Код |
|---|
<?
//Обработчик после регистрации для создания инфоблока из данных профиля пользователя
AddEventHandler("main", "OnAfterUserRegister", "CreateInfoblockFromProfile");
function CreateInfoblockFromProfile(&$arFields)
{
if(CModule::IncludeModule("iblock")){
$el = new CIBlockElement;
$user_name = ($arFields["LAST_NAME"])." ".($arFields["NAME"]);
$PROP = array(); // формируем массив свойств инфоблока из профиля
$PROP[18] = $arFields["PERSONAL_BIRTHDAY"]; //дата рождения
$PROP[17] = $arFields["EMAIL"]; //электронная почта
//для пользовательских полей
$userid = $arFields["USER_ID"];
$rsUser = CUser::GetByID($userid);
$arUser = $rsUser->Fetch();
//UF_ROLE роль пользователя
//UF_USER_STATUS статус пользователя
if ($arUser["UF_ROLE"] == 4){
$PROP[14] = 95;
}else{
$PROP[14] = 96;
}
if ($arUser["UF_USER_STATUS"] == 6){
$PROP[9] = 85;
}else{
$PROP[9] = 86;
}
$arLoadProductArray = Array(
"IBLOCK_ID" => 1, //создается в инфоблоке "Соискатели"
"ACTIVE" => "Y", // элемент активен
"NAME" => $user_name, //название забираем из фамилии и имени пользователя
"PROPERTY_VALUES" => $PROP, //забираем свойства элемента инфоблока из профиля
);
}
$el->Add($arLoadProductArray);
}
?> |