Как выгрузить состав заказа в xml?

Для того чтобы выгрузить состав заказа в XML формате в 1C-Bitrix, вам понадобится создать новую функцию или модифицировать существующую в любом из обработчиков событий (например, OnSaleOrderSaved), для получения данных о заказе и его составе.

Для начала, вам нужно получить ID заказа, с которым вы работаете. После того, как вы получили ID заказа, вы можете использовать класс BitrixSaleOrder для получения объекта заказа. Например, вы можете использовать следующий код:

use BitrixMainLoader;
use BitrixSaleOrder;

$action = MyCustomExportFunction();

function MyCustomExportFunction()
{
   Loader::includeModule('sale');

   $orderId = 123; // Замените на фактический ID заказа

   $order = Order::load($orderId);

   if ($order)
   {
      $basket = $order->getBasket();

      // Создание XML-структуры
      $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><order></order>');
      
      foreach ($basket as $basketItem)
      {
         // Получение информации о товаре
         $product = $basketItem->getProduct();
         $name = $product->getField('NAME');
         $price = $product->getPrice();
         $quantity = $basketItem->getQuantity();

         // Создание подэлемента товара в XML
         $item = $xml->addChild('item');
         $item->addChild('name', $name);
         $item->addChild('price', $price);
         $item->addChild('quantity', $quantity);
      }

      // Сохранение XML-документа в файл
      $xmlFilePath = "/path/to/save/xml/file.xml";
      $xml->asXML($xmlFilePath);

      return "XML успешно выгружен в файл $xmlFilePath";
   }
   else
   {
      return "Не удалось загрузить заказ с ID $orderId";
   }
}

В этом примере мы подключаем модуль sale, получаем объект заказа с помощью Order::load($orderId), получаем объект корзины с помощью $order->getBasket(), а затем проходимся по каждому элементу корзины, чтобы получить необходимую информацию о продукте, такую как название, цена и количество. Затем мы создаем XML-структуру и сохраняем ее в файл с помощью asXML().

Не забудьте заменить $orderId на фактический ID заказа и $xmlFilePath на путь, по которому нужно сохранить XML-файл.

Это всего лишь пример, и вы можете добавить свои собственные дополнительные шаги или функциональность в этот код в зависимости от ваших потребностей.