За основу будет взят последний оформленный заказ.

Подразумеваем, что телефон хранится в свойстве заказа PHONE.

Код

//<?php
 
use Bitrix\Main\Application;
use Bitrix\Main\Loader;
 
Loader::includeModule('sale');
 
// ID типа плательщика
$personTypeId = 1;
 
$propPhoneId = 0;
 
$propertyIterator = \CSaleOrderProps::GetList(
    [],
    [
        'CODE' => 'PHONE',
        'PERSON_TYPE_ID' => $personTypeId,
    ]
);
 
if ($propertyPhone = $propertyIterator->Fetch()) {
    $propPhoneId = $propertyPhone['ID'];
}
 
$phonesOrderPropValues = [];
 
if ($propPhoneId > 0) {
 
    $connection = Application::getConnection();
 
    $phonesOrderPropValuesIterator = $connection->query(
        sprintf(
            "SELECT
                    *
                FROM
                    (
                        SELECT
                            v.ID,
                            v.ORDER_ID,
                            v.`NAME`,
                            v.`VALUE`,
                            o.USER_ID
                        FROM
                            b_sale_order_props_value v
                        INNER JOIN b_sale_order o ON v.ORDER_ID = o.ID
                        WHERE
                            v.ORDER_PROPS_ID = %s
                        ORDER BY
                            v.ID DESC
                    ) x
                GROUP BY
                    USER_ID",
            $connection->getSqlHelper()->forSql($propPhoneId)
        )
    );
 
    while ($phonesOrderPropValue = $phonesOrderPropValuesIterator->fetch()) {
        $phonesOrderPropValues[$phonesOrderPropValue['USER_ID']] = $phonesOrderPropValue['VALUE'];
    }
 
}

В итоге получаем массив $phonesOrderPropValues.

Ключом будет ID пользователя, значением — его телефон.

Если кто знает как написать sql-запрос красивее или производительнее — поделитесь :)