Разработка модуля интеграции с маркетплейсами для 1С-Битрикс начинается с задачи: синхронизировать каталог на 50 000 товаров с Ozon и Wildberries. Кажется, что это несколько строк кода, но на практике — десятки edge-кейсов: маркетплейс меняет API без предупреждения, товары отклоняются из-за несоответствия атрибутов, остатки расходятся из-за гонки состояний между складами. Потеря заказов, штрафы за расхождение остатков, ручная сверка каждое утро — вот цена ошибки.
Средний проект включает 3-5 маркетплейсов, 50 000+ товаров и 1000+ заказов в сутки. Без системы очередей и грамотного маппинга атрибутов интеграция развалится под нагрузкой. Мы построили модуль, который выдерживает пиковые нагрузки и не теряет данные. Опыт работы с 1С-Битрикс — более 10 лет, выполнено свыше 50 интеграций с маркетплейсами.
Как разработать модуль интеграции с маркетплейсами для 1С-Битрикс?
Стандартный модуль интеграции для 1С-Битрикс работает в рамках системы модулей (/bitrix/modules/). Он регистрируется через RegisterModule(), добавляет агентов через CAgent::AddAgent() и вешает обработчики на события инфоблоков (OnAfterIBlockElementAdd, OnAfterIBlockElementUpdate, OnAfterIBlockElementDelete). Документация 1С-Битрикс по созданию модулей рекомендует именно этот подход.
Минимальный набор функций: выгрузка товаров (маппинг полей инфоблока на схему маркетплейса, загрузка изображений, передача характеристик), синхронизация остатков (обновление CATALOG_QUANTITY), получение заказов (создание заказов в b_sale_order) и обработка статусов (двусторонняя синхронизация).
Почему очередь обязательна? — разработка модуля интеграции
Прямой вызов API маркетплейса из обработчика события — антипаттерн. Ozon допускает не более 10 RPS, WB — 1 запрос/секунду на /api/v3/orders. Если товаров 5000+, массовое редактирование в админке создаст шквал запросов и вернёт 429.
Правильная схема:
- Событие Битрикс → запись задачи в очередь (HL-блок или отдельная таблица)
- Агент каждые N минут → читает очередь пачками → вызывает API маркетплейса
- Результат → лог + обновление статуса задачи в очереди
Очередь — это единственный способ гарантировать, что вы не превысите лимиты API. В одном из проектов с каталогом в 200 000 товаров стандартный подход (прямые запросы из обработчиков) приводил к 429-м ошибкам каждые 5 минут. После внедрения очереди на HL-блоке нагрузка на API маркетплейса снизилась в 3 раза, а время синхронизации — с 4 часов до 20 минут.
| Поле | Тип | Описание |
|---|---|---|
| ID | int, AI | |
| ENTITY_TYPE | varchar(50) | product / order / stock |
| ENTITY_ID | int | ID элемента/заказа |
| ACTION | varchar(50) | create / update / delete |
| MARKETPLACE | varchar(30) | ozon / wb / yandex |
| STATUS | varchar(20) | pending / processing / done / error |
| ATTEMPTS | int | счётчик попыток |
| LAST_ERROR | text | текст последней ошибки |
| CREATED_AT | datetime | |
| PROCESSED_AT | datetime |
Маппинг атрибутов — самое трудоёмкое место
У каждого маркетплейса своя система категорий и обязательных атрибутов. Для Ozon нужно получить список атрибутов через /v3/category/attribute, для WB — /content/v2/object/charcs/{subjectId}. В модуле реализуется административный интерфейс, где задаются:
- Соответствие категорий (разделы инфоблока ↔ ID категории маркетплейса)
- Маппинг свойств (
UF_*илиPROPERTY_*↔attribute_id) - Маппинг складов (
CATALOG_STORE↔ warehouse_id) - Правила трансформации значений (например, числовые характеристики WB передаются как строки)
Сертифицированные специалисты 1С-Битрикс с многолетним опытом настраивают маппинг так, чтобы ни один товар не был отклонён из-за неверного формата.
Торговые предложения и вариативные товары
WB и Ozon по-разному работают с вариативностью. WB использует массив размеров sizes[], Ozon — color_image. В Битрикс ТП хранятся в дочернем инфоблоке. При выгрузке получаем все ТП через CCatalogSKU::GetOffersList() и собираем структуру под формат маркетплейса. При обновлении остатков обновляем каждый SKU отдельно.
Получение и обработка заказов
Заказы приходят через polling (агент) или webhook. При создании заказа в Битрикс:
- Покупатель создаётся как анонимный или привязывается по email.
- Способ доставки и оплаты должны быть заведены в системе (
b_sale_delivery_service,b_sale_pay_system). - Артикул маркетплейса должен совпадать с
CATALOG_ARTICLEилиXML_IDэлемента инфоблока. - Внешний ID заказа сохраняется в
b_sale_order_propsдля обратной синхронизации.
Обработка ошибок и мониторинг
Модуль без логирования — чёрный ящик. Минимальный лог пишется в b_event_log. Для production — собственная таблица с полями: уровень, маркетплейс, действие, HTTP-код, тело ответа (truncate до 4KB). Отдельный агент раз в час повторяет задачи с ATTEMPTS < 3, алертит неудачные через CEvent::Send() или Telegram.
Что входит в работу?
При заказе разработки модуля интеграции вы получаете:
- Архитектурная документация с описанием всех сущностей и потоков данных.
- Настройка модуля в боевой среде (доступы, конфигурация, тестовый запуск).
- Обучение администраторов (2 часа, возможен удалённый формат).
- Гарантийная поддержка 2 месяца (исправление ошибок, консультации).
- Исходный код модуля, переданный вам в собственность.
Почему наш модуль надёжнее стандартных решений?
Используем очередь как единственную точку входа для всех API-вызовов. Это гарантирует соблюдение rate limits, повтор при временных ошибках и полный лог. Модуль не сломается при скачке нагрузки — проверено на каталогах с 500 000 товаров. Все интеграции выполняются на лицензионном ПО, с соблюдением стандартов безопасности.
Этапы разработки модуля интеграции
- Аудит текущей системы и требований.
- Проектирование архитектуры модуля с учётом нагрузки.
- Разработка адаптеров для каждого маркетплейса.
- Реализация UI маппинга атрибутов и категорий.
- Настройка очередей и агентов.
- Интеграционное тестирование в sandbox (где доступен).
- Документация по эксплуатации и обучение администраторов.
- Гарантийная поддержка 2 месяца.
Сроки разработки
| Объём интеграции | Срок |
|---|---|
| Один маркетплейс, только выгрузка товаров + остатки | 3–5 недель |
| Один маркетплейс, полный цикл (товары + заказы + статусы) | 6–9 недель |
| Два маркетплейса, полный цикл | 10–14 недель |
| Три и более маркетплейса с общей очередью и UI маппинга | 16–24 недели |
Сроки указаны для разработки с нуля. При использовании готового ядра очереди и переиспользовании адаптеров — сокращение на 25–30%.
Тестирование и приёмка
Каждый адаптер должен иметь unit-тесты для маппинга и интеграционные тесты с sandbox-окружением (Ozon и Яндекс Маркет предоставляют sandbox, WB — тестирование через бой с тестовыми артикулами). Перед релизом проверяем сценарии: массовое обновление цен (500+ позиций), приход 50+ заказов одновременно, обнуление остатков.
Свяжитесь с нами для предварительной оценки вашего проекта — это бесплатно. Мы проанализируем архитектуру и предложим оптимальное решение.
Получите консультацию по архитектуре интеграции — обсудим детали и сроки.







