СезонГотовим магазин к высокому сезону и Чёрной пятнице: скорость, нагрузка, акции

Генерация товарных фидов (YML) для Яндекс Маркета

Генерация товарного фида YML для Яндекс Маркета из каталога 1С-Битрикс

Выход на Яндекс Маркет начинается не с рекламы и не с карточек, а с невзрачного XML-файла — товарного фида. Именно из него площадка узнаёт, что вы продаёте, по какой цене и в каком наличии. И именно на нём чаще всего спотыкаются: цены разъехались с сайтом, пропали обязательные поля, категории смаппились неверно — и фид уходит в блок, а товары исчезают с витрины маркетплейса.

Это практическое руководство о том, как сгенерировать корректный YML-фид для Яндекс Маркета из каталога 1С-Битрикс: разберём структуру файла, обязательные поля, привязку цен и наличия к данным из 1С, автообновление и защиту от блокировок. Настройку выгрузок и обмена мы закрываем услугой автоматизации продаж и склада на 1С.

Коротко

  • YML-фид — XML-выгрузка каталога, из которой Маркет берёт товары, цены и наличие; без него товаров на площадке нет.
  • Обязательны идентификатор, url, price, currencyId, categoryId, название и атрибут available.
  • Цены и остатки в фиде должны совпадать с сайтом, а значит — с данными из 1С; иначе блокировка.
  • Фид генерируется из каталога и обновляется по расписанию через агент или cron, а не вручную.

Что такое YML-фид и зачем он нужен

YML (Yandex Market Language) — это специализированный XML-формат для выгрузки товарного каталога. Яндекс Маркет и совместимые сервисы читают этот файл и формируют из него карточки: берут названия, цены, наличие, категории, характеристики и ссылки на ваш сайт. Фид — это мост между каталогом на 1С-Битрикс и площадкой.

Без корректного фида товары либо вообще не попадут на Маркет, либо попадут с ошибками — неверными ценами, битыми ссылками, не в тех категориях. А поскольку площадка сравнивает данные фида с реальным сайтом, любое расхождение бьёт по показу и грозит санкциями. Поэтому качество фида — это не техническая мелочь, а условие присутствия на маркетплейсе.

Структура файла YML

YML-файл имеет строгую иерархию. На верхнем уровне — элемент с датой формирования, внутри которого две ключевые части:

Важно, чтобы структура была валидным XML: правильная кодировка (обычно UTF-8), корректное экранирование спецсимволов в названиях и описаниях, закрытые теги. Одна незакрытая скобка или неэкранированный амперсанд ломают весь файл, и площадка не сможет его прочитать.

Обмен данными сайта с маркетплейсом Сайткаталог, заказыМаркетплейсOzon, WB, МаркетОбменочередь / APIДанные идут в обе стороны по расписанию или по событию
Схема: сайт и Маркетплейс обмениваются данными в обе стороны — по расписанию или по событию. Товары и остатки приходят на сайт, заказы уходят обратно.

Обязательные поля предложения

Каждое предложение (offer) должно нести минимальный набор полей, иначе оно отклоняется.

ПолеНазначениеПример
idУникальный идентификатор предложенияАртикул или код 1С
availableНаличие товараtrue / false
urlСсылка на карточку на сайтеПолный URL товара
priceЦенаЧисло в валюте магазина
currencyIdВалюта ценыRUR
categoryIdКатегория товараИдентификатор из дерева
name / modelНазвание товараНаименование карточки

Для многих категорий Маркет требует дополнительные параметры — вес, габариты, характеристики, штрихкод. Точный набор зависит от типа товара, поэтому актуальные требования площадки нужно сверять до выгрузки: недостающее обязательное поле — частая причина отклонения предложения.

Категории и их маппинг

Одна из самых частых бед — неверный маппинг категорий. У вас на сайте своё дерево разделов, а у Маркета — своя номенклатура категорий. Если товар попадает не в ту категорию, он показывается не тем покупателям или отклоняется.

Совет: ведите соответствие «раздел сайта — категория Маркета» как отдельную таблицу маппинга, а не хардкодьте в генераторе. Тогда при изменении дерева категорий вы правите одно место, а не переписываете логику выгрузки.

Дерево категорий в фиде должно быть связным: каждая категория ссылается на существующего родителя, циклов и висящих ветвей нет. Товар привязывается к листовой категории, а не к корню. Аккуратное дерево и явный маппинг избавляют от большинства проблем с размещением.

Цены, валюта и наличие из 1С

Сердце фида — цены и наличие, и именно они чаще всего расходятся с реальностью. Маркет сравнивает цену и наличие в фиде с вашим сайтом и наказывает за расхождения. Поэтому фид обязан собираться из тех же данных каталога, что приходят обменом из 1С.

Если обмен с 1С работает с задержкой или из неверного источника, фид неизбежно разъедется с сайтом. Поэтому надёжный обмен — фундамент корректного фида; его настройку и аудит мы проводим в рамках аудита и оптимизации 1С.

Товарные предложения и вариации

Отдельная тонкость — товары с вариациями: размеры, цвета, фасовки. В терминах 1С-Битрикс это торговые предложения (SKU) у товара-родителя. В YML каждая покупаемая вариация обычно выгружается как отдельное предложение со своим идентификатором, ценой и наличием.

Здесь легко ошибиться: если выгрузить только товар-родитель, покупатель не сможет выбрать нужный размер, а если задублировать вариации некорректно — Маркет посчитает это ошибкой. Правильная генерация разворачивает торговые предложения в отдельные offer, сохраняя связь с родителем и передавая различающие параметры (размер, цвет) как характеристики.

Штатный экспорт против своей генерации

В 1С-Битрикс с торговым каталогом есть штатный экспорт в YML через мастер настройки. Он покрывает базовые сценарии и его стоит попробовать первым.

КритерийШтатный экспортСвоя генерация
Скорость запускаБыстро, из коробкиТребует разработки
Гибкость полейОграниченнаяПолный контроль
Маппинг категорийБазовыйЛюбые правила
Несколько площадокНеудобноЕстественно
Фильтрация ассортиментаОграниченнаяПроизвольная

Если требований немного — штатного экспорта достаточно. Как только нужны особые категории Маркета, кастомные параметры, фильтрация ассортимента или несколько фидов под разные площадки, переходят к собственной генерации поверх каталога, чтобы точно управлять содержимым.

Автообновление по расписанию

Фид — не файл, который сделали один раз. Цены и остатки меняются постоянно, и файл должен пересобираться автоматически. В 1С-Битрикс для этого есть агенты и cron.

  1. Задайте генератор. Скрипт, который собирает фид из свежих данных каталога.
  2. Повесьте на расписание. Агент 1С-Битрикс или системный cron запускают генерацию нужное число раз в сутки.
  3. Пишите в стабильный URL. Файл кладётся по постоянному адресу, который указан в кабинете Маркета.
  4. Логируйте результат. Фиксируйте время генерации и ошибки, чтобы ловить сбои.

Для большого каталога генерация может быть тяжёлой, поэтому её выносят в фоновый процесс и оптимизируют выборку, чтобы не нагружать сайт. О быстрой серверной инфраструктуре под такие задачи мы писали в статье про хостинг и BitrixVM, а про эффективные выборки — в материале про D7 ORM.

Валидация и защита от блокировок

Блокировка фида почти всегда сводится к нескольким причинам, и все они предотвратимы:

Перед публикацией прогоняйте фид через валидатор площадки и следите за статусом в кабинете. Регулярный мониторинг ловит проблемы до того, как они превратятся в санкции и потерю показов.

Несколько фидов под площадки

Если вы размещаетесь не только на Яндекс Маркете, помните: у каждой площадки свои требования к формату и полям. То, что подходит Маркету, может не подойти другому агрегатору или рекламной системе.

Практичный подход — один каталог как единый источник данных и несколько выгрузок с разными правилами: свой набор полей, своя фильтрация ассортимента, свой маппинг категорий под каждую площадку. Такую же выгрузку в товарный фид мы разбирали применительно к рекламным системам — механика генерации одна, а требования к полям разные. Единый источник с настраиваемыми выгрузками поддерживать намного проще, чем ручные файлы под каждую площадку.

Частые ошибки

Чек-лист внедрения

  1. Единый источник данных. Фид собирается из каталога, наполненного обменом из 1С.
  2. Обязательные поля на месте. id, url, price, currencyId, categoryId, название, available у каждого предложения.
  3. Маппинг категорий вынесен. Соответствие разделов и категорий Маркета ведётся отдельно.
  4. Вариации развёрнуты. Торговые предложения выгружаются как отдельные offer с параметрами.
  5. Наличие корректно. Отсутствующие товары помечены available=false по складу отгрузки.
  6. Автообновление настроено. Агент или cron пересобирают фид по расписанию в стабильный URL.
  7. Валидация проходит. Файл — валидный XML, проверен валидатором площадки.
  8. Мониторинг включён. Статус фида в кабинете и логи генерации отслеживаются.

Вывод

Товарный фид YML — это фундамент присутствия магазина на Яндекс Маркете. От его корректности зависит, попадут ли товары на площадку, в тех ли категориях они окажутся и не улетит ли фид в блок за расхождение цен. Ключ к надёжному фиду — единый источник данных: и сайт, и выгрузка берут цены и остатки из каталога, наполненного обменом с 1С.

Соберите фид из свежих данных, заполните обязательные поля, разверните вариации, настройте маппинг категорий и автообновление по расписанию, а перед публикацией — валидацию и мониторинг. Тогда фид перестанет быть источником проблем и станет стабильным каналом, через который ваш каталог из 1С-Битрикс уверенно попадает на маркетплейс.

Частые вопросы

Что такое YML-фид и зачем он для Яндекс Маркета?

YML (Yandex Market Language) — это XML-формат выгрузки товарного каталога, на основе которого Яндекс Маркет и другие сервисы получают данные о ваших товарах: названия, цены, наличие, категории, характеристики и ссылки. Без корректного фида товары не попадут в маркетплейс или попадут с ошибками. Фид — это мост между вашим каталогом на 1С-Битрикс и площадкой размещения.

Можно ли сделать YML-фид штатными средствами 1С-Битрикс?

Да, в редакциях с торговым каталогом есть штатный экспорт в YML через мастер настройки экспорта. Он покрывает базовые случаи: выгрузку разделов, товаров, цен и наличия. Для нетривиальных требований — особые категории Маркета, кастомные параметры, фильтрация ассортимента, несколько фидов под разные площадки — обычно дописывают собственную генерацию поверх каталога, чтобы точно управлять содержимым.

Какие поля в YML-фиде обязательны?

Минимально для каждого предложения нужны: идентификатор, ссылка на карточку (url), цена (price), валюта (currencyId), категория (categoryId), название (name или typePrefix+model), наличие (атрибут available). Для многих категорий Маркет требует дополнительные параметры и корректный маппинг категорий. Точный набор зависит от типа товара, поэтому свериться с актуальными требованиями площадки обязательно.

Как часто нужно обновлять товарный фид?

Цены и наличие должны быть актуальными, иначе площадка понизит товары или заблокирует за расхождения. Обычно фид обновляют несколько раз в день или чаще для быстро меняющегося ассортимента. В 1С-Битрикс это удобно делать по расписанию через агент или cron, чтобы файл пересобирался автоматически из свежих данных каталога, а не вручную.

Как обеспечить, чтобы цены и остатки в фиде совпадали с 1С?

Фид должен генерироваться из тех же данных каталога, что приходят обменом из 1С. Если на сайте цены и остатки актуальны благодаря обмену CommerceML, то и фид, собранный из каталога, будет корректным. Проблемы начинаются, когда фид собирают из устаревшего источника или обмен работает с задержкой. Поэтому надёжный обмен с 1С — фундамент корректного фида.

Что делать с товарами, которых нет в наличии?

Их не удаляют из фида, а помечают атрибутом available=false. Полное исчезновение товара из фида Маркет трактует хуже, чем корректно помеченное отсутствие. Для распределённого склада важно учитывать реальный остаток по складу отгрузки, а не общий. Товары под заказ с длинным сроком поставки иногда исключают, чтобы не портить показатели по срокам.

Как избежать блокировки фида за ошибки?

Главные причины блокировок — расхождение цен и наличия между фидом и сайтом, битые ссылки, отсутствие обязательных полей и неверный маппинг категорий. Перед публикацией прогоняйте фид через валидатор площадки, следите за кодировкой и валидностью XML, обновляйте данные достаточно часто. Регулярный мониторинг статуса фида в кабинете Маркета помогает ловить проблемы до санкций.

Нужен ли отдельный фид под каждый маркетплейс?

Как правило, да. У разных площадок свои требования к формату и полям: то, что подходит Яндекс Маркету, может не подойти другому агрегатору. Практичнее генерировать несколько фидов из одного каталога, применяя к каждому свои правила: набор полей, фильтрацию ассортимента, маппинг категорий. Единый источник данных с разными выгрузками проще поддерживать, чем ручные файлы под каждую площадку.

Поделиться:

Нужен корректный товарный фид без блокировок?

Настроим генерацию YML из каталога 1С-Битрикс с актуальными ценами и наличием из 1С, автообновлением и валидацией. Рассчитаем работу по вашему каталогу.

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: настраиваем обмен с 1С, товарные фиды и интеграции с маркетплейсами для стабильного размещения ассортимента.

← Все статьи блога