Сергей Сорокин Обсудить задачу
← Все статьи

· Выгрузка товаров

Как я восстановил обновление YML-выгрузки на Битриксе

Опубликовано Обновлено

В августе 2026 года я восстанавливал YML-выгрузку интернет-магазина на Битриксе. Файл с товарами открывался по привычной ссылке, но не обновлялся около 9 месяцев. Дилеры забирали его вручную или своими программами. Нужно было вернуть ежедневную сборку и сохранить адрес файла.

Новый лист с товарами вставляется в держатель, прежний лист лежит рядом.
Замена файла выгрузки каталога. Иллюстрация создана с помощью ИИ.

Почему файл открывался, но не обновлялся

При проверке 17–18 августа я обнаружил, что на сервере нет задания cron для выгрузки. Такое задание запускает скрипт по расписанию без участия человека. Последняя генерация файла была датирована 09.11.2025. В ту ночь магазин переносили на другой сервер. Совпадение дат не объясняло отсутствие задания.

YML в этом магазине собирал отдельный самописный скрипт. Он записывал товары, цены и наличие в файл, который затем скачивали дилеры. Изменения в каталоге Битрикса попадали в выгрузку только при следующем запуске скрипта.

Старый файл оставался на месте, поэтому сервер продолжал отдавать его по ссылке. Успешное скачивание не означало, что цены и наличие в нем соответствуют каталогу.

Какие данные я исправил в выгрузке

Одного запуска старого скрипта было недостаточно. Он составлял название из штрихкода товара, добавлял бренд к артикулу и выгружал цвет служебным кодом справочника. Предложения из неактивных разделов попадали в файл, хотя самих разделов в списке категорий не было.

Я подготовил новый генератор, сохранив основную структуру YML и идентификаторы предложений.

  • Название собирается из названия товара и цвета свечения. Вместо кода цвета подставляется его название из справочника.
  • В артикул попадает только артикул предложения, без добавленного бренда.
  • Товары из неактивных разделов и предложения без положительной цены не выгружаются. Отрицательное количество заменяется на 0.
  • Адреса изображений кодируются по частям пути, чтобы пробелы и кириллица корректно передавались в ссылке. Логотип магазина исключен из фотографий товаров.

Как новый файл заменяет предыдущий

Прежний скрипт записывал выгрузку сразу в файл, который скачивали дилеры. При прерывании записи они могли получить недописанный XML. В новом генераторе я сначала собираю результат во временный файл.

Перед заменой скрипт проверяет, что XML читается, предложения есть и их число совпадает со счетчиком генерации. Для ежедневной выгрузки также задан минимальный размер файла. Если одна из проверок не проходит, прежний файл остается на месте.

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

Ежедневная сборка по прежнему адресу

Выгрузку вернул на ежедневную ночную сборку по прежнему адресу. В сентябре 2026 года расписание предусматривало сборку в 03:30. Дилерам не требовалось менять ссылку для скачивания.

Кабинеты маркетплейсов я не настраивал, приемка выгрузки конкретной площадкой не проверена.

Проверьте свой YML-файл

Укажите ссылку на выгрузку или выберите сохраненный файл. Инструмент проверит XML, ID предложений, цены и связи с категориями, покажет замечания и подготовит отчет для разработчика. Можно начать с условного примера с намеренными ошибками в данных.

Для проверки и сравнения выгрузок включите JavaScript в браузере. Дату выгрузки, цены и категории можно сверить вручную по файлу.

С чего начать, если данные в выгрузке устарели

Выберите товар, у которого недавно менялась цена или наличие, и сравните каталог сайта с выгрузкой. Если данные устарели уже на сайте, начните с их загрузки в каталог. Если сайт показывает актуальные данные, а файл отстает, проверьте дату генерации внутри YML и журнал запусков скрипта.

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

Как искать причину сбоя обмена с 1С

Начнем с вашей задачи

Расскажите,
что нужно сделать.

Перейти к форме

Если сайт уже работает, пришлите ссылку и опишите задачу. Для нового проекта расскажите, кто будет им пользоваться и что он должен делать.

Сергей Сорокин

Сергей СорокинВы напишете лично мне.

Удобнее связаться напрямую?

Адрес, на который можно ответить.
От 10 до 5000 символов. Ссылку на сайт можно добавить здесь.