Товарный фид — это машиночитаемая выгрузка каталога: файл, из которого сторонняя система узнаёт, что у вас есть, по какой цене и в каком количестве. Без него не работает ни подбор по заявкам, ни поиск по сайту, ни выход на маркетплейсы. В российской практике фактических стандартов два, и выбор между ними проще, чем кажется.
YML
YML — формат товарного фида Яндекса, наследник Yandex Market Language. Это XML с предсказуемой структурой: список категорий, затем список предложений.
Минимально значимый набор данных на товар:
- id — идентификатор предложения, стабильный между выгрузками;
- name — наименование;
- price и currencyId — цена и валюта;
- categoryId — ссылка на категорию из списка выше;
- available — наличие;
- vendor и vendorCode — бренд и артикул производителя;
- param — произвольные характеристики: имя и значение.
Последний пункт недооценивают, а он определяет, будет ли работать подбор по характеристикам и поиск по параметрам. Товар без единого param в фиде — это строка текста, которую можно сравнивать только по названию.
CommerceML
CommerceML — формат обмена, принятый в экосистеме 1С и 1С-Битрикс. Выгрузка обычно состоит из двух частей: описание товаров (import.xml) и цены с остатками (offers.xml), нередко упакованных в архив.
Он тяжелее YML и сложнее в разборе, но содержит больше данных: развёрнутые свойства, единицы измерения, иерархию групп. Если каталог ведётся в 1С, эта выгрузка уже настроена — и заново городить YML часто не требуется.
| YML | CommerceML | |
|---|---|---|
| Распространённость | очень высокая | в контуре 1С и Битрикс |
| Сложность разбора | низкая | средняя |
| Свойства товаров | простые пары «имя — значение» | развёрнутые, с типами |
| Обычный размер | один файл | несколько файлов, часто в архиве |
Практический вывод: если YML у вас уже есть — используйте его. Если каталог живёт в 1С-Битрикс и выгрузка CommerceML настроена — используйте её. Специально переходить с одного на другой смысла нет.
Где ломается разбор
Кодировка
Значительная часть российских выгрузок отдаётся в windows-1251, а не в UTF-8. Разбор, который предполагает UTF-8 по умолчанию, получает не ошибку, а мусор: названия превращаются в нечитаемые последовательности, и это тихая поломка — файл «разобрался», товары «загрузились».
Правильное поведение: прочитать объявление кодировки в первой строке XML и декодировать файл соответственно.
Сжатие
Крупные фиды часто отдаются архивом. Ссылка при этом может выглядеть как обычный XML — расширение ни о чём не говорит. Определять сжатие нужно по первым байтам файла, а не по адресу.
Размер
Каталог на сотни тысяч позиций — это файл, который не помещается в память целиком. Разбор должен идти потоком, по мере загрузки, иначе на достаточно большом каталоге всё падает независимо от корректности остального кода.
Нестабильные идентификаторы
Если id предложения меняется при каждой выгрузке, любая система, работающая с фидом, при каждом обновлении видит полностью новый каталог: старые товары исчезли, появились новые. Ломается всё — от статистики до накопленных данных о товарах.
Расписание важнее формата
Самая частая ошибка — разовая выгрузка «чтобы настроить». Фид, обновляемый вручную по случаю, хуже отсутствующего: система будет уверенно работать с ценами и остатками, которых уже нет, и никто этого не заметит, пока клиент не получит счёт на снятую с производства позицию.
Минимальные требования к регулярности:
- Выгрузка по расписанию, не реже, чем меняются цены.
- Пометка исчезнувших позиций как недоступных, а не молчаливое удаление: товар может пропасть из выгрузки по ошибке, и удалять накопленные о нём данные преждевременно.
- Докачка при обрыве для больших файлов — иначе обновление каталога на нестабильном канале не завершится никогда.
Что проверить в своём фиде прямо сейчас
- Открывается ли он по прямой ссылке без авторизации.
- В какой он кодировке и соответствует ли объявленная фактической.
- Есть ли
vendorCode— артикул производителя — хотя бы у ходовых позиций. - Сколько товаров имеют заполненные характеристики, а не только название.
- Меняются ли идентификаторы между двумя выгрузками.
Последние два пункта решают, будет ли подбор и поиск работать по существу или только по совпадению слов в названии.
Коротко
- YML проще и распространённее, CommerceML богаче и уместен там, где каталог в 1С.
- Кодировка windows-1251 — норма для российских фидов, её нужно читать, а не предполагать.
- Идентификаторы товаров обязаны быть стабильными между выгрузками.
- Регулярность обновления важнее выбора формата.
- Товар без характеристик в фиде можно искать только по названию — со всеми вытекающими ошибками.


