Блог Горошко Андрея 1C-Битрикс Обмен данными между 1С и Битрикс: детальное руководство

Обмен данными между 1С и Битрикс: детальное руководство

Эта статья подробно описывает процесс обмена данными между 1С и сайтом на базе 1С-Битрикс, используя компонент catalog.import.1c (импорт каталога товаров из 1С на сайт).

Мы разберем каждый этап, ключевые события и возможные ошибки, а также вывод сообщений компонента.

Общая схема обмена:

  1. Авторизация и инициализация: 1С запрашивает проверку авторизации и подготавливает сайт к обмену.
  2. Передача файлов: 1С передает файлы данных на сайт.
  3. Распаковка (опционально): Если данные сжаты в zip-архив, сайт распаковывает его.
  4. Импорт данных: Сайт пошагово импортирует данные из файлов.
  5. Деактивация (опционально): Сайт деактивирует товары и разделы, отсутствующие в импортированном файле.
  6. Завершение: Сайт выполняет финальные действия и очищает временные данные.

Подробное описание этапов и событий:

1. Авторизация и инициализация (mode=checkauth и mode=init)

  • checkauth:
    • События:
      • Проверка авторизации пользователя Битрикс.
      • Синхронизация времени: Сравнение времени сервера базы данных и веб-сервера. Значительное расхождение может вызвать проблемы.
      • Передача данных сессии PHP: Отправка имени, ID и хэша сессии для обеспечения безопасности последующих запросов.
    • Сообщения:
      • success + данные сессии (при успешной авторизации).
      • failure + текст ошибки (например, «Включена смена ID сессии» или «Время на сервере базы данных отличается…»).
  • init:
    • События:
      • Подготовка временной директории: Создание уникальной временной директории (если $arParams[«USE_TEMP_DIR»] = «Y») или очистка указанной директории.
      • Инициализация сессии обмена: Создание массива $_SESSION[«BX_CML2_IMPORT»] для хранения параметров и состояния обмена.
      • Проверка поддержки zip-сжатия.
    • Сообщения:
      • zip=yes/nofile_limit=… (при успешной инициализации).
      • failure + текст ошибки (например, «Ошибка инициализации временного каталога»).

2. Передача файлов (mode=file)

  • События:
    • Получение данных из php://input.
    • Запись данных в файл: Файл открывается в режиме добавления («ab») для поддержки поэтапной загрузки.
    • Проверка безопасности имени файла: Предотвращает загрузку файлов с опасными именами.
  • Сообщения:
    • success (при успешной записи).
    • failure + текст ошибки (например, «Ошибка записи в файл», «Ошибка открытия файла для записи», «Ошибка чтения HTTP данных»).

3. Распаковка (mode=import при наличии zip-архива)

  • События:
    • Поэтапная распаковка zip-архива с использованием CIBlockXMLFile::UnZip. Состояние распаковки сохраняется в сессии.
  • Сообщения:
    • progress + сообщение о прогрессе (например, «Идет распаковка архива»).
    • success + «Распаковка архива завершена».
    • failure + текст ошибки (например, «Ошибка распаковки архива»).

4. Импорт данных (mode=import после загрузки или распаковки)

  • События (шаги 1-9):
    1. Удаление временных таблиц.
    2. Создание временных таблиц. Событие OnBeforeCatalogImport1C.
    3. Чтение XML и запись в временные таблицы.
    4. Индексация временных таблиц.
    5. Импорт метаданных (типы инфоблоков, свойства).
    6. Импорт разделов.
    7. Деактивация разделов (опционально). Сортировка разделов.
    8. Импорт элементов.
    9. Деактивация элементов (опционально).
  • Дополнительные события:
    • OnBeforeCatalogImport1C: Вызывается перед импортом, позволяет изменить параметры.
    • OnSuccessCatalogImport1C: Вызывается после успешного импорта.
  • Сообщения:
    • progress + сообщение о прогрессе (например, «Обработано … из … элементов»).
    • success + «Импорт успешно завершен» (после выполнения всех шагов).
    • failure + текст ошибки (например, «Ошибка создания временных таблиц», «Ошибка открытия файла импорта», «Ошибка импорта метаданных», «Временная таблица не существует»).

5. Деактивация (mode=deactivate)

  • События:
    • Деактивация/удаление элементов и разделов, отсутствующих в импортированном файле, на основе временной метки (timestamp). Действие определяется параметрами $arParams[«ELEMENT_ACTION»] и $arParams[«SECTION_ACTION»].
  • Сообщения:
    • success + «Деактивация элементов завершена».
    • failure + текст ошибки (например, «Ошибка деактивации элементов»).

6. Завершение (mode=complete)

  • События:
    • OnCompleteCatalogImport1C: Вызывается после завершения обмена, позволяет выполнить дополнительные действия (например, очистку кеша).
    • Очистка временных данных: Удаление временных файлов и данных сессии.
  • Сообщения:
    • success + «Завершение процедуры импорта».

Типы сообщений компонента:

  • success: Успешное выполнение.
  • progress: Выполнение операции с информацией о прогрессе.
  • failure: Ошибка с текстовым описанием.

Обработка этих сообщений на стороне 1С критически важна для контроля хода обмена и обработки ошибок.

Эта статья дает общее представление о процессе обмена. Более подробную информацию можно найти в документации Bitrix.

Понимание этих этапов и параметров поможет вам настроить и отладить обмен данными между 1С и вашим сайтом.

Средний рейтинг
Еще нет оценок

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

Related Post

Bitrix как убрать заказы из очереди на выгрузку с сайта в 1СBitrix как убрать заказы из очереди на выгрузку с сайта в 1С

В данной статье мы рассмотрим, как можно убрать заказы из очереди на выгрузку с сайта bitrix в 1С. Флаг EXTERNAL_ORDER используется для обозначения заказов, которые были созданы в 1С. Если

Правильное использование BB кода в 1С-БитриксПравильное использование BB кода в 1С-Битрикс

В 1С-Битрикс BB код используется для форматирования текста в различных модулях, таких как форумы, задачи, блоги и комментарии. Для его обработки используется класс CTextParser. Вот несколько основных правил использования BB

Как работать с HL-блоками в 1С-БитриксКак работать с HL-блоками в 1С-Битрикс

В этой статье я расскажу вам, как работать с HL-блоками в 1С-Битрикс, используя API Bitrix. HL-блоки (Highload-блоки) — это специальные сущности, которые позволяют хранить и обрабатывать большие объемы данных в