Эта статья подробно описывает процесс обмена данными между 1С и сайтом на базе 1С-Битрикс, используя компонент catalog.import.1c (импорт каталога товаров из 1С на сайт).
Мы разберем каждый этап, ключевые события и возможные ошибки, а также вывод сообщений компонента.
Общая схема обмена:
- Авторизация и инициализация: 1С запрашивает проверку авторизации и подготавливает сайт к обмену.
- Передача файлов: 1С передает файлы данных на сайт.
- Распаковка (опционально): Если данные сжаты в zip-архив, сайт распаковывает его.
- Импорт данных: Сайт пошагово импортирует данные из файлов.
- Деактивация (опционально): Сайт деактивирует товары и разделы, отсутствующие в импортированном файле.
- Завершение: Сайт выполняет финальные действия и очищает временные данные.
Подробное описание этапов и событий:
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):
- Удаление временных таблиц.
- Создание временных таблиц. Событие OnBeforeCatalogImport1C.
- Чтение XML и запись в временные таблицы.
- Индексация временных таблиц.
- Импорт метаданных (типы инфоблоков, свойства).
- Импорт разделов.
- Деактивация разделов (опционально). Сортировка разделов.
- Импорт элементов.
- Деактивация элементов (опционально).
- Дополнительные события:
- 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С и вашим сайтом.