Выгрузка каталога из системы учета в интернет-магазин¶
Предупреждение
Информация в данной статье устарела и может использоваться лишь в ознакомительных целях.
Содержание
Процесс обмена¶
- Система учета инициализирует запуск файла - ваш_домен/app/addons/rus_exim_1c/controllers/frontend/exim_1c.php.
- Система учета формирует и передает файлы с данными о товарах в папку - ваш_домен/var/files/код_компании/exim/1C_ТекущаяДатавашего интернет-магазина.- Например: - www.site.ru/var/files/код_компании/exim/1С_06062014- Система учета выгружает в интернет-магазин файлы: - Тип данных - Название файла - Расположение файла - Данные товаров - import.xml - /var/files/код_компании/exim/1C_ТекущаяДата/import.xml- Цены товаров - offers.xml - /var/files/код_компании/exim/1C_ТекущаяДата/offers.xml- Изображения номенклатуры - *.jpg,- *.jpеg,- *.png- /images/from_1c/
- Система учета отправляет запрос на обработку - import.xml.- Обрабатывается и сохраняется в базу данных основная информация о товарах.
- Изображения прикрепляются к товарам и копируются в папку /images.
 
- Система учета запускает обработку - offers.xml.- На данном шаге обновляются: - Цены
- Остатки
- Характеристики
 
- Финиш! 
Идентификация (соответствие) данных между системой учета и CS-Cart производится:
- С помощью тега - <Ид>(в выгружаемом файле) и- external_id(в базе данных CS-Cart).- Примечание - Ид == external_id 
- По наименованию (при поиске категорий и характеристик в базе данных). 
Обработка на стороне интернет-магазина¶
Обработку данных на стороне интернет-магазина выполняют файлы модуля “Экспорт и импорт в 1С”.
| ваш_домен/app/addons/rus_exim_1c/controllers/frontend/exim_1c.php | обрабатывает запросы от системы учета и подключает функции для обработки | 
| ваш_домен/app/addons/rus_exim_1c/func.php | содержит функции обработки и загрузки данных. | 
Авторизация и загрузка файлов¶
Загрузка файлов import.xml и offers.xml начинается с того, что система учета отправляет запрос:
ваш_домен/exim_1c?type=catalog&mode=checkauth
Параметры type и mode определяют какой код будет выполнен.
Выполняется авторизация и интернет-магазин передает системе:
- success- означающая успешность соединения.
- Имя Cookie.
- Значение Cookie.
Примечание
Дальнейшие запросы к интернет-магазину со стороны системы учета будут содержать имя и значение Cookie. Обработка файлов происходит последовательно.
Обработка import.xml¶
Система учета отправляет в интернет-магазин запрос, для начала обработки import.xml:
ваш_домен/exim_1c?type=catalog&mode=import&filename=import.xml
Выполняется пошаговая загрузка данных:
- Категорий - функция fn_exim_1c_import_categories
- Свойства товара - функция fn_exim_1c_import_features
- Товары - функция fn_exim_1c_import_products
Обработка offers.xml¶
После обработки файла import.xml, осуществляется обработка файла offers.xml, по запросу со стороны системы учета:
ваш_домен/exim_1c?type=catalog&mode=import&filename=offers.xml
Обработка данных из файла offers.xml производится с помощью функции fn_exim_1c_import_offers файла func.php.
Результат¶
В случае успешной загрузки данных система учета передает строку со словом success. Если что то пошло не так, то система передаст failure.
Если возникла ошибка¶
- Проверьте правильность ввода логина и пароля. 
- Проверьте содержит ли папка - ваш_домен/var/files/код_компании/exim/1С_ТекущаяДатафайлы- import.xmlи- offers.xml.
- Проверьте имя папки - 1С_ТекущаяДата.- ТекущаяДатадолжна соответствовать текущей дате.
- Проверьте права у папки - ваш_домен/var/files/код_компании/exim/1С_ТекущаяДата.
- Попробуйте очистить файлы cookie. 
- Проверьте права группы администратора в магазине, данные которого указаны в настройках системы учета. 
- Проверьте что модуль “Экспорт и импорт в 1С” включен. 
Описание ошибки передается в журнал выгрузки системы учета.
После обмена сформированные файлы с данными из системы учета сохранятся в папке: ваш_домен/var/files/код_компании/exim/1С_ТекущаяДата
 
Пример модификации¶
Если в процессе работы с модулем необходимо внести какие-либо изменения или добавить новые функции, то все изменения вносятся в файлы папки /app/addons/rus_exim_1c/.
Задача¶
Добавить настройку, которая позволит выбрать параметр из файла import.xml. Параметр будет добавлен в поле товара “Название страницы”.
Варианты настройки:
- Не импортировать - означает, что при загрузке файлов в поле “Название страницы” данные записываться не будут.
- Наименование - означает, что при загрузке файлов в поле “Название страницы” будет записываться данные файла import.xml тега <Наименование>.
- Полное наименование - означает, что при загрузке файлов в поле “Название страницы” будет записываться данные файла import.xml тега <Описание>.
Решение¶
- Откройте файл - /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 - <item id="exim_1c_page_title"> <type>radiogroup</type> <name>Использовать в названии страницы</name> <translations> <item lang="en">Use in the page name</item> </translations> <default_value>not_import</default_value> <variants> <item id="not_import"> <name>Не импортировать</name> <translations> <item lang="en">Do not import</item> </translations> </item> <item id="name"> <name>Наименование</name> <translations> <item lang="en">Name</item> </translations> </item> <item id="full_name"> <name>Полное наименование</name> <translations> <item lang="en">Full name</item> </translations> </item> </variants> </item>   
- Для записи значения в поле товара “Название страницы” откройте файл - /app/addons/rus_exim_1c/func.php.
- Найдите функцию - fn_exim_1c_import_productsв файле- func.php(функция fn_exim_1c_import загрузки данных товара вызывается из файла exim_1c.php).- 1 2 3 4 5 6 7 8 9 10 11 12 13 - <?php if ($mode == 'import') { $fileinfo = pathinfo($filename); $xml = fn_exim_1c_get_xml($filename); if ($xml === false) { fn_echo("failure"); exit; } if (strpos($fileinfo['filename'], 'import') == 0) { fn_exim_1c_import($xml, $user_data, $company_id, $lang_code); } } } 
- Найдите цикл перебора товаров и добавьте код для записи значения в поле товара “Название страницы”, в зависимости от выбранной настройки “Использовать в названии страницы (SEO)” модуля “Экспорт и импорт в 1С”. - 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 32 33 - <?php function fn_exim_1c_import_products($xml, $user_data) { if (isset($xml->Товары->Товар)) { if (Registry::isExist('rus_exim_1c.options_1c')) { Registry::set('rus_exim_1c.options_1c', array()); } $_cat = Registry::get('rus_exim_1c.categories_1c'); $products_1C = array(); $lang_code = CART_LANGUAGE; foreach ($xml->Товары->Товар as $_product) { if (empty($_product->Наименование) || empty($_product->Группы->Ид)) { continue; } $product = array(); $ids = fn_explode('#', $_product->Ид); $guid_product = array_shift($ids); $guid_variant = (!empty($ids)) ? array_shift($ids) : ''; if (Registry::get('addons.rus_exim_1c.exim_1c_page_title') == 'name') { $product['page_title'] = trim($_product->Наименование, " -"); } if (Registry::get('addons.rus_exim_1c.exim_1c_page_title') == 'full_name') { $product['page_title'] = trim($_product->Наименование, " -"); foreach ($_product->ЗначенияРеквизитов->ЗначениеРеквизита as $reckvizit) { if (strval($reckvizit->Наименование) == 'Полное наименование') { $product['page_title'] = trim(strval($reckvizit->Значение), " -"); } } } } } } 
- Для просмотра значений переменных и массивов используйте функцию fn_print_r($array). Функция выведет в браузер значения переменных и массивов в удобном виде. В функцию можно передавать несколько переменных и массивов через запятую. - Примечание - Обращение к тегам осуществляется через переменную $xml->$cml[‘ИмяТега’]. Список имен тегов находиться в файле ваш_домен/app/addons/rus_exim_1c/schemas/cml_fields/fields_names.php Например, $xml->$cml[‘products’] - обращение к тегу Товар. - 1 2 3 4 5 6 7 8 9 10 11 12 - <Товары> <Товар> <Ид>bd72d910-55bc-11d9-848a-00112f43529a</Ид> <Артикул>Б-130001</Артикул> <Наименование>Женские ботфорты</Наименование> <БазоваяЕдиница Код="715" НаименованиеПолное="Пара (2 шт.)" МеждународноеСокращение="NPR">пар</БазоваяЕдиница> <ПолноеНаименование>Женские ботфорты Б-130001 Фабрика обуви</ПолноеНаименование> <Группы> <Ид>bd72d90e-55bc-11d9-848a-00112f43529a</Ид> </Группы> </Товар> </Товары> 
Тестирование и разработка без системы учета¶
Запуск обработки файлов import.xml, offers.xml можно осуществлять через браузер с помощью запроса в адресной строке.
Тем самым вы можете выполнять модификации и разработку без использования систем учета.
Загрузите файлы import.xml и offers.xml в папку интернет-магазина:
/var/files/код_компании/exim/1С_ТекущаяДата
ТекущаяДата - формате ДДММГГГГ.
 
Тестирование файла import.xml¶
Для тестирование файла import.xml в адресной строке браузера введите:
ваш_домен/exim_1c?type=catalog&mode=import&filename=import.xml
 
Появиться окно авторизации в котором необходимо ввести имя пользователя интернет-магазина с правами администратора и его пароль.
 
После загрузки всех данных в окне браузера отобразиться слово означающее окончание обработки файла:
- success- означает успешное окончание обработки файла.
- failure- означает, что в процессе загрузки файла произошла ошибка.
 
Для просмотра значения какой-либо переменной используйте функцию fn_print_r().
Например, добавьте fn_print_r($_product) в функцию fn_exim_1c_import_products.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php
function fn_exim_1c_import_products($xml, $user_data)
{
    if (isset($xml->Товары->Товар)) {
        if (Registry::isExist('rus_exim_1c.options_1c')) {
            Registry::set('rus_exim_1c.options_1c', array());
        }
        $_cat = Registry::get('rus_exim_1c.categories_1c');
        $products_1C = array();
        $lang_code = CART_LANGUAGE;
        foreach ($xml->Товары->Товар as $_product) {
		
		    fn_print_r($_product);
            
		}
    }
}
 | 
Зайдите в браузер и наберите:
ваш_домен/exim_1c?type=catalog&mode=import&filename=import.xml
В окне браузера должно появиться значения переменной $_product.
 
Тестирование файла offers.xml¶
Для загрузки и обработки файла offers.xml введите в браузере:
ваш_домен/exim_1c?type=catalog&mode=import&filename=offers.xml
После загрузки всех данных в окне браузера отобразиться слово означающее окончание обработки файла:
- success- успех.
- failure- ошибка.
Результат тестирования¶
После обмена данными, можно посмотреть данные загруженные в интернет магазин:
- Данные категорий - “Меню Товары - Категории”.
 
- Данные о товарах и их ценах - “Меню Товары - Товары”.
 
Примечание
Загрузка файлов должна производиться последовательно. Запустите import.xml, после окончания обработки, запустите offers.xml.
В случае ошибок¶
Смотрите: Если возникла ошибка
 
                         
        