В битриксе списке заказов, как вытащить свойства типа справочник и список?

В Bitrix Framework доступ к свойствам заказов осуществляется через объект класса "BitrixSaleOrder", а для работы со свойствами заказа можно использовать методы "getPropertyCollection()" и "getPropertyValueList()".

Для того чтобы получить список заказов, необходимо сначала получить объект класса "BitrixSaleInternalsOrderTable". Далее, выполняя запрос к БД, можно получить необходимые свойства.

Пример получения списка заказов с их свойствами типа "справочник" и "список":

use BitrixSaleInternalsOrderTable;
use BitrixSaleInternalsOrderPropsValueTable;
use BitrixMainLoader;

Loader::includeModule("sale");

// Получаем список заказов
$orderList = OrderTable::getList();

while ($order = $orderList->fetch()) {
    // Получаем идентификатор заказа
    $orderId = $order["ID"];
    
    // Получаем коллекцию свойств заказа
    $propertyCollection = BitrixSalePropertyValueCollection::load($orderId);

    // Получаем список свойств типа "справочник" и "список"
    $propertyIdList = array(); // список идентификаторов свойств типа "справочник" и "список"
    $propertyValueList = array(); // список значений свойств типа "справочник" и "список"

    foreach ($propertyCollection as $propertyItem) {
        $property = $propertyItem->getProperty();

        // Если свойство имеет тип "справочник" или "список", то добавляем его в список
        if ($property["TYPE"] === "L" || $property["TYPE"] === "E") {
            $propertyIdList[] = $propertyItem->getPropertyId();
        }
    }

    // Получаем значения свойств типа "справочник" и "список"
    $propertyValueDb = OrderPropsValueTable::getList(array(
        "filter" => array(
            "ORDER_ID" => $orderId,
            "PROP_ID" => $propertyIdList,
        )
    ));

    while ($propertyValue = $propertyValueDb->fetch()) {
        // Получаем название и значение свойства
        $propertyName = $propertyValue["NAME"];
        $propertyValue = $propertyValue["VALUE"];

        // Добавляем свойство и его значение в список
        $propertyValueList[$orderId][$propertyName] = $propertyValue;
    }

    // Выводим список заказов и их свойств типа "справочник" и "список"
    echo "Заказ №" . $orderId . ":<br>";
    
    foreach ($propertyValueList[$orderId] as $propertyName => $propertyValue) {
        echo $propertyName . ": " . $propertyValue . "<br>";
    }

    echo "<br>";
}

В данном примере мы получаем список заказов, а затем для каждого заказа получаем коллекцию свойств. Затем проходим по этой коллекции и добавляем в список свойства типа "справочник" и "список". После этого получаем значения этих свойств и выводим их на экран.