Вивантаження каталогу з 1С в інтернет-магазин

  1. Авторизація та завантаження файлів
  2. Обробка import.xml
  3. Обробка offers.xml
  4. результат
  5. Якщо виникла помилка
  6. завдання
  7. Рішення
  8. Тестування файлу import.xml
  9. Тестування файлу offers.xml
  10. результат тестування
  1. 1С инициализирует запуск файлу ваш_домен / app / addons / rus_exim_1c / exim_1c.php.

  2. 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 /
  3. 1С відправляє запит на обробку import.xml.

    • Обробляється і зберігається в базу даних основна інформація про товари.
    • Зображення прикріплюються до товарів і копіюються в папку / images.
  4. 1С запускає обробку offers.xml.

    На даному етапі оновлюються:

    • ціни
    • залишки
    • Характеристики
  5. Фініш!

  6. Ідентифікація (відповідність) даних між 1С і CS-Cart проводиться:

    1. За допомогою тега <Ід> (в файлі 1С) і external_id (в базі даних CS-Cart).

      Примітка

      Ід == external_id

    2. За назвою (при пошуку категорій і характеристик в базі даних Multi-Vendor).

    Обробку даних на стороні інтернет-магазину виконують файли модуля "Обмін даними з 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С: Підприємство":

    • success - що означає успішність з'єднання.
    • Ім'я Cookie.
    • Значення Cookie.

    Примітка

    Подальші запити до інтернет-магазину з боку "1С: Підприємства" будуть містити ім'я та значення Cookie. Обробка файлів відбувається послідовно.

    Обробка import.xml

    1C відправляє в інтернет-магазин запит, для початку обробки import.xml:

    ваш_домен / app / addons / rus_exim_1c / exim_1c.php? type = catalog & mode = import & filename = import.xml

    Виконується покрокова завантаження даних:

    • Категорій - функція fn_exim_1c_import_categories
    • Властивості товару - функція fn_exim_1c_collect_features
    • Товари - функція fn_exim_1c_import_products

    Обробка 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.

    Якщо виникла помилка

    • Перевірте правильність введення логіна і пароля.

    • Перевірте чи містить папка ваш_домен / var / exim / 1С_ТекущаяДата файли import.xml і offers.xml.

    • Перевірте ім'я папки 1С_ТекущаяДата.

      ТекущаяДата повинна відповідати поточній даті.

    • Спробуйте очистити файли cookie.

    Опис помилки передається в журнал вивантаження 1С.

    Після обміну сформовані файли з даними з 1С збережуться в папці: ваш_домен / var / exim / 1С_ТекущаяДата

    Примітка

    Приклади файлів можна завантажити за посиланням:

    import.xml

    offers.xml

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

    завдання

    Додати настройку, яка дозволить вибрати параметр з файлу import.xml. Параметр буде додано до поле товару "Простір назв".

    Варіанти налаштування:

    • Чи не імпортувати - означає, що при завантаженні файлів в поле "Назва сторінки" дані записуватися не будуть.
    • Найменування - означає, що при завантаженні файлів в поле "Назва сторінки" буде записуватися дані файлу import.xml тега <Найменування>.
    • Повне найменування - означає, що при завантаженні файлів в поле "Назва сторінки" буде записуватися дані файлу import.xml тега <Опис>.

    Рішення

    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 <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> 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>

    3. Для запису значення в поле товару "Простір назв" відкрийте файл /app/addons/rus_exim_1c/func.php.

    4. Знайдіть функцію fn_exim_1c_import_products в файлі func.php (функція викликається з файлу exim_1c.php).

      1 2 3 4 5 6 7 8 9 10 11 12 &lt;? 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); }}}

    5. Знайдіть цикл перебору товарів і додайте код для запису значення в поле товару "Простір назв", в залежності від обраної налаштування "Використовувати в назві сторінки" модуля "Російська локалізація - Експорт, імпорт 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 &lt;? 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 -> Значення ), "-"); }}}}}}

    6. Для перегляду значень змінних і масивів використовуйте функцію 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 </ Ід> </ Групи> </ Товар> </ Товари>

    Запуск обробки файлів import.xml, offers.xml можна здійснювати через браузер за допомогою запиту в адресному рядку.

    Тим самим Ви можете виконувати модифікації і розробку без використання 1С.

    Завантажте файли import.xml і offers.xml в папку інтернет-магазину:

    / Var / exim / 1С_ТекущаяДата

    ТекущаяДата - форматі ДДММГГГГ.

    Примітка

    Приклади файлів можна завантажити за посиланням:

    import.xml

    offers.xml

    xml

    Тестування файлу import.xml

    Для тестування файлу import.xml в адресному рядку браузера введіть: ваш_домен / app / addons / rus_exim_1c / exim_1c.php? Type = catalog & mode = import & filename = import.xml

    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 &lt;? 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.

    У вікні браузера має з'явитися значення змінної $ _product

    Тестування файлу offers.xml

    Для завантаження і обробки файлу offers.xml введіть в браузері: ваш_домен / app / addons / rus_exim_1c / exim_1c.php? Type = catalog & mode = import & filename = offers.xml

    Після завантаження всіх даних у вікні браузера відобразитися слово означає закінчення обробки файлу:

    • success - успіх.
    • failure - помилка.

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

    Після обміну даними, можна подивитися дані завантажені в інтернет магазин:

    • Дані категорій - "Меню Товари - Категорії".
    • Дані про товари та їх цінах - "Меню Товари - Товари".

    Примітка

    Завантаження файлів повинна проводитися послідовно. Запустіть import.xml, після закінчення обробки, запустіть offers.xml.

Php?
Php?
Php?
Lt;?
Lt;?
Php?
Lt;?
Php?
Php?