Товарная выгрузка ломается тихо. Файл отдаётся, площадка его принимает, товары «загружаются» — а половина каталога не появляется, или названия превращаются в набор символов. Разбираем, что проверять и в каком порядке.
Проверки по порядку
1. Фид вообще доступен
Тривиально и регулярно ломается. Ссылка должна открываться без авторизации, отдавать код 200 и не требовать cookie. Проверка через браузер, где вы уже авторизованы, не годится — нужен запрос со стороны.
2. Кодировка совпадает с объявленной
В первой строке XML указана кодировка. Значительная часть российских выгрузок отдаётся в windows-1251, и это нормально — ненормально, когда объявлено одно, а внутри другое.
Симптом: названия читаются как случайные символы. Ошибки при этом нет — файл формально валиден.
3. XML корректен
Незакрытые теги, недопустимые символы, амперсанд без экранирования в названии товара. Последнее — частая причина: «Болты & гайки» ломает разбор, если символ не экранирован.
4. Категории на месте
Самая частая содержательная ошибка: товар ссылается на categoryId, которого нет в списке категорий. Такие предложения площадки обычно отбрасывают молча — вы недосчитаетесь товаров и не поймёте почему.
Проверка: собрать все categoryId из предложений и убедиться, что каждый есть в разделе категорий.
5. Идентификаторы уникальны и стабильны
Уникальны — два предложения с одним id означают, что одно из них потеряется.
Стабильны — если id меняется при каждой выгрузке, площадка при каждом обновлении видит полностью новый каталог: старые товары исчезли, появились новые. Ломается всё, включая накопленную статистику и позиции в выдаче.
Проверка: сравнить идентификаторы двух последовательных выгрузок.
6. Цены осмысленны
Нули, отрицательные значения, цены с пробелами и валютными символами внутри числа. Отдельно: цена в копейках вместо рублей — редкая, но дорогая ошибка.
7. Наличие проставлено
Атрибут доступности должен быть у всех предложений. Отсутствие обычно трактуется по умолчанию, и умолчание может оказаться не тем, что вы имели в виду.
8. Картинки открываются
Ссылки на изображения должны быть абсолютными, доступными без авторизации и вести на существующие файлы. Битая ссылка — карточка без фото.
9. Характеристики без мусора
Служебные поля, пустые значения, шаблонные заглушки вида #PROP_TITLE#, дубли цены в свойствах. Всё это приезжает из настроек выгрузки и засоряет карточки.
10. Количество позиций соответствует ожиданиям
Простейшая и самая полезная проверка. Если в каталоге 20 000 товаров, а в фиде 12 000, дальше можно не смотреть — выгрузка неполная.
11. Размер и сжатие
Крупные фиды отдаются архивом. Если вы отдаёте сжатый файл, убедитесь, что потребитель это понимает: определять сжатие нужно по содержимому, а не по расширению в адресе.
12. Время генерации
Фид, который собирается десять минут, будет обрываться по таймауту у части потребителей. Предгенерация файла по расписанию решает это полностью.
Что автоматизировать
Ручная проверка по этому списку занимает час и делается один раз. Проблема в том, что выгрузка ломается позже — после обновления движка, изменения настроек или роста каталога.
Минимальный автоматический контроль:
| Проверка | Периодичность | Сигнал |
|---|---|---|
| Фид доступен и отдаёт 200 | ежедневно | письмо при отказе |
| Число позиций | ежедневно | отклонение больше 10% |
| XML разбирается | ежедневно | письмо при ошибке |
| Категории на месте | ежедневно | число «сирот» |
Вторая строка ловит большинство тихих поломок: неполная выгрузка проявляется именно падением количества.
Коротко
- Выгрузка ломается тихо: файл валиден, а каталог неполный или нечитаемый.
- Расхождение объявленной и фактической кодировки не даёт ошибки, только мусор в названиях.
- Ссылка на несуществующую категорию — самая частая содержательная ошибка.
- Нестабильные идентификаторы товаров ломают всё, что накапливается со временем.
- Ежедневная проверка числа позиций ловит большую часть тихих поломок.


