г. Санкт-Петербург
Войти
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Заказать звонок
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности

RSS
Выгрузка заказов из БУС в xml, Скрипт выгрузки заказов из Битрикс в xml
 
Скрипт можно разместить в корневом разделе сайта позволяет выгружать те заказы что ещё не были выгружены в xml для анализа или последующей выгрузки в другую систему.
Код
<?php
define("NO_AGENT_CHECK", true);
define("NO_KEEP_STATISTIC", true);

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if ( !$GLOBALS['USER']->IsAdmin() )
{
   die("Доступно только для администратора.");
}

CModule::IncludeModule('sale');

$arErrors = array();
if ( isset($_REQUEST['ORDER_ID']) || isset($_REQUEST['ORDER_ID_TEXT']) )
{
   $nOrder = ( (int)$_REQUEST['ORDER_ID_TEXT'] > 0 ? (int)$_REQUEST['ORDER_ID_TEXT'] : (int)$_REQUEST['ORDER_ID'] );
   if ( $nOrder && CSaleOrder::GetByID($nOrder) )
   {
      ob_end_clean();

      header('Content-Type: text/html; charset=utf-8');
      header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
      header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
      header('Cache-Control: no-store, no-cache, must-revalidate');
      header('Cache-Control: post-check=0, pre-check=0', FALSE);
      header('Pragma: no-cache');
      header('Content-transfer-encoding: binary');
      header('Content-Disposition: attachment; filename=order-'.$nOrder.'.xml');
      header('Content-Type: application/x-unknown');

      ob_start();
      CSaleExport::ExportOrders2Xml(array('ID' => $nOrder));
      $sXml = ob_get_clean();

      echo strtr($sXml, array('encoding="windows-1251"' => 'encoding="utf-8"'));
      exit();
   }
   else
   {
      $arErrors[] = "Заказ №{$nOrder} не найден.";
   }
}

$arOrdersID = array();
$dbOrders = CSaleOrder::GetList(array("ID" => "DESC"), array(), false, array('nTopCount' => 200), array('ID', 'DATE_INSERT'));
while ($arOrder = $dbOrders->Fetch())
{
   $arOrdersID[] = $arOrder;
}

?>
<!DOCTYPE html>
<html>
<head>
   <title>Просмотр XML выгрузки для заказа</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <style>
      html, body { position: relative; height: 100%; }
      body { background: #f1f1f1; padding: 0; margin: 0 }

      .content-table { position: relative; width: 100%; height: 100%; }
      .content-cell { position: relative; text-align: center; vertical-align: middle; }
      .center-content { position: relative; box-shadow: 0 0 2px #555; padding: 20px;
         border-radius: 4px; background: #fff; display: inline-block; text-align: left; }
   </style>
</head>
<body>
   <table class="content-table">
      <tr>
         <td class="content-cell">
            <div class="center-content">
               <?//echo '<pre>'.var_export($_REQUEST, 1).'</pre>';?>
               <form action="" method="post" style="line-height: 24px;">
                  Форма генерирует XML файл заказа, такой же как при экспорте
                  <br />заказов с сайта в 1C, но в кодировке utf-8 для просмотре в браузере
                  <br /><br />
                  <?

                  if ( $arErrors )
                  {
                     // Ошибки
                     echo implode('<br />', $arErrors).'<br />';
                  }

                  ?>
                  Выберите из списка (200 последних ID):
                  <select name="ORDER_ID" style="cursor: pointer;">
                     <option value="">Выберите номер заказа</option>
                     <?

                     foreach ( $arOrdersID as $arOrder )
                     {
                        echo '<option value="'.$arOrder['ID'].'">'.$arOrder['ID'].' ('.$arOrder['DATE_INSERT'].')</option>';
                     }

                     ?>
                  </select>
                  <br/>Или введите номер заказа вручную: <input type="text" name="ORDER_ID_TEXT" value="" />
                  <br/><button type="submit" name="SUBMIT" value="Y" style="cursor: pointer;">Сгенерировать XML</button>
                  <br/><br />* Полученный XML файл можно открыть в Google Chrome,
                  <br />файл будет открыт с XML форматированием.
               </form>
            </div>
         </td>
      </tr>
   </table>
</body>
</html>