Максим Власов, сделать 2 запроса: один на получение заказов и следующий на получение состава корзины к этому заказу.
[CODE]$compiledOrders = [];
$baskerIds = [];
$orders = \Bitrix\Sale\Internals\OrderTable::getList([
'select' => [
'ID',
'PRICE',
'STATUS_ID',
'PAYED'
],
]);
foreach ($orders as $k => $order)
{
$compiledOrders[ $k ] = $order;
$compiledOrders[ $k ]['PRODUCTS'] = [];
$baskerIds[ $order['ID'] ] = $k;
}
if ( !empty($baskerIds) )
{
$basketItems = \Bitrix\Sale\Internals\Basket::getList([
'select' => [
'ID',
'NAME',
'ORDER_ID',
],
'filter' => [
'@ORDER_ID' => array_keys($baskerIds)
]
]);
foreach ($basketItems as $item)
{
$compiledOrders[ $baskerIds[ $order['ORDER_ID'] ] ]['PRODUCTS'][] = $item;
}
}[/CODE]
P.S. Код не проверял, могут быть ошибки.
Ну а вообще я бы рекомендовал воспользоваться не внутренними методами, а хотя бы стабильными.
Их хорошо описали в блоге: https://mrcappuccino.ru/blog/post/work-with-order-bitrix-d7 и https://mrcappuccino.ru/blog/post/work-with-basket-bitrix-d7
[CODE]$compiledOrders = [];
$baskerIds = [];
$orders = \Bitrix\Sale\Internals\OrderTable::getList([
'select' => [
'ID',
'PRICE',
'STATUS_ID',
'PAYED'
],
]);
foreach ($orders as $k => $order)
{
$compiledOrders[ $k ] = $order;
$compiledOrders[ $k ]['PRODUCTS'] = [];
$baskerIds[ $order['ID'] ] = $k;
}
if ( !empty($baskerIds) )
{
$basketItems = \Bitrix\Sale\Internals\Basket::getList([
'select' => [
'ID',
'NAME',
'ORDER_ID',
],
'filter' => [
'@ORDER_ID' => array_keys($baskerIds)
]
]);
foreach ($basketItems as $item)
{
$compiledOrders[ $baskerIds[ $order['ORDER_ID'] ] ]['PRODUCTS'][] = $item;
}
}[/CODE]
P.S. Код не проверял, могут быть ошибки.
Ну а вообще я бы рекомендовал воспользоваться не внутренними методами, а хотя бы стабильными.
Их хорошо описали в блоге: https://mrcappuccino.ru/blog/post/work-with-order-bitrix-d7 и https://mrcappuccino.ru/blog/post/work-with-basket-bitrix-d7