Пришлось сделать такой костыль в init.php
Код |
---|
AddEventHandler("sale", "OnSaleComponentOrderOneStepProcess", Array("CSaleDop", "OnSaleComponentOrderOneStepProcessHandler"));
class CSaleDop
{
function OnSaleComponentOrderOneStepProcessHandler(&$arResult,&$arUserResult,&$arParams)
{
if ($arUserResult['PERSON_TYPE_ID'] == 2)
{
if (strlen($arUserResult['ORDER_PROP'][25])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][29]['VALUE'] = $arUserResult['ORDER_PROP'][25]; //Фамилия
if (strlen($arUserResult['ORDER_PROP'][26])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][30]['VALUE'] = $arUserResult['ORDER_PROP'][26]; //Имя
if (strlen($arUserResult['ORDER_PROP'][27])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][31]['VALUE'] = $arUserResult['ORDER_PROP'][27]; //Отчество
if (strlen($arUserResult['ORDER_PROP'][28])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][14]['VALUE'] = $arUserResult['ORDER_PROP'][28]; //Контактный телефон
//Местоположение
if (is_array($arResult['ORDER_PROP']['USER_PROPS_Y'][18]["VARIANTS"]) && count($arResult['ORDER_PROP']['USER_PROPS_Y'][18]["VARIANTS"]) > 0 && $arUserResult['ORDER_PROP'][5]>0)
{
foreach ($arResult['ORDER_PROP']['USER_PROPS_Y'][18]["VARIANTS"] as $key => $arVariant)
{
if ($arVariant["ID"] == $arUserResult['ORDER_PROP'][5])
{
$arResult['ORDER_PROP']['USER_PROPS_Y'][18]["VARIANTS"][$key]["SELECTED"] = "Y";
}
else
{
unset($arResult['ORDER_PROP']['USER_PROPS_Y'][18]["VARIANTS"][$key]["SELECTED"]);
}
}
}
}
elseif ($arUserResult['PERSON_TYPE_ID'] == 1)
{
if (strlen($arUserResult['ORDER_PROP'][29])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][25]['VALUE'] = $arUserResult['ORDER_PROP'][29]; //Фамилия
if (strlen($arUserResult['ORDER_PROP'][30])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][26]['VALUE'] = $arUserResult['ORDER_PROP'][30]; //Имя
if (strlen($arUserResult['ORDER_PROP'][31])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][27]['VALUE'] = $arUserResult['ORDER_PROP'][31]; //Отчество
if (strlen($arUserResult['ORDER_PROP'][14])>0)
$arResult['ORDER_PROP']['USER_PROPS_Y'][28]['VALUE'] = $arUserResult['ORDER_PROP'][14]; //Контактный телефон
//Местоположение
if (is_array($arResult['ORDER_PROP']['USER_PROPS_Y'][5]["VARIANTS"]) && count($arResult['ORDER_PROP']['USER_PROPS_Y'][5]["VARIANTS"]) > 0 && $arUserResult['ORDER_PROP'][18]>0)
{
foreach ($arResult['ORDER_PROP']['USER_PROPS_Y'][5]["VARIANTS"] as $key => $arVariant)
{
if ($arVariant["ID"] == $arUserResult['ORDER_PROP'][18])
{
$arResult['ORDER_PROP']['USER_PROPS_Y'][5]["VARIANTS"][$key]["SELECTED"] = "Y";
}
else
{
unset($arResult['ORDER_PROP']['USER_PROPS_Y'][5]["VARIANTS"][$key]["SELECTED"]);
}
}
}
}
return true;
}
} |
По оптимальности код сильно хромает, набросал на скорую руку. Но принцип, думаю, понятен.