Обмен заказами 1С и интернет-магазина
Содержание
Процесс обмена заказами между 1С и CS-Cart осуществляется в два этапа:
- 1С выгружает данные заказов в интернет-магазин.
- Интернет магазин выгружает данные заказов в 1С.
Файл заказов выгружается в папку интернет-магазина:
ваш_домен/var/exim/1C_ТекущаяДата
Процесс обмена
Инициатором обмена между 1С и CS-Cart является система “1С:Предприятие”, при этом выгрузка данных CS-Cart осуществляется с помощью функций модуля “Экспорт, импорт в 1С”:
- exim_1c.php - обрабатывает запросы системы 1С и вызывает функции из файла func.php.
- func.php - содержит функции обработки и загрузки данных.
Примечание
Файлы функций расположены в папке ваш_домен/app/addons/rus_exim_1c/
Старт
Загрузка файлов начинается с того, что система “1С:Предприятие” отправляет запрос вида:
ваш_домен/app/addons/rus_exim_1c/exim_1c.php?type=catalog&mode=checkauth
В ответ CS-Cart с помощью функции exim_1c.php передает системе “1С:Предприятие”:
- Слово
success
- успех. - Имя Cookie.
- Значение Cookie.
Примечание
Дальнейшие запросы к интернет магазину со стороны “1С:Предприятия” будут содержать имя и значение Cookie. Обработка файлов происходит последовательно.
Загрузка файла orders.xml
1C загружает в интернет-магазин файл ordersИдентификаторФайла.xml
в папку:
ваш_домен/app/addons/rus_exim_1c/
Обработка файла заказов 1С ordersИдентификаторФайла.xml
, осуществляется запросом вида:
ваш_домен/app/addons/rus_exim_1c/exim_1c.php?type=sale&mode=file&filename=ordersИдентификаторФайла.xml
Обработка осуществляется с помощью функции fn_exim_1c_import_orders
в файле func.php
.
Выгрузка файла orders.xml
Выгрузка заказов из интернет магазина осуществляется запросом вида:
ИнтернетМагазин/app/addons/rus_exim_1c/exim_1c.php?type=sale&mode=query
Выгрузка заказов осуществляется пошагово. Модуль интернет-магазина формирует файл с помощью:
- Данные заказа - файл exim_1c.php.
- Данные покупателя - функция
fn_exim_1c_build_customer_info
файла func.php. - Данные товаров - функция
fn_exim_1c_build_order_products
файла func.php.
Успех
В случае успешной загрузки данных 1С передает строку со словом “success”, в случае конфликта “failure”.
После обмена сформированные файлы с данными из 1С сохранятся в папке:
ваш_домен/var/exim/1C_ТекущаяДата
Пример модификаций
Если в процессе работы с модулем необходимо внести какие-либо изменения или добавить новые функции, то все изменения вносятся в файлы папки app/addons/rus_exim_1c/
.
Задача
Необходимо настроить выгрузку заказов с указанного номера.
Решение
- Откройте файл
/app/addons/rus_exim_1c/addon.xml
- Добавьте новую настройку
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <section id="true_orders" edition_type="ROOT">
<name>Ограничение заказов</name>
<translations>
<item lang="en">Limitation of orders</item>
</translations>
<items>
<item id="exim_1c_export_add_true_orders">
<name>Использовать эту функцию</name>
<translations>
<item lang="en">Use this function</item>
</translations>
<type>checkbox</type>
<default_value/>
</item>
<item id="exim_1c_from_order_id">
<name>Выгружать с номера</name>
<translations>
<item lang="en">Export starting from ID</item>
</translations>
<type>inputbox</type>
</item>
<item id="exim_1c_export_order_statuses">
<name>Статусы ордеров</name>
<translations>
<item lang="en">Order statuses</item>
</translations>
<type>multiple checkboxes</type>
<variants/>
</item>
</items>
</section>
|
- Для добавления выгрузки заказов с указанного файла откройте файл
/app/addons/rus_exim_1c/func.php
- В открывшемся файле найдите функцию
fn_rus_exim_1c_get_orders
(функция используется в файле exim_1c.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php
if ($mode == 'query') {
$params['company_name'] = true;
$params['place'] = 'exim_1c';
if (Registry::get('addons.rus_exim_1c.exim_1c_export_add_true_orders') == 'Y') {
$statuses = Registry::get('addons.rus_exim_1c.exim_1c_export_order_statuses');
if (!empty($statuses)) {
foreach($statuses as $key => $status) {
if (!empty($status)) {
$params['status'][] = $key;
}
}
}
}
list($orders, $search) = fn_get_orders($params);
}
|
- Внесите изменения в функцию
fn_rus_exim_1c_get_orders
, чтобы она осуществляла запрос заказов с указанного номера.
1 2 3 4 5 6 7 8 9 10 | <?php
function fn_rus_exim_1c_get_orders($params, $fields, $sortings, &$condition, $join, $group)
{
if ((Registry::get('addons.rus_exim_1c.exim_1c_export_add_true_orders') == 'Y') && ($params['place'] == 'exim_1c')) {
$order_id = Registry::get('addons.rus_exim_1c.exim_1c_from_order_id');
if (!empty($order_id)) {
$condition .= db_quote(" AND ?:orders.order_id >= ?i", $order_id);
}
}
}
|
- Для просмотра результатов записи данных в какую-либо переменную используйте функцию
fn_print_die($query)
. Функция выведет на экран переменную с остановкой работы скрипта. Возможен вывод нескольких переменных одновременно, просто перечислите через запятуюfn_print_die($a, $b, $array);
Тестирование
Обработку файла orders.xml
можно осуществлять через браузер, с помощью запроса в адресной строке.
Для этого необходимо скопировать файл с заказами в папку интернет-магазина:
var/exim/1С_ТекущаяДата
ТекущаяДата
- в формате ДДММГГГГ
Тестирование загрузки файла ordersИдентификаторФайла.xml
Введите в адресной строке:
ваш_домен/app/addons/rus_exim_1c/exim_1c.php?type=sale&mode=file&filename=ordersИдентификаторФайла.xml
Пример файла: orders-42a0dc7a-d94f-462a-a20f-0e09261f4c9d.xml
После загрузки всех данных в окне браузера отобразиться слово означающее окончание обработки файла:
success
- успехfailure
- ошибка
Пример просмотра значений переменных
Например, вставьте функцию fn_print_r($order_id)
в функцию fn_exim_1c_import_orders
1 2 3 4 5 6 7 8 | <?php
function fn_exim_1c_import_orders($xml)
{
foreach ($xml->Документ as $_order) {
$order_id = intval($_order->Номер);
fn_print_r($order_id);
}
}
|
Наберите в браузере:
ваш_домен/app/addons/rus_exim_1c/exim_1c.php?type=sale&mode=file&filename=ordersИдентификаторФайла.xml
В окне браузера должно появиться значения переменной $order_id
.
Тестирование выгрузки файла orders.xml
Для просмотра файла c заказами, которые будут выгружены из интернет-магазина в 1С, введите в браузере:
ваш_домен/app/addons/rus_exim_1c/exim_1c.php?type=sale&mode=query
В браузере отобразятся заказы выгружаемые из интернет-магазина в 1С.
Результат тестирования
После обмена данными, можно посмотреть данные о заказах загруженные в интернет-магазин.
В случае ошибок
Смотрите: Если возникла ошибка