Настройка XML-обмена 1С-Битрикс: как избежать таймаутов и дублей

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка XML-обмена 1С-Битрикс: как избежать таймаутов и дублей
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Мы сталкивались с этой ситуацией десятки раз: клиент запускает обмен с 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 — официальная спецификация протокола обмена.