Интеграция 1С-Битрикс с Яндекс.Маркет
Каталог на сайте — это одна структура данных. Яндекс.Маркет ожидает другую: свои категории, обязательные атрибуты для каждой категории, фиды в формате YML с конкретными тегами. Без правильной настройки товары не пройдут модерацию, а прошедшие — покажут неверные цены или пустые характеристики. Интеграция 1С-Битрикс с Яндекс.Маркет — это маппинг двух разных моделей данных и поддержание синхронизации.
Архитектура интеграции
Яндекс.Маркет работает с магазином через два канала:
- YML-фид (Yandex Market Language) — XML-файл с товарами, который Маркет периодически забирает по URL. Основной канал для каталога.
-
Partner API (
https://api.partner.market.yandex.ru/) — REST API для управления заказами, ценами, остатками, статусами.
В 1С-Битрикс за генерацию фида отвечает модуль catalog.export с профилем экспорта «Яндекс.Маркет (YML)». За работу с API — либо модуль из Marketplace (RetailCRM, Kooplex, «МоёДело»), либо кастомный обработчик.
Генерация YML-фида: глубокая настройка
Стандартный профиль экспорта создаётся в Магазин → Настройки → Экспорт каталога → Яндекс.Маркет. Базовые параметры:
- Тип торговли: DBS (Delivery by Seller) — доставка продавцом, FBS (Fulfillment by Seller) — отгрузка со своего склада через логистику Маркета, FBY (Fulfillment by Yandex) — товар лежит на складе Яндекса.
- Инфоблок каталога: привязка к конкретному инфоблоку товаров.
- Свойства для экспорта: маппинг полей инфоблока на теги YML.
Обязательные теги для каждого <offer>:
| Тег YML | Поле в Битрикс | Примечание |
|---|---|---|
<name> |
NAME элемента |
До 150 символов |
<price> |
Цена каталога | В рублях, без скидок |
<currencyId> |
Валюта | RUR / USD |
<categoryId> |
Раздел инфоблока | Маппится на категории Маркета |
<picture> |
DETAIL_PICTURE или свойство |
Минимум 300×300 px, до 10 фото |
<vendor> |
Свойство «Бренд» | Обязательно для большинства категорий |
<barcode> |
Свойство «Штрихкод» | EAN-13. Без него — ограничения по размещению |
<description> |
DETAIL_TEXT |
До 3000 символов, HTML-теги ограничены |
Критичный момент — <param>. Яндекс.Маркет требует характеристики товара в виде <param name="Размер">42</param>. В Битрикс характеристики — это свойства инфоблока. Стандартный экспортный профиль выгружает только те свойства, которые явно отмечены в настройках экспорта. Если свойство множественное (несколько значений), каждое значение генерирует отдельный <param>.
Проблема с торговыми предложениями (SKU). Если товар имеет торговые предложения (размер, цвет), каждое предложение — отдельный <offer> в фиде. Связь задаётся через <group_id> (объединяет предложения одного товара). Стандартный экспорт Битрикс не всегда корректно формирует group_id — может потребоваться доработка обработчика экспорта в /bitrix/php_interface/include/catalog_export/.
Маппинг категорий
Яндекс.Маркет использует собственное дерево категорий. Раздел «Электроника → Смартфоны» в вашем каталоге — это конкретный categoryId в дереве Маркета. Маппинг задаётся двумя способами:
- Через модуль интеграции — загружается дерево категорий Маркета, и для каждого раздела инфоблока выбирается соответствие.
-
Через
market_categoryв YML — тег<market_category>Электроника/Смартфоны</market_category>внутри<offer>. Яндекс пытается автоматически сопоставить.
Первый способ надёжнее. Некорректный маппинг = товар попадёт в чужую категорию, где другие обязательные атрибуты, и не пройдёт модерацию.
Управление заказами через Partner API
Когда покупатель заказывает товар на Яндекс.Маркет, заказ нужно принять и обработать. Схема:
- Маркет отправляет POST на ваш endpoint (callback URL) с данными заказа.
- Обработчик на стороне Битрикс создаёт заказ в модуле
saleчерезBitrix\Sale\Order::create(). - При смене статуса заказа в Битрикс — отправляется PUT-запрос в Partner API для обновления статуса на Маркете.
Статусы Маркета: PROCESSING → DELIVERY → DELIVERED / CANCELLED. Маппинг на статусы Битрикс (N, P, F, C) настраивается в модуле интеграции.
Обновление остатков. Маркет ожидает актуальные остатки. Два подхода:
-
Через фид — тег
<count>в<offer>. Фид обновляется по cron раз в 30–60 минут. -
Через API — метод
PUT /campaigns/{campaignId}/offers/stocks. Обновляет остатки в реальном времени. Используется для высокооборачиваемых товаров.
Частые ошибки при интеграции
Фид не проходит валидацию. Яндекс проверяет XSD-схему. Незакрытые теги, спецсимволы (&, <, >) в описании без CDATA, кириллица в URL картинок — всё это причины отклонения.
Цены не совпадают. Если на сайте действуют скидки, а фид выгружает цену до скидки — Маркет может заблокировать магазин за расхождение цен. Решение: в экспортном профиле выбрать тип цены, соответствующий цене на сайте, или формировать <oldprice> для зачёркнутой цены.
Дубли товаров. При переиндексации каталога меняются ID элементов инфоблока. Маркет считает товары с новыми ID новыми офферами, а старые — удалёнными. Используйте <shop-sku> на основе артикула (свойство ARTICLE), а не ID элемента.
Сроки интеграции по масштабу
| Масштаб каталога | Объём работ | Срок |
|---|---|---|
| До 500 товаров, без SKU | Настройка фида + базовый маппинг | 3–5 дней |
| 500–5000, с торговыми предложениями | Фид + доработка экспорта + API остатков | 1–1.5 недели |
| 5000+, FBS/FBY, мультискладовость | Полная интеграция: фид + API заказов + остатки + статусы | 1.5–2 недели |







