1. Главная страница » Компьютеры

1С битрикс обмен с сайтом

Автор: | 16.12.2019

Прошлый пост вдохновил меня написать более подробную заметку про обмен Битрикса с 1С. С первого взгляда кажется, что это очень сложный процесс, но с многолетним опытом понимаешь, что это не просто сложно: это еще и вообще полное г(кхе-кхе). Попробую описать словами этот процесс. Добро пожаловать в ад описание обмена с 1с.

Инициатором любого обмена является 1С, сайт не загружает ничего в 1С, сайт только принимает запросы и отдаёт результат. По умолчанию, 1С обращается к скрипту /bitrix/admin/1c_exchange.php. Этот путь указывается в настройках обмена в самой 1С. Из коробки в этом файле включается файл /bitrix/modules/sale/admin/1c_exchange.php. Если открыть файл, то видим там подключение нескольких компонентов в зависимости от $_GET["type"]. В общем случае интересуют два из них:

bitrix:sale.export.1c — экспорт заказов.

bitrix:catalog.import.1c -импорт каталога.

Содержание

Экспорт заказов в 1С

Обмен заказами начинается с авторизации с помощью логина и пароля, который указали в настройках обмена. После авторизации сайт выдает ID сессии, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=checkauth .

Читайте также:  Http sgo edu71 ru about asp

После получения ID сессии идёт инициализация обмена, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=init&sess >. На этом этапе сайт отдаёт настройки обмена со стороны сайта.

Для получения списка заказов запрашивается URL /bitrix/admin/1c_exchange.php?type=sale&mode=query&sess >. Выгружаются заказы с полями EXTERNAL_ORDER = "N", UPDATED_1C = "N" и обновившиеся после последней успешной выгрузки в 1С (это проверяется по времени из свойства "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale).

Флаг EXTERNAL_ORDER указывает, что заказ создан в 1С и его выгрузка в 1С не требуется.

Флаг UPDATED_1C после успешного импорта из 1С на сайте устанавливается в "Y" и такие заказы не участвуют в дальнейших экспортах до их обновления на сайте. Во время обновлений заказов на сайте UPDATED_1C устанавливается в "N".

После обработки заказов 1С для завершения обмена запрашивает URL /bitrix/admin/1c_exchange.php?type=sale&mode=success&sess >. При этом в свойство "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale записывается время запроса списка заказов (НЕ текущее время, т.к. с момента запроса заказов до их обработки могли добавиться заказы и они попадут в следующую выгрузку с сайта).

Модификация

В экспорте заказов участвуют файл /bitrix/admin/1c_exchange.php , компонент bitrix:sale.export.1c и класс CSaleExport . Какие-либо события здесь отсутствуют, поэтому для модификации этого процесса нужно заменить компонент на свой, создать класс-наследник CSaleExport и заменить вызовы в компоненте на него. В последних версиях Битрикс этот класс стал относительно читабельным, в старых там была просто простыня из php и "xml".

Отключение проверки источника запроса

С версии 15.5 добавлена дополнительная проверка и если вызвать просто /bitrix/admin/1c_exchange.php?type=sale&mode=query , то получим ошибку "failure Ошибка проверки источника запроса. Обновите модуль обмена". Если нет желания возиться с sessid, то можно отключить проверку источника запроса, для этого нужно выполнить:

Импорт товаров из 1С

Импорт начинается с авторизации, посылается запрос на /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth с передачей логина и пароля, который указали в настройках обмена. После авторизации сайт выдает ID сессии.

Далее идёт инициализация обмена, URL /bitrix/admin/1c_exchange.php?type=catalog&mode=init&sess >. На этом этапе в сессии инициализируется массив данных обмена $_SESSION["BX_CML2_IMPORT"] и сайт отдаёт параметры обмена: возможность использования zip, лимит размера файла и т.д. Также на этом этапе очищается папка для файлов выгрузки. Скорее всего, это будет папка /upload/1c_catalog/. Для отладки можно включить сохранение старых файлов обмена, тогда при новом обмене старые данные будут перемещаться в отдельные папки: 1c_catalog0, 1c_catalog1 и т.д.. Для сохранения данных нужно объявить константу в dbconn.php:

После этого 1С начинает подготовку данных и далее посылает их POST-запросом на сайт частями, URL: /bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=ИМЯ_ФАЙЛА.zip&sess >. Запрос продолжается, пока файлы не будут переданы полностью.

1С передает на сайт xml-файлы с данными товаров и предложений, а также картинки. В случае если сайт разрешил использовать zip, то 1С передает все файлы одним архивом. Тогда следующий шаг начинается с его распаковки.

В выгрузке могут участвовать xml-файлы:

  • import.xml — товары, разделы, типы цен, склады, свойства товаров и единицы измерения;
  • offers.xml — торговые предложения товаров и их свойства;
  • prices.xml — цены торговых предложений(в новых версиях);
  • rests.xml — остатки торговых предложений(в новых версиях);
  • references.xml — пользовательские справочники (highload-инфоблоки, в новых версиях).

Картинки загружаются в папку import_files.

Далее начинаются шаги импорта, URL: /bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=ИМЯ_ФАЙЛА_ВЫГРУЗКИ.xml , где ИМЯ_ФАЙЛА_ВЫГРУЗКИ — import.xml, offers.xml и т.д. Обработка файла завершается, когда сайт отдаёт слово "success". За обработку файла выгрузки отвечают классы CIBlockXMLFile (/bitrix/modules/iblock/classes/mysql/cml2.php) и CIBlockCMLImport (/bitrix/modules/iblock/classes/general/cml2.php).

Обработка файла состоит из нескольких шагов (информация будет дополняться):

Очистка временной таблицы (таблица b_xml_tree);

Метод CIBlockXMLFile::DropTemporaryTables(). Обычный drop таблицы b_xml_tree.

Создание временной таблицы;

Метод CIBlockXMLFile::CreateTemporaryTables(). Здесь создается таблица b_xml_tree. Можно, кстати, задать storage engine этой таблицы, равно как и всех создаваемые битриксом, с помощью определения константы MYSQL_TABLE_TYPE.

Чтение файла во временную таблицу;

  • Индексация временной таблицы;
  • Импорт метаданных;
  • Импорт разделов;
  • Деактивация разделов и пересчёт левой и правой границ для разделов;
  • Импорт элементов;
  • Деактивация элементов;
  • success.
  • Некоторые шаги могут выполняться за несколько запросов, порциями по несколько секунд (это время настраивается параметров "Интервал одного шага в секундах" в настройках интеграции с 1С в админке Битрикса).

    Модификация

    На шаге 10, т.е. по окончании обработки файла выгрузки (NB: одного файла, например, товаров или предложений) вызывается событие OnSuccessCatalogImport1C модуля catalog. Аргументы обработчика — параметры компонента обмена и путь к файлу выгрузки.

    Также для изменения процесса обмена можно использовать обычные события, например, OnBeforeIBlockElementUpdate или OnBeforeProductAdd. В обработчике, чтобы определить, что событие вызвано именно во время обмена с 1С, я использую такое костыльное условие:

    Ну и, если ничего нельзя решить событиями, всегда можно полностью изменить процесс обмена, скопировав и изменив файл /bitrix/admin/1c_exchange.php , компонент bitrix:catalog.import.1c и класс CIBlockCMLImport .

    Отключение проверки источника запроса

    Как и в случае с выгрузкой товаров, при импорте товаров есть проверка источника запроса. Можно отключить её следующим кодом:

    Статья будет дополняться по мере появления новой информации и вдохновения.

    Ведение бизнеса в сети Интернет – это ключевое условие конкурентоспособности современных торговых компаний!

    Интеграция «1С-Битрикс: Управление сайтом» с торговыми конфигурациями «1С:Предприятие» помогает вам решить следующие технологические задачи:

    1. Публикация товарной номенклатуры в каталоге интернет-магазина
    2. Передача заказов на сайте в «1С» для обработки
    3. Выгрузка результатов обработки заказов на сайт для уведомления клиентов

    Обмен данными с 1С поддерживается в следующих редакциях 1С-Битрикс: Управление сайтом, начиная с версии 6.5:

    Краткое описание

    Продукты «1С:Предприятие 8.2» и «1С-Битрикс: Управление сайтом» поставляются со встроенными в системы штатными процедурами взаимодействия и поддержкой двунаправленного обмена данными с «1С:Предприятие», образуя готовое комплексное решение по автоматизации торговли, включая создание корпоративных веб-сайтов и организации продаж в сети Интернет.


    Схема взаимодействия программных продуктов

    Взаимодействие продуктов «1С» и «1С-Битрикс» реализуется на базе процедур двунаправленного обмена данными. Обмен данными выполняется с использованием основанного на XML открытого Стандарта обмена коммерческой информацией – CommerceML 2.0.

    Интеграция «1С-Битрикс: Управление сайтом» с торговыми конфигурациями «1С: Предприятие» помогает вам решить следующие технологические задачи:

    • Публикация товарной номенклатуры в каталоге интернет-магазина.
    • Передача заказов на сайте в «1С» для обработки.
    • Выгрузка результатов обработки заказов на сайт для уведомления клиентов.
    • Real-time обмен с «1С»
    • Модуль интеграции с 1С
    • Загрузка/выгрузка
    • Мультиканальность взаимодействия
    • Естественная интеграция «из коробки»
    • Простота настройки
    • Автоматическая работа по расписанию
    • Безопасность
    • Производительность
    • Открытый формат и протокол обмена
    • Технологические параметры интеграции
    • И множество других возможностей

    Естественная интеграция «из коробки»

    Для реализации интеграции не нужно приобретать каких-либо дополнительных модулей или конфигураций. Приобретая «1С: Управление торговлей» и «1С-Битрикс: Управление сайтом» вы автоматически получаете необходимый функционал.

    Вы также можете улучшить функционал интеграции, скачав и установив бесплатный модуль для 1С: Управление торговлей.

    Широкий функционал

    Мы предусмотрели автоматизацию большого количества задач, стоящих перед интернет-магазином, а также несколько различных бизнес-моделей работы функциональных блоков. Модули интеграции содержат множество настроек, что практически всегда позволяет подстроиться под бизнес-процессы вашей компании.

    Простота настройки

    Для того, чтобы обеспечить интеграцию не нужно обладать специальными знаниями в программировании или веб-технологиях. Настройки просты и понятны для пользователя, обладающего общими навыками работы с компьютером и базовыми знаниями продуктов «1С» и «1С-Битрикс».

    Возможность автоматической работы по расписанию

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

    Вы можете настроить автоматический двусторонний обмен данными по расписанию, и система будет выполнять заданные операции в указанные временные интервалы. Для администраторов возможно получение отчетов о результатах обмена.

    Также доступен обмен с «1С» в режиме реального времени. Real-time обмен с «1С» – это технология двусторонней непрерывной связи между «1С-Битрикс: Управление сайтом» и «1С». Система обеспечивает обмен данными в режиме реального времени между этими программными продуктами. Она не требует установки отдельного сервера и специальных настроек. Система стабильно работает практически на любом «железе», минимально нагружая интернет-магазин и «1С». Подробнее.

    Безопасность

    Никакие угрозы безопасности сайта не могут угрожать безопасности ваших данных в «1С»

    Веб-сайт работает на удаленном хостинге и не имеет доступа к системе «1С» и ее базе данных. Только в «1С» хранится необходимая информация для работы с веб-сайтом: адрес сервера и данные для выполнения аутентификации. Для сайта запрос от 1С — это типовой запрос от пользователя, который нужно обработать в соответствии с его правами.

    Нарушение безопасности «1С» также не грозит безопасности веб-сайта, поскольку, как правило, обмен выполняется от прав пользователя, который обладает достаточно ограниченными правами (только работа с товарами и заказами), и в принципе не может нанести сколь-либо особый вред веб-сайту.

    Производительность

    Ваш интернет-магазин может работать с огромным количеством посетителей, одновременно многие из них могут работать с каталогом продукции, осуществлять заказ товара.

    Сайт может выдерживать любую нагрузку, при этом не влиять на производительность «1С»

    Нагрузка на «1С» зависит только от настроек обмена данными, которые выполнит администратор: объема каталога товаров, наличия изображений и атрибутов и частоты обмена данными. Наиболее ресурсоемкая процедура для «1С» — это подготовка большого количества номенклатурных позиций для выгрузки. Но за счет системы контроля измененных позиций, при каждом сеансе обмена будут выгружены только те товары, данные по которым были изменены. Часто это не единицы или десятки товаров, и такая нагрузка совершенно незаметна.

    Открытый формат и протокол обмена

    Интеграция основана на применении открытого формата обмена коммерческой информацией CommerceML.

    Технологические параметры интеграции

    Продукты «1С: Предприятие 8.1» и «1С-Битрикс: Управление сайтом»поставляются со встроенными в системы штатными процедурами взаимодействия и поддержкой двунаправленного обмена данными с «1С: Предприятие», образуя готовое комплексное решение по автоматизации торговли, включая создание корпоративных веб-сайтов и организации продаж в сети Интернет.

    Взаимодействие продуктов 1С и 1С-Битрикс реализуется на базе процедур двунаправленного обмена данными. Обмен данными выполняется с использованием основанного на XML открытого Стандарта обмена коммерческой информацией – CommerceML 2.0.

    Интеграция реализуется следующими компонентами:

    1. Функционал «Обмен данными с сайтом»

    Входит в 1С: Предприятие 8.1 конфигураций УТ или УПП. Пункт меню: Сервис -> Обмен данными –> Обмен данными с веб-сайтом.

    2. Функционал «Интеграция с 1С»

    Входит в состав модулей Торговый каталог и Интернет-магазин продукта «1С-Битрикс: Управление сайтом (редакции Малый бизнес» или Бизнес).

    3. Функционал «Real-time обмен с «1С»

    • Обновить интернет-магазин до 14.5. Дополнительных настроек не требуется
    • В «1С» установить модуль обмена 4.0 (новая реализация модуля не снимает «1С» с поддержки)
    • Включить в настройках «1С» реальный режим обмена

    Real-time обмен с «1С»

    • Какими данными обмениваются системы
    • Как это все работает
    • Нетребовательность к ресурсам
    • Как включить Real-time обмен

    Обмен данными: «1С» и «1С-Битрикс: Управление сайтом»

    • из «1С» в интернет-магазин –> о товарах, ценах, остатках в рамках заказов;
    • из магазина в «1С» –> по заказам, статусам, платежным системам, покупателям, контрагентам.

    Как это работает

    Фактически «1С» все время открывает и поддерживает соединение к сайту, а при любом обрыве пытается его восстановить. Если вы выключили «1С» или у вас нет в текущий момент связи с интернет-магазином, изменения накапливаются как со стороны интернет-магазина, так и со стороны «1С», и при установлении соединения происходит соответствующий обмен данными.


    Нетребовательность к ресурсам

    Не нужен сервер для обмена!

    Огромным преимуществом системы обмена данными является ее нетребовательность к ресурсам. Системе не нужен сервер для обмена. Она работает практически на любом компьютере! Поэтому воспользоваться этой схемой обмена может любая, совсем небольшая компания.

    Следует учесть, что при подключении механизма обмена будет задействован 1 ключ – система как бы становится пользователем продукта. И это все, что она требует для работы.

    Для маленькой компании.
    Чаще всего существующие системы для обмена данными требуют установки последних версий продуктов и клиентского сервера, на котором должны быть выполнены специальные настройки. Схема обмена с «1С» от «1С-Битрикс» работает даже внутри небольшой компании. Пример: вы продаете пиццу, и ваша «1С» установлена на локальном компьютере.

    • Как включить Real-time обмен
    • Модуль обмена с «1С:ERP» 5.0
    • Поддерживаемые конфигурации
    • Как это все работает

    Как включить Real-time

    1. Обновите платформу интернет-магазина до версии не ниже 14.5. Дополнительных настроек не требуется
    2. В «1С» установите модуль обмена (не ниже 5.0, новая реализация модуля не снимает «1С» с поддержки)
    3. Включите в настройках «1С» режим обмена в реальном времени

    Модуль обмена с «1С:ERP» 5.0

    Скачать и установить

    Модуль обмена с «1С:ERP Управление предприятием 2.0» всегда доступен для загрузки.

    «Свежую» версию вы всегда найдете в списке бесплатных дополнений для торговых конфигураций «1С», предназначенных для улучшения функционала интеграции «1С» с интернет-магазином на базе «1С-Битрикс: Управление сайтом».

    «1С:ERP Управление предприятием 2.0» – инновационное решение для построения комплексных информационных систем управления деятельностью многопрофильных предприятий с учетом лучших мировых и отечественных практик автоматизации крупного и среднего бизнеса. Подробнее

    Какие конфигурации поддерживает real-time обмен

    Real time обмен поддерживает:
    Для России

    • Управление торговлей ред. 10.3
    • Управление торговлей ред. 11.1.4
    • Управление производственным предприятием ред. 1.3
    • Комплексная автоматизация ред. 1.1
    Для Украины

    • Управление торговлей ред. 3.0
    • Управление торговлей ред. 2.3
    • Управление торговым предприятием ред. 1.2
    • Управление производственным предприятием ред. 1.3
    Для Беларуси

    • Управление торговлей ред. 3.1
    • Управление торговлей ред. 2.0
    Для Казахстана

    • Управление торговлей ред. 3.0
    • Управление торговым предприятием ред.2.0
    • Управление производственным предприятием ред.1.3

    • Выгрузка каталога товаров в «1С»
    • Построение дерева каталогов
    • Пошаговая выгрузка каталога из «1С»
    • Оптимизация загрузки/выгрузки
    • Многоскладовость
    • Поддержка работы с SKU (Stock Keeping Unit)

    Выгрузка каталога товаров в «1С»

    Интеграция позволяет выгрузить каталог товаров с сайта в «1С» – импортировать каталог сайта для ведения учета в «1С: Управление торговлей»)

    Построение дерева каталогов

    Построение в «1С» дерева каталога для выгрузки на сайт – формирование новой структуры без переделки справочника номенклатуры)

    Пошаговая выгрузка каталога из «1С» в интернет-магазин

    Можно выгружать каталоги в десятки и стони тысяч наименований за несколько шагов:

    • Пошаговая выгрузка позволяет снизить нагрузку на интернет-магазин при обновлении больших каталогов.
    • Выгрузку данных можно настроить индивидуально: например, указать количество товаров, выгружаемых за один шаг.
    • Существует возможность возобновления обмена после ошибки.

    Оптимизация загрузки/выгрузки

    Многоскладовость

    Возможности позволяют создать несколько складов и задать в них количество товаров. В каталоге клиенты увидят информацию об остатках нужного товара на складе. Это особенно удобно для клиента, если он выбрал способ доставки товара «самовывоз».

    Например: «В магазине на Невском — 10 таких холодильников, а на Московском проспекте — 5». При заказе товара клиент может выбрать ближайший к нему магазин (или склад — в терминах интернет-магазина).

    Поддержка работы с SKU (Stock Keeping Unit)

    В продукт встроена поддержка работы с SKU (Stock Keeping Unit). На один товар можно добавить разные ценовые предложения в зависимости от свойств или характеристик (например, цвет рубашки, размер одежды, комплектация автомобиля).

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *