Выход на Яндекс Маркет начинается не с рекламы и не с карточек, а с невзрачного XML-файла — товарного фида. Именно из него площадка узнаёт, что вы продаёте, по какой цене и в каком наличии. И именно на нём чаще всего спотыкаются: цены разъехались с сайтом, пропали обязательные поля, категории смаппились неверно — и фид уходит в блок, а товары исчезают с витрины маркетплейса.
Это практическое руководство о том, как сгенерировать корректный YML-фид для Яндекс Маркета из каталога 1С-Битрикс: разберём структуру файла, обязательные поля, привязку цен и наличия к данным из 1С, автообновление и защиту от блокировок. Настройку выгрузок и обмена мы закрываем услугой автоматизации продаж и склада на 1С.
Коротко
- YML-фид — XML-выгрузка каталога, из которой Маркет берёт товары, цены и наличие; без него товаров на площадке нет.
- Обязательны идентификатор, url, price, currencyId, categoryId, название и атрибут available.
- Цены и остатки в фиде должны совпадать с сайтом, а значит — с данными из 1С; иначе блокировка.
- Фид генерируется из каталога и обновляется по расписанию через агент или cron, а не вручную.
Что такое YML-фид и зачем он нужен
YML (Yandex Market Language) — это специализированный XML-формат для выгрузки товарного каталога. Яндекс Маркет и совместимые сервисы читают этот файл и формируют из него карточки: берут названия, цены, наличие, категории, характеристики и ссылки на ваш сайт. Фид — это мост между каталогом на 1С-Битрикс и площадкой.
Без корректного фида товары либо вообще не попадут на Маркет, либо попадут с ошибками — неверными ценами, битыми ссылками, не в тех категориях. А поскольку площадка сравнивает данные фида с реальным сайтом, любое расхождение бьёт по показу и грозит санкциями. Поэтому качество фида — это не техническая мелочь, а условие присутствия на маркетплейсе.
Структура файла YML
YML-файл имеет строгую иерархию. На верхнем уровне — элемент с датой формирования, внутри которого две ключевые части:
- Магазин (shop). Общие данные: название, компания, валюты, дерево категорий, параметры доставки.
- Валюты (currencies). Перечень валют с курсами, на которые ссылаются цены товаров.
- Категории (categories). Дерево разделов с идентификаторами и связями «родитель — потомок».
- Предложения (offers). Собственно товары: каждое предложение — отдельный элемент с полями.
Важно, чтобы структура была валидным XML: правильная кодировка (обычно UTF-8), корректное экранирование спецсимволов в названиях и описаниях, закрытые теги. Одна незакрытая скобка или неэкранированный амперсанд ломают весь файл, и площадка не сможет его прочитать.
Обязательные поля предложения
Каждое предложение (offer) должно нести минимальный набор полей, иначе оно отклоняется.
| Поле | Назначение | Пример |
|---|---|---|
| id | Уникальный идентификатор предложения | Артикул или код 1С |
| available | Наличие товара | true / false |
| url | Ссылка на карточку на сайте | Полный URL товара |
| price | Цена | Число в валюте магазина |
| currencyId | Валюта цены | RUR |
| categoryId | Категория товара | Идентификатор из дерева |
| name / model | Название товара | Наименование карточки |
Для многих категорий Маркет требует дополнительные параметры — вес, габариты, характеристики, штрихкод. Точный набор зависит от типа товара, поэтому актуальные требования площадки нужно сверять до выгрузки: недостающее обязательное поле — частая причина отклонения предложения.
Категории и их маппинг
Одна из самых частых бед — неверный маппинг категорий. У вас на сайте своё дерево разделов, а у Маркета — своя номенклатура категорий. Если товар попадает не в ту категорию, он показывается не тем покупателям или отклоняется.
Дерево категорий в фиде должно быть связным: каждая категория ссылается на существующего родителя, циклов и висящих ветвей нет. Товар привязывается к листовой категории, а не к корню. Аккуратное дерево и явный маппинг избавляют от большинства проблем с размещением.
Цены, валюта и наличие из 1С
Сердце фида — цены и наличие, и именно они чаще всего расходятся с реальностью. Маркет сравнивает цену и наличие в фиде с вашим сайтом и наказывает за расхождения. Поэтому фид обязан собираться из тех же данных каталога, что приходят обменом из 1С.
- Единый источник. И сайт, и фид берут цены и остатки из каталога, наполненного обменом CommerceML.
- Правильный тип цены. В фид попадает розничная цена, соответствующая витрине, а не оптовая или закупочная.
- Наличие по складу отгрузки. Для распределённого склада — реальный остаток того склада, откуда поедет заказ.
- Актуальность. Фид пересобирается достаточно часто, чтобы не отставать от изменений цен и остатков.
Если обмен с 1С работает с задержкой или из неверного источника, фид неизбежно разъедется с сайтом. Поэтому надёжный обмен — фундамент корректного фида; его настройку и аудит мы проводим в рамках аудита и оптимизации 1С.
Товарные предложения и вариации
Отдельная тонкость — товары с вариациями: размеры, цвета, фасовки. В терминах 1С-Битрикс это торговые предложения (SKU) у товара-родителя. В YML каждая покупаемая вариация обычно выгружается как отдельное предложение со своим идентификатором, ценой и наличием.
Здесь легко ошибиться: если выгрузить только товар-родитель, покупатель не сможет выбрать нужный размер, а если задублировать вариации некорректно — Маркет посчитает это ошибкой. Правильная генерация разворачивает торговые предложения в отдельные offer, сохраняя связь с родителем и передавая различающие параметры (размер, цвет) как характеристики.
Штатный экспорт против своей генерации
В 1С-Битрикс с торговым каталогом есть штатный экспорт в YML через мастер настройки. Он покрывает базовые сценарии и его стоит попробовать первым.
| Критерий | Штатный экспорт | Своя генерация |
|---|---|---|
| Скорость запуска | Быстро, из коробки | Требует разработки |
| Гибкость полей | Ограниченная | Полный контроль |
| Маппинг категорий | Базовый | Любые правила |
| Несколько площадок | Неудобно | Естественно |
| Фильтрация ассортимента | Ограниченная | Произвольная |
Если требований немного — штатного экспорта достаточно. Как только нужны особые категории Маркета, кастомные параметры, фильтрация ассортимента или несколько фидов под разные площадки, переходят к собственной генерации поверх каталога, чтобы точно управлять содержимым.
Автообновление по расписанию
Фид — не файл, который сделали один раз. Цены и остатки меняются постоянно, и файл должен пересобираться автоматически. В 1С-Битрикс для этого есть агенты и cron.
- Задайте генератор. Скрипт, который собирает фид из свежих данных каталога.
- Повесьте на расписание. Агент 1С-Битрикс или системный cron запускают генерацию нужное число раз в сутки.
- Пишите в стабильный URL. Файл кладётся по постоянному адресу, который указан в кабинете Маркета.
- Логируйте результат. Фиксируйте время генерации и ошибки, чтобы ловить сбои.
Для большого каталога генерация может быть тяжёлой, поэтому её выносят в фоновый процесс и оптимизируют выборку, чтобы не нагружать сайт. О быстрой серверной инфраструктуре под такие задачи мы писали в статье про хостинг и BitrixVM, а про эффективные выборки — в материале про D7 ORM.
Валидация и защита от блокировок
Блокировка фида почти всегда сводится к нескольким причинам, и все они предотвратимы:
- Расхождение цен и наличия. Данные фида не совпадают с сайтом — главная причина санкций.
- Битые ссылки. url ведёт на несуществующую или закрытую карточку.
- Отсутствие обязательных полей. Пропущено price, url, categoryId или другое требуемое поле.
- Невалидный XML. Неэкранированные символы, неверная кодировка, незакрытые теги.
- Неверный маппинг категорий. Товары попадают не в те разделы Маркета.
Перед публикацией прогоняйте фид через валидатор площадки и следите за статусом в кабинете. Регулярный мониторинг ловит проблемы до того, как они превратятся в санкции и потерю показов.
Несколько фидов под площадки
Если вы размещаетесь не только на Яндекс Маркете, помните: у каждой площадки свои требования к формату и полям. То, что подходит Маркету, может не подойти другому агрегатору или рекламной системе.
Практичный подход — один каталог как единый источник данных и несколько выгрузок с разными правилами: свой набор полей, своя фильтрация ассортимента, свой маппинг категорий под каждую площадку. Такую же выгрузку в товарный фид мы разбирали применительно к рекламным системам — механика генерации одна, а требования к полям разные. Единый источник с настраиваемыми выгрузками поддерживать намного проще, чем ручные файлы под каждую площадку.
Частые ошибки
- Фид из устаревшего источника. Цены и остатки не совпадают с сайтом — прямой путь к блокировке.
- Удаление товаров вместо available=false. Исчезновение из фида Маркет трактует хуже, чем помеченное отсутствие.
- Невалидный XML. Неэкранированные символы и битая кодировка ломают чтение файла.
- Только товар-родитель. Вариации не развёрнуты в отдельные offer, покупатель не выбирает размер.
- Ручное обновление. Фид собирают руками, он отстаёт от реальности и разъезжается.
- Хардкод маппинга категорий. Изменение дерева ломает выгрузку, правки разбросаны по коду.
- Нет мониторинга. Проблему с фидом замечают, когда товары уже пропали с витрины.
Чек-лист внедрения
- Единый источник данных. Фид собирается из каталога, наполненного обменом из 1С.
- Обязательные поля на месте. id, url, price, currencyId, categoryId, название, available у каждого предложения.
- Маппинг категорий вынесен. Соответствие разделов и категорий Маркета ведётся отдельно.
- Вариации развёрнуты. Торговые предложения выгружаются как отдельные offer с параметрами.
- Наличие корректно. Отсутствующие товары помечены available=false по складу отгрузки.
- Автообновление настроено. Агент или cron пересобирают фид по расписанию в стабильный URL.
- Валидация проходит. Файл — валидный XML, проверен валидатором площадки.
- Мониторинг включён. Статус фида в кабинете и логи генерации отслеживаются.
Вывод
Товарный фид YML — это фундамент присутствия магазина на Яндекс Маркете. От его корректности зависит, попадут ли товары на площадку, в тех ли категориях они окажутся и не улетит ли фид в блок за расхождение цен. Ключ к надёжному фиду — единый источник данных: и сайт, и выгрузка берут цены и остатки из каталога, наполненного обменом с 1С.
Соберите фид из свежих данных, заполните обязательные поля, разверните вариации, настройте маппинг категорий и автообновление по расписанию, а перед публикацией — валидацию и мониторинг. Тогда фид перестанет быть источником проблем и станет стабильным каналом, через который ваш каталог из 1С-Битрикс уверенно попадает на маркетплейс.