Данные о заказе текущего пользователя

Иногда нужно получить данные о заказе текущего пользователя. Не через компонент, а непосредственно через API Битрикс. Вариантов, где ожто может понадобиться достаточно много. Например: после оформления заказ пользователем, нужно вывести ему всю информацио о заказе.

Или в кабинете пользователя, автоматически заполнить персональные данные в кабинете пользователя, если он не указал иное. В общем, думайте сами, куда это применять. Расскажу просто ою этой возможности

Получаем самый свежий заказ текущего пользователя CSaleOrder::GetList

С помощью метода CSaleOrder::GetList мы можем получить все заказы, сколько бы их ни было, любого пользователя, зная его (пользователя) ID.

 
    $arFilter = Array(
        "USER_ID" => 12, //12 Это ID пользователя
    );
    $db_sales = CSaleOrder::GetList(array(), $arFilter);
    while ($ar_sales = $db_sales->Fetch())
    {
        echo '<pre>';
        print_r($ar_sales);
        echo '</pre>'; 
    }

Если нам нужно получить заказы текущего авторизованного пользователя. Просто подставляем в ID - $USER->GetID()

 
    $arFilter = Array(
        "USER_ID" => $USER->GetID(),
    );
    $db_sales = CSaleOrder::GetList(array(), $arFilter);
    while ($ar_sales = $db_sales->Fetch())
    {
        echo '<pre>';
        print_r($ar_sales);
        echo '</pre>'; 
    }

Но нам, для дальнейших манипуляций нужно получить только самый свежий заказ, при этом достаточно знать только его ID (ID заказа). Для этого, просто оборвем выполнение цикла на первой итерации. И просто присвоим переменной $lastorder ID этого заказа

 
$arFilter = Array(
        "USER_ID" => $USER->GetID(),
    );
    $db_sales = CSaleOrder::GetList(array(), $arFilter);
    while ($ar_sales = $db_sales->Fetch())
    {
        $lasorderid = $ar_sales['ID']; //присвоили переменной ID заказа
    break; //оборвали цикл
    }

Информация о заказе CSaleOrder::GetList

Теперь, зная ID конкретного заказа мы можем получить информацию о нем и вывести на экран. Для этого используем метод CSaleOrder::GetList

 
CModule::IncludeModule('sale');
    $res = CSaleOrder::GetList(array(), array("ID" => $lasorderid)); // ID заказа из переменной
    while ($arItemOrder = $res->Fetch()) {
       echo '<pre>';
       print_r($arItemOrder);
       echo '</pre>';
    }

Или свойства этого заказа через метод CSaleOrderPropsValue::GetList

 
$arFilter =Array (
        "ORDER_ID" => $lasorderid,
    );
    $db_sales_ord = CSaleOrderPropsValue::GetList(array(), $arFilter);
    while ($ar_salesord = $db_sales_ord->Fetch())
    {
        echo '<pre>';print_r($ar_salesord);echo '</pre>';
    }

Еще больше методов относящихся к заказу, вы можете найти в официальной документации Битрикс

Просмотров: 10259 | Комментариев: 2
Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Загрузить файл
Нажимая кнопку "Отправить", Вы принимаете условия
Политики конфиденциальности и обработки персональных данных
nikolaevevge
Михаил, почему то у меня следующий код:

$arFilter=array("ORDER_ID"=>10);
$db_sales_ord = CSaleOrderPropsValue::GetList(array(), $arFilter);
while ($ar_salesord = $db_sales_ord->fetch()) {
 var_dump($ar_salesord);
}

Ничего мне не возвращает. Вот этот участок: $db_sales_ord->fetch() возвращает false.

Заказ с ID 10 точно существует и содержит как товары так и торговые предложения.

В чём может быть дело?
Имя Цитировать
nikolaevevge
Михаил, если что обсуждение темы на официальном форуме битрикс https://dev.1c-bitrix.ru/community/forums/messages/forum6/topic119399/message58897­7/

Решил вопрос с применением несколько другого функционала на D7, а именно:

$order = \Bitrix\Sale\Order::load(12);
foreach ($order->getBasket()->getBasketItems() as $basketItem ) {
 var_dump($basketItem->getField('NAME'));// Имя
 var_dump($basketItem->getQuantity());// Количество
 var_dump($basketItem->getId());// Ид(фиг знает чего)
 var_dump($basketItem->getProductId());// Ид товара или тп
}
Имя Цитировать
Михаил Базаров
Цитата
nikolaevevge написал:
Михаил, если что обсуждение темы на официальном форуме битрикс   https://dev.1c-bitrix.ru/community/forums/messages/forum6/topic119399/message58897­ ­7/  

Решил вопрос с применением несколько другого функционала на D7, а именно:

$order = \Bitrix\Sale\Order::load(12);
foreach ($order->getBasket()->getBasketItems() as $basketItem ) {
 var_dump($basketItem->getField('NAME'));// Имя
 var_dump($basketItem->getQuantity());// Количество
 var_dump($basketItem->getId());// Ид(фиг знает чего)
 var_dump($basketItem->getProductId());// Ид товара или тп
}
Да, заметка староватая. Чуть позже дополню ее с D7 - там можно еще эффективнее решить.
Имя Цитировать

Цены на разработку сайта или приложения

Что бы узнать точные стоимость и срок разработки:
достаточно, как можно подробнее, заполнить опросник и выслать на электронную почту info@bazarow.ru.
После ознакомления, смогу задать уточняющие вопросы и оценить.

В стоимость разработки уже включены и не требуют доплат:
  • Лицензия на необходимую редакцию 1С-Битрикс: Управление сайтом и лицензии на дополнительные модули, если требуются для конкретного проекта.
  • Применение технологии композитный сайт: Оптимизация скорости работы проекта под нагрузками.
  • Один год, бесплатной, технической поддержки от 1С-Битрикс
Интернет-магазин от 250 000 рублей
Полно-комплексная разработка интернет-магазина любой сложности. Интеграция с 1С, службами доставки и оплаты. Внутренняя СЕО оптимизация перед запуском.
Сайт компании от 200 000 рублей
Сайт с каталогом товаров или услуг, без функционала магазина. Включает формы обратной связи внутри карточек каталога. Любое количество статичных и динамичных разделов.
Инфоресурс от 200 000 рублей
Портал или доска объявлений с большим количеством разделов. Возможность включения форумов, блогов, регистрации пользователей, внутри сайтовая социальная сеть.
Сайт на готовом решении от 40 000 рублей
Подбор решения из более 200-от готовых сайтов, в соответствии с тематикой бизнеса. Запуск сайта на сервере или хостинге, со всеми настройками. Не большие доработки под задачу.
Мобильное приложение от 200 000 рублей

Кроме сайтов, занимаюсь разработкой мобильных приложений на технологии Apache Cordova. Это полноценные приложения, которые публикуются и распостранияются через официальные магазины GooglePlay и AppStore

  • Полная интеграция с базой данных, основного сайта.
  • Вывод каталогов продукции и услуг, прямо в приложении.
  • Персональные разделы пользователей с историей заказов.
  • Прямой доступ к устройству: GPS, камера, звонки и медиабиблиотека

attention