Мы сталкивались с этой ситуацией десятки раз: клиент запускает обмен с 1С, а на выходе — таймауты, дубли товаров или цены, которые не обновляются. Стандартный модуль Торговый каталог (catalog) поддерживает протокол CommerceML 2.x, но на практике он ломается в трёх сценариях: кодировка не UTF-8, нестандартная структура <Классификатор> и превышение лимита времени при файлах больше 50 МБ. Мы настраиваем импорт под ключ за 1–2 дня с гарантией стабильной работы.
Почему возникают таймауты при импорте больших XML-файлов
Основная причина — ограничение max_execution_time в PHP. При загрузке файла размером 180 МБ, содержащего 200 000 товаров, скрипт 1c_exchange.php не успевает обработать данные за стандартные 30 секунд. Даже set_time_limit(0) не помогает, если в PHP-FPM настроен request_terminate_timeout. Решение — включить пошаговый импорт. В настройках модуля 1С выставляем «Размер файла для пошаговой обработки» (параметр CATALOG_IMPORT_STEP_SIZE). Битрикс с помощью SAX-парсера делит файл на чанки по 10 МБ и обрабатывает их последовательно. Это не только предотвращает таймауты, но и снижает нагрузку на БД: каждый шаг фиксируется, и при сбое обмен возобновляется с последней успешной порции. На одном из проектов с каталогом оборудования (150 000 SKU) такой подход сократил время импорта с 4 часов до 40 минут.
Как избежать дублей товаров при обмене?
Дубли возникают, когда идентификатор GUID номенклатуры (<Ид>) меняется в 1С. Например, после перехода на новую версию конфигурации или переноса данных. Битрикс не может сопоставить новый GUID с существующим XML_ID в b_iblock_element и создает новый элемент. Для исправления дублей используем прямой SQL-запрос или CIBlockElement::Update(). Профилактика — настройка в 1С: запретить выгрузку элементов с пустым или неуникальным GUID. В сложных случаях пишем обработчик события OnSuccessCatalogImport, который проверяет уникальность и принудительно обновляет XML_ID.
Что делать, если цены не обновляются?
Частая причина — несовпадение названий типов цен. В 1С тип цены может называться «Основная», а в Битриксе — «Розничная». Маппинг задается в /bitrix/admin/cat_price_type.php. Убедитесь, что <ТипЦены><Наименование> в XML совпадает с NAME в b_catalog_price_type. Если нужно сопоставить несколько типов цен, пишем кастомный обработчик OnSuccessCatalogImport. В нем парсим XML средствами SimpleXMLElement и обновляем цены через CPrice::Update().
Настройка экспорта из Битрикса в 1С
Для обратного потока (заказы → 1С) используется endpoint с параметром type=sale. Битрикс формирует orders.xml со структурой <Документ>, включающей позиции заказа. Критично проверить, что в настройках обмена включен флаг «Выгружать реализации» и указан нужный статус заказов. Параметры компонента bitrix:catalog.import.1c:
-
IBLOCK_ID— инфоблок каталога -
PRICE_TYPE— тип цены по умолчанию -
STORE_ID— склад по умолчанию -
USE_CML2_DESCRIPTION— брать описание из XML
Процесс настройки
| Этап | Срок |
|---|---|
| Диагностика текущей схемы обмена (проверка кодировки, структуры XML, ошибок лога) | 2–4 часа |
| Настройка маппинга типов цен и складов | 3–6 часов |
| Включение и конфигурация пошагового импорта | 2–4 часа |
| Тестовый прогон с боевыми данными + отладка (исправление дублей, ошибок) | 4–8 часов |
| Документирование схемы и консультация | 1–2 часа |
Итоговая настройка занимает 1–2 рабочих дня.
Сравнение подходов: штатный vs кастомный
| Критерий | Штатный обмен | Кастомная обработка |
|---|---|---|
| Поддержка больших файлов | Ограничен (сброс по времени) | Пошаговый SAX-парсер без таймаутов |
| Гибкость маппинга | Только через админку | Произвольные события и SQL |
| Время настройки | 2 часа | От 1 дня |
| Гарантия целостности | Средняя (риск дублей) | Высокая (автотесты и журнал) |
Что входит в работу
- Диагностика текущей конфигурации обмена (кодировка, структура
<Классификатор>, типы цен) - Настройка пошагового импорта для больших файлов (оптимальный размер чанка)
- Маппинг типов цен и складов (прямое соответствие или кастомные обработчики)
- Исправление дублей и ошибок GUID (SQL или API)
- Тестовый прогон с реальной выгрузкой (засекаем время, проверяем цены и остатки)
- Документация по схеме обмена (схема данных, описание полей)
- Консультация по дальнейшему сопровождению
У нас 10+ лет опыта разработки на Битрикс, более 200 проектов с интеграцией 1С. Сертифицированные специалисты гарантируют корректную синхронизацию каталога, цен и остатков. Для нетиповых задач (кастомные обработчики, нестандартная структура 1С) добавляется день на разработку.
Оценим ваш проект за 1 час — напишите нам. Получите консультацию инженера и предложение по настройке импорта под ключ.
CommerceML — официальная спецификация протокола обмена.







