atomrus1993

bitrix 1c xml view

Mar 26th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.40 KB | None | 0 0
  1. <?php
  2. define("NO_AGENT_CHECK", true);
  3. define("NO_KEEP_STATISTIC", true);
  4.  
  5. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  6. use \Bitrix\Sale\Order;
  7. if ( !$GLOBALS['USER']->IsAdmin() )
  8. {
  9.    die("Доступно только для администратора.");
  10. }
  11.  
  12. CModule::IncludeModule('sale');
  13.  
  14. $arErrors = array();
  15. if ( isset($_REQUEST['ORDER_ID']) || isset($_REQUEST['ORDER_ID_TEXT']) )
  16. {
  17.  
  18.    $nOrder = ( (int)$_REQUEST['ORDER_ID_TEXT'] > 0 ? (int)$_REQUEST['ORDER_ID_TEXT'] : (int)$_REQUEST['ORDER_ID'] );
  19.  
  20.    $order = \Bitrix\Sale\Order::load($nOrder);
  21.     $order->setField('MARKED','N');
  22.     $order->setField('REASON_MARKED', '');
  23.     $order->save();
  24.  
  25.    if ( $nOrder && CSaleOrder::GetByID($nOrder) )
  26.    {
  27.       ob_end_clean();
  28.  
  29.       header('Content-Type: text/html; charset=utf-8');
  30.       header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
  31.       header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  32.       header('Cache-Control: no-store, no-cache, must-revalidate');
  33.       header('Cache-Control: post-check=0, pre-check=0', FALSE);
  34.       header('Pragma: no-cache');
  35.       header('Content-transfer-encoding: binary');
  36.       header('Content-Disposition: attachment; filename=order-'.$nOrder.'.xml');
  37.       header('Content-Type: application/x-unknown');
  38.  
  39.       ob_start();
  40.       CSaleExport::ExportOrders2Xml(array('ID' => $nOrder));
  41.       $sXml = ob_get_clean();
  42.  
  43.       echo strtr($sXml, array('encoding="windows-1251"' => 'encoding="utf-8"'));
  44.       exit();
  45.    }
  46.    else
  47.    {
  48.       $arErrors[] = "Заказ №{$nOrder} не найден.";
  49.    }
  50. }
  51.  
  52. $arOrdersID = array();
  53. $dbOrders = CSaleOrder::GetList(array("ID" => "DESC"), array(), false, array('nTopCount' => 200), array('ID', 'DATE_INSERT'));
  54. while ($arOrder = $dbOrders->Fetch())
  55. {
  56.    $arOrdersID[] = $arOrder;
  57. }
  58.  
  59. ?>
  60. <!DOCTYPE html>
  61. <html>
  62. <head>
  63.    <title>Просмотр XML выгрузки для заказа</title>
  64.    <met a http-equiv="Content-Type" content="text/html; charset=utf-8">
  65.    <style>
  66.       html, body { position: relative; height: 100%; }
  67.       body { background: #f1f1f1; padding: 0; margin: 0 }
  68.  
  69.       .content-table { position: relative; width: 100%; height: 100%; }
  70.       .content-cell { position: relative; text-align: center; vertical-align: middle; }
  71.       .center-content { position: relative; box-shadow: 0 0 2px #555; padding: 20px;
  72.          border-radius: 4px; background: #fff; display: inline-block; text-align: left; }
  73.    </style>
  74. </head>
  75. <body>
  76.    <table class="content-table">
  77.       <tr>
  78.          <td class="content-cell">
  79.             <div class="center-content">
  80.                <?echo '<pre>'.var_export($_REQUEST, 1).'</pre>';?>
  81.                <form action="" method="post" style="line-height: 24px;">
  82.                   Форма генерирует XML файл заказа, такой же как при экспорте
  83.                   <br />заказов с сайта в 1C, но в кодировке utf-8 для просмотре в браузере
  84.                   <br /><br />
  85.                   <?
  86.  
  87.                   if ( $arErrors )
  88.                   {
  89.                      // Ошибки
  90.                      echo implode('<br />', $arErrors).'<br />';
  91.                   }
  92.  
  93.                   ?>
  94.                   Выберите из списка (200 последних ID):
  95.                   <select name="ORDER_ID" style="cursor: pointer;">
  96.                      <option value="">Выберите номер заказа</option>
  97.                      <?
  98.  
  99.                      foreach ( $arOrdersID as $arOrder )
  100.                      {
  101.                         echo '<option value="'.$arOrder['ID'].'">'.$arOrder['ID'].' ('.$arOrder['DATE_INSERT'].')</option>';
  102.                      }
  103.  
  104.                      ?>
  105.                   </select>
  106.                   <br />Или введите номер заказа вручную: <input type="text" name="ORDER_ID_TEXT" value="" />
  107.                   <br /><button type="submit" name="SUBMIT" value="Y" style="cursor: pointer;">Сгенерировать XML</button>
  108.                   <br /><br />* Полученный XML файл можно открыть в Google Chrome,
  109.                   <br />файл будет открыт с XML форматированием.
  110.                </form>
  111.             </div>
  112.          </td>
  113.       </tr>
  114.    </table>
  115. </body>
  116. </html>
Advertisement
Add Comment
Please, Sign In to add comment