Обмен заказами 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

Выгрузка заказов осуществляется пошагово. Модуль интернет-магазина формирует файл с помощью:

  1. Данные заказа - файл exim_1c.php.
  2. Данные покупателя - функция fn_exim_1c_build_customer_info файла func.php.
  3. Данные товаров - функция fn_exim_1c_build_order_products файла func.php.

Успех

В случае успешной загрузки данных 1С передает строку со словом “success”, в случае конфликта “failure”.

После обмена сформированные файлы с данными из 1С сохранятся в папке:

ваш_домен/var/exim/1C_ТекущаяДата

Пример модификаций

Если в процессе работы с модулем необходимо внести какие-либо изменения или добавить новые функции, то все изменения вносятся в файлы папки app/addons/rus_exim_1c/.

Задача

Необходимо настроить выгрузку заказов с указанного номера.

Решение

  1. Откройте файл /app/addons/rus_exim_1c/addon.xml
  2. Добавьте новую настройку
 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>
  1. Для добавления выгрузки заказов с указанного файла откройте файл /app/addons/rus_exim_1c/func.php
  2. В открывшемся файле найдите функцию 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);
	
}
  1. Внесите изменения в функцию 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);
        }
    }
}
  1. Для просмотра результатов записи данных в какую-либо переменную используйте функцию 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С.

Результат тестирования

После обмена данными, можно посмотреть данные о заказах загруженные в интернет-магазин.