- Авторизація та завантаження файлів
- Обробка import.xml
- Обробка offers.xml
- результат
- Якщо виникла помилка
- завдання
- Рішення
- Тестування файлу import.xml
- Тестування файлу offers.xml
- результат тестування
1С инициализирует запуск файлу ваш_домен / app / addons / rus_exim_1c / exim_1c.php.
1С формує і передає файли з даними про товари в папку ваш_домен / var / exim / 1C_ТекущаяДата вашого інтернет-магазину.
наприклад:
www.site.ru/var/exim/1С_06062014
1С вивантажує в інтернет-магазин файли:
Тип даних Назва файлу Розташування файлу Дані товарів import.xml /var/exim/1C_ТекущаяДата/import.xml Ціни товарів offers.xml /var/exim/1C_ТекущаяДата/offers.xml Зображення номенклатури * .jpg, * .jpеg, * .png / var / exim / 1C_ТекущаяДата / import_files /1С відправляє запит на обробку import.xml.
- Обробляється і зберігається в базу даних основна інформація про товари.
- Зображення прикріплюються до товарів і копіюються в папку / images.
1С запускає обробку offers.xml.
На даному етапі оновлюються:
- ціни
- залишки
- Характеристики
Фініш!
За допомогою тега <Ід> (в файлі 1С) і external_id (в базі даних CS-Cart).
Примітка
Ід == external_id
За назвою (при пошуку категорій і характеристик в базі даних Multi-Vendor).
- success - що означає успішність з'єднання.
- Ім'я Cookie.
- Значення Cookie.
- Категорій - функція fn_exim_1c_import_categories
- Властивості товару - функція fn_exim_1c_collect_features
- Товари - функція fn_exim_1c_import_products
Перевірте правильність введення логіна і пароля.
Перевірте чи містить папка ваш_домен / var / exim / 1С_ТекущаяДата файли import.xml і offers.xml.
Перевірте ім'я папки 1С_ТекущаяДата.
ТекущаяДата повинна відповідати поточній даті.
Спробуйте очистити файли cookie.
- Чи не імпортувати - означає, що при завантаженні файлів в поле "Назва сторінки" дані записуватися не будуть.
- Найменування - означає, що при завантаженні файлів в поле "Назва сторінки" буде записуватися дані файлу 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 (функція викликається з файлу exim_1c.php).
1 2 3 4 5 6 7 8 9 10 11 12 <? php if ($ fileinfo [ 'filename'] == 'import') {if (Registry :: get ( 'addons.rus_exim_1c.exim_1c_export_check_prices')! = 'Y') {if (isset ($ xml -> Класифікатор)) {fn_exim_1c_import_categories ($ xml -> Класифікатор, 0, $ user_data [ 'user_type']); fn_exim_1c_collect_features ($ xml -> Класифікатор); } If (isset ($ xml -> Каталог)) {fn_exim_1c_import_products ($ xml -> Каталог, $ user_data); }}}
Знайдіть цикл перебору товарів і додайте код для запису значення в поле товару "Простір назв", в залежності від обраної налаштування "Використовувати в назві сторінки" модуля "Російська локалізація - Експорт, імпорт 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-> ІмяТега. Наприклад, $ xml-> Товари-> Товар - звернення до тегу Товар.
1 2 3 4 5 6 7 8 9 10 11 12 <Товари> <Товар> <Ід> bd72d910 - 55 bc - 11 d9 - 848 a - 00112 f43529a </ Ід> <Артикул> Б - 130001 </ Артикул> <Найменування > Жіночі ботфорти </ Найменування> <БазоваяЕдініца Код = "715" НаіменованіеПолное = "Пара (2 шт.)" МеждународноеСокращеніе = "NPR"> пар </ БазоваяЕдініца> <ПолноеНаіменованіе> Жіночі ботфорти Б - 130001 Фабрика взуття </ ПолноеНаіменованіе> < Групи> <Ід> bd72d90e - 55 bc - 11 d9 - 848 a - 00112 f43529a </ Ід> </ Групи> </ Товар> </ Товари>
- success - означає успішне закінчення обробки файлу.
- failure - означає, що в процесі завантаження файлу сталася помилка.
- success - успіх.
- failure - помилка.
- Дані категорій - "Меню Товари - Категорії".
- Дані про товари та їх цінах - "Меню Товари - Товари".
Ідентифікація (відповідність) даних між 1С і CS-Cart проводиться:
Обробку даних на стороні інтернет-магазину виконують файли модуля "Обмін даними з 1С".
ваш_домен / app / addons / rus_exim_1c / exim_1c.php обробляє запити від 1С і підключає функції для обробки ваш_домен / app / addons / rus_exim_1c / func.php містить функції обробки і завантаження даних.
Авторизація та завантаження файлів
Завантаження файлів import.xml і offers.xml починається з того, що система "1С: Підприємство" відправляє запит:
ваш_домен / app / addons / rus_exim_1c / exim_1c.php? type = catalog & mode = checkauth
Параметри type і mode визначають який код буде виконаний.
Виконується авторизація та інтернет-магазин передає системі "1С: Підприємство":
Примітка
Подальші запити до інтернет-магазину з боку "1С: Підприємства" будуть містити ім'я та значення Cookie. Обробка файлів відбувається послідовно.
Обробка import.xml
1C відправляє в інтернет-магазин запит, для початку обробки import.xml:
ваш_домен / app / addons / rus_exim_1c / exim_1c.php? type = catalog & mode = import & filename = import.xml
Виконується покрокова завантаження даних:
Обробка offers.xml
Після обробки файлу import.xml, здійснюється обробка файлу offers.xml, за запитом з боку 1С:
ваш_домен / app / addons / rus_exim_1c / exim_1c.php? type = catalog & mode = import & filename = offers.xml
Обробка даних з файлу offers.xml проводиться за допомогою функції fn_exim_1c_import_offers файлу func.php.
результат
У разі успішного завантаження даних 1С передає рядок зі словом success. Якщо що щось пішло не так, то 1С передасть failure.
Якщо виникла помилка
Опис помилки передається в журнал вивантаження 1С.
Після обміну сформовані файли з даними з 1С збережуться в папці: ваш_домен / var / exim / 1С_ТекущаяДата
Примітка
Приклади файлів можна завантажити за посиланням:
import.xml
offers.xml
Якщо в процесі роботи з модулем необхідно внести будь-які зміни або додати нові функції, то всі зміни вносяться у файли папки / app / addons / rus_exim_1c /.
завдання
Додати настройку, яка дозволить вибрати параметр з файлу import.xml. Параметр буде додано до поле товару "Простір назв".
Варіанти налаштування:
Рішення
Запуск обробки файлів import.xml, offers.xml можна здійснювати через браузер за допомогою запиту в адресному рядку.
Тим самим Ви можете виконувати модифікації і розробку без використання 1С.
Завантажте файли import.xml і offers.xml в папку інтернет-магазину:
/ Var / exim / 1С_ТекущаяДата
ТекущаяДата - форматі ДДММГГГГ.
Примітка
Приклади файлів можна завантажити за посиланням:
import.xml
offers.xml
Тестування файлу import.xml
Для тестування файлу import.xml в адресному рядку браузера введіть: ваш_домен / app / addons / rus_exim_1c / exim_1c.php? Type = catalog & mode = import & filename = import.xml
З'явитися вікно авторизації в якому необхідно ввести ім'я користувача інтернет-магазину з правами адміністратора і його пароль.
Після завантаження всіх даних у вікні браузера відобразитися слово означає закінчення обробки файлу:
Для перегляду значення будь-якої змінної використовуйте функцію 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); }}}
Зайдіть в браузер і наберіть: ваш_домен / app / addons / rus_exim_1c / exim_1c.php? Type = catalog & mode = import & filename = import.xml
У вікні браузера має з'явитися значення змінної $ _product.
Тестування файлу offers.xml
Для завантаження і обробки файлу offers.xml введіть в браузері: ваш_домен / app / addons / rus_exim_1c / exim_1c.php? Type = catalog & mode = import & filename = offers.xml
Після завантаження всіх даних у вікні браузера відобразитися слово означає закінчення обробки файлу:
результат тестування
Після обміну даними, можна подивитися дані завантажені в інтернет магазин:
Примітка
Завантаження файлів повинна проводитися послідовно. Запустіть import.xml, після закінчення обробки, запустіть offers.xml.
Php?
Php?
Lt;?
Lt;?
Php?
Lt;?
Php?
Php?