Чтобы протестировать загрузку каталога или обмен заказами воспользуемся встроенным в PhpStorm - HTTP Client
Подробнее пр этот инструмент можно почитать в документации - https://www.jetbrains.com/help/phpstorm/http-client-in-product-code-editor.html
Рассмотрим:
1. Загрузку каталога
2. Получение заказов
1. Загрузка каталога
Добавляем новый файл с запросами, можно сделать как через контекстное меню, так и сочетанием клавиш - Ctrl + Shift + Alt + Insert. В всплывающем окне выбираем HTTP Request.
В созданном файле (создается "Scratch File" в PhpStorm) вставляем следующий код.
### auth
// @no-cookie-jar
// @no-log
GET http://localhost/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth
Authorization: Basic 1cobmen 1cobmenPassword
> {%
// client.log(JSON.stringify(response));
var rows = response.body.split(/\n/);
client.test('Авторизация', function(){
client.assert(rows[0] === 'success', "Авторизация не прошла");
});
if(rows[0] === 'success')
{
client.global.set("1C_REQUEST_COOKIE_PHP_SESSID", rows[2]);
client.global.set("1C_REQUEST_SESSID_VARIABLE", rows[3].split('=').pop());
}
%}
### init
// @no-log
GET http://localhost/bitrix/admin/1c_exchange.php?type=catalog&mode=init&sessid={{1C_REQUEST_SESSID_VARIABLE}}&version=3.1
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
### file
// @no-log
POST http://localhost/bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=pack.zip&sessid={{1C_REQUEST_SESSID_VARIABLE}}
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
< /path_to_archive/rests.zip
### import
// @no-log
POST http://localhost/bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=rests.xml&sessid={{1C_REQUEST_SESSID_VARIABLE}}
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
###
Этот пример для локального теста. Аналогично можно отправлять запросы на рабочий сайта. Для это можно переключаться между окружениями из которых брать адреса и данные для доступа - https://www.jetbrains.com/help/phpstorm/exploring-http-syntax.html#environment-variables
#auth
В блоке #auth происходит авторизация и сохранения авторизационных данных для последующих запросов. Для авторизации используются данные пользователя с правами на обмен. В примере предполагается что для этого пользователя:
- логин - 1cobmen
- пароль - 1cobmenPassword
Указывать нужно свои значения.
# file
В блоке #file передается архив с данными. Архив должен быть предварительно подготовлен. Указывается абсолютный путь до него на фашем компьютере. В пример это - /path_to_archive/rests.zip. В архиве лежит файл rest.xml, которые содержат только данные по одному или нескольким товарам, чтобы обмен прошел быстро и можно было определить где и что нужно добавить, где и что не работает и так далее.
Примеры файлов есть здесь
#import
Блок #import передает название файла, который будет взят в архиве и обработан. Этот запрос нужно повторять множество раз, пока в результате не получите сообщение что запрос выполнен.
В данном случае обрабатываем файл rests.xml. Именно его название передается в параметрах последнего запроса - ...filename=rests.xml
Для запуска всех запросов последовательно можно воспользоваться соответствующей кнопкой.
После выполнения отдельно запускаем последний запрос. В результате видимо что процесс не закончен, так как возвращается - progress
Чтобы не кликать, можно кликнуть на область с результат и дальше запускать запрос сочетанием клавиш - Ctrl+Shift+F10 до тех пор, пока не закончится обмен.
2. Получение заказов
Для этого тоже добавляем HTTP Request файл (создается "Scratch File" в PhpStorm) со следующим содержимым
### auth
// @no-cookie-jar
// @no-log
GET {{host}}/bitrix/admin/1c_exchange.php?type=sale&mode=checkauth
Authorization: Basic {{login}} {{password}}
> {%
// client.log(JSON.stringify(response));
var rows = response.body.split(/\n/);
client.test('Авторизация', function(){
client.assert(rows[0] === 'success', "Авторизация не прошла");
});
if(rows[0] === 'success')
{
client.global.set("1C_REQUEST_COOKIE_PHP_SESSID", rows[2]);
client.global.set("1C_REQUEST_SESSID_VARIABLE", rows[3].split('=').pop());
}
%}
### init
// @no-log
GET {{host}}/bitrix/admin/1c_exchange.php?type=sale&mode=init&sessid={{1C_REQUEST_SESSID_VARIABLE}}&version=3.1
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
### query
GET {{host}}/bitrix/admin/1c_exchange.php?type=sale&mode=query&sessid={{1C_REQUEST_SESSID_VARIABLE}}&version=3.1
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
### success
GET {{host}}/bitrix/admin/1c_exchange.php?type=sale&mode=success&sessid={{1C_REQUEST_SESSID_VARIABLE}}&version=3.1
Cookie: PHPSESSID={{1C_REQUEST_COOKIE_PHP_SESSID}}
Также запускаем выполнение всех запросов последовательно. В результате получаем xml файл со всеми заказами.
Если файл пуст, можно отметить некоторые заказы для экспорта. Выполним php код в админке. Отметим заказ 110 для экспорта.
CModule::IncludeModule('sale');
$arOrderId = array(110);
foreach ($arOrderId as $orderId) {
$arOrder = \CSaleOrder::GetList(array(), array('ID' => $orderId))->fetch();
CSaleOrder::Update($orderId, array('UPDATED_1C' => 'N'));
}