### Анализ
1. **Тон и подача:** Оригинал написан в стиле сухой, пошаговой инструкции, как внутренняя документация. Нет ощущения, что опытный разработчик делится лайфхаком. 2. **Отсутствие контекста и мотивации:** В начале просто констатация факта — "бывают ситуации". Не объясняется, *почему* и *когда* разработчику может понадобиться этот трюк на практике. 3. **Фразы-канцеляриты и шаблоны:** Есть штампы вроде "Бывают ситуации", "Тут можно", "наберите в строке браузера". Текст выглядит отстранённо.
---
### Переработанная статья
# Как заглянуть под капот обмена с 1С: что на самом деле уезжает в контору
Знакомо чувство, когда 1С внезапно говорит «ваши заказы кривые» или просто молча их не забирает? А на стороне Битрикс всё тихо, в логах пусто. Отладка обмена превращается в игру в слепую.
Стандартный путь — копаться в логах обмена или настраивать отладку в `catalog` — не всегда помогает. Особенно когда нужно быстро проверить, а формируется ли вообще валидный XML для заказов или каталога прямо сейчас.
Есть способ проще и нагляднее. Можно вручную «погонять» протокол обмена, как это делает 1С, и увидеть сырой ответ скрипта. По сути, мы притворимся 1С, используя всего лишь браузер.
**Важно:** этот метод — чисто отладочный, для разработчиков. Делать так на боевом сайте для конечных пользователей — плохая идея.
---
### Старые модули обмена (без сессий)
В старых модулях логика простая. Открываем браузер, залогинившись в админку под пользователем с правами на обмен (обычно `admin`), и идём по шагам.
1. **Авторизация.** Эмулируем первый этап — `checkauth`. ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth ``` В ответ должна прийти просто `success`.
2. **Инициализация.** Говорим «готов к обмену». ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=init ```
3. **Запрос данных.** И, наконец, просим заказы. ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=query ```
**Результат:** браузер предложит сохранить XML-файл — это ровно тот пакет данных, который ожидает получить 1С. Можно открыть его и проверить структуру, поля, кодировку.
---
### Новые модули (с поддержкой сессий)
Тут схема чуть хитрее, потому что появилась авторизация по сессии. Но суть та же.
1. **Получаем `sessid`.** Выполняем `checkauth`. ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth ``` В ответе будет строка вида: ``` success PHPSESSID 0728c62238a6b462081df21c034be3be sessid=5104cb5a98e892f7b44ff8a7e3de96f0 ``` **Ключевое здесь — параметр `sessid`.** Копируем его значение целиком (`sessid=5104cb5a98e892f7b44ff8a7e3de96f0`).
2. **Инициализируем обмен.** Подставляем скопированный `sessid` как параметр `токен` (да, в документации и коде он часто фигурирует под таким именем). Указываем версию протокола. ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=init&токен&version=2.08 ``` На практике это будет выглядеть так: ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid=5104cb5a98e892f7b44ff8a7e3de96f0&version=2.08 ```
3. **Запрашиваем данные.** Снова используем наш `токен` (тот же `sessid`). ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=query&токен ``` Конкретный URL: ``` http://<сайт>/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=5104cb5a98e892f7b44ff8a7e3de96f0 ```
**Итог:** снова получаем XML-выгрузку, которую можно смело скармливать в любую программу для проверки структуры (например, XML Notepad или даже через `xmllint` в консоли).
---
### Практические советы и подводные камни
* **Тип обмена:** В примерах используется `type=sale` (обмен заказами). Для обмена каталогом товаров замените на `type=catalog`. Логика шагов (`checkauth` -> `init` -> `query`) часто аналогична, но финальный ответ будет другим. * **Ошибка 404 или «Доступ запрещён»:** Первое — проверь, что модуль обмена (`catalog` или `sale`) установлен и активен. Второе — убедись, что вошёл в админку под учётной записью с правами администратора. Скрипт `1c_exchange.php` проверяет авторизацию в Bitrix. * **Это не тестирование всего цикла:** Метод показывает только результат работы фазы `query`. Фазы `success` или `file` (при загрузке данных *из* 1С) так не протестируешь. Для этого нужны уже другие инструменты. * **Быстрая проверка в консоли:** Если на сервере есть `curl`, всё это можно сделать быстрее, сохранив ответ сразу в файл. Например: ```bash curl -b "PHPSESSID=..." "http://site.ru/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid=..." > orders.xml ``` Это особенно удобно, когда нужно быстро проверить выгрузку на staging-сервере.
Этот подход не раз спасал меня, когда нужно было локализовать проблему: то ли данные в Битриксе битые, то ли сам XML-канал глючит. Пару кликов — и всё на виду.