Сергей Эсауленко

При обмене заказов из Битрикс в 1С посмотреть order.xml

Оглавление:

    Бывает необходимость, когда требуется проверить какие данные передаются из Битрикс в 1Ску. Можно воспользоваться следующим кодом. Его достаточно разместить на странице /test/ например, и сможете проверить передаваемые данные из Битрикс в 1С

    <?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();
            $sXml = strtr($sXml, array('encoding="windows-1251"' => 'encoding="utf-8"'));
            echo $sXml;
            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;
    }
    ?>
    <!DO CTYPE 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>


    06.07.2021
    1C-Битрикс или Wordpress: какую CMS выбрать для лучшей работы сайта?