В Битриксе контрагент - это профиль покупателя. И есть одна особенность - контрагент существует сам по себе, заказ - сам по себе. То есть, после создания заказа, если изменить характеристики последнего, уже не будет четкого соответствия с контрагентом. Либо если покупатель изменил профиль, то связь со сделанными заказами уже потеряется. В общем, не очень стабильная ситуация. Но в момент создания заказа мы можем четко узнать ID контрагента, который породил данный заказ. Функция ниже и возвращает ID контрагента (профиля) по ID заказа. Возможно, это с оговорками выше кому-то тоже пригодится.
[spoiler]
Да, и еще. Связь ищется по полю e-mail для типа плательщика из заказа.
[spoiler]
function GetContragentID($orderID) {
if ($arOrder = CSaleOrder::GetByID($orderID)) {
$rsOrderProps = CSaleOrderProps::GetList(array(), array('PERSON_TYPE_ID' => $arOrder['PERSON_TYPE_ID'], 'IS_EMAIL' => 'Y'));
if ($arOrderProp = $rsOrderProps->Fetch()) {
$rsProps = CSaleOrderPropsValue::GetList(array('SORT' => 'ASC'), array('ORDER_ID' => $orderID, 'ORDER_PROPS_ID' => $arOrderProp['ID']));
if ($arProp = $rsProps->Fetch()) {
$rsUP = CSaleOrderUserPropsValue::GetList(array(), array('ORDER_PROPS_ID' => $arOrderProp['ID'],
'VALUE' => $arProp['VALUE'],
'PROP_PERSON_TYPE_ID' => $arOrder['PERSON_TYPE_ID']));
if ($arUP = $rsUP->Fetch()) {
return $arUP['USER_PROPS_ID'];
}
}
}
}
} |