К статье
Практический материал

Торговля и Склад · 11 мин

Как создать YML-фид из 1С: настройка выгрузки товаров

Как выгрузить YML-фид из 1С для Яндекс Маркета и других площадок: типовые модули, обработки, настройка соответствий, проверка и типичные ошибки.

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

Типовые конфигурации «1С:Управление торговлей 11», «1С:Комплексная автоматизация» и «1С:ERP» уже содержат механизмы обмена с торговыми площадками и выгрузки каталога. Если у вас старая или сильно доработанная конфигурация, чаще всего используют внешние обработки формата .epf, которые читают остатки, цены и свойства номенклатуры и формируют XML по расписанию.

Прежде чем выбирать инструмент, уточните требования конкретной площадки: Яндекс Маркет, Google Merchant и другие сервисы по-разному трактуют обязательные элементы, категории и атрибуты. Фид, принятый одной площадкой, может быть отклонён другой из-за одного отсутствующего параметра.

Какие данные должны быть в 1С до выгрузки

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

Проверьте заполненность карточек до настройки выгрузки. Типичные пробелы: не указан производитель (элемент vendor), нет описания (description), не заполнены штрихкоды, пустые характеристики, из-за которых невозможно сформировать параметры param. В «1С:Управление торговлей» удобно использовать отчёт по номенклатуре с группировкой по незаполненным реквизитам или типовую обработку проверки заполнения.

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

ЦеныЗаполненный вид цен

Совпадает ли вид цен в 1С с ценой на сайте

ИзображенияПрисоединённые файлы

Есть ли картинки и доступны ли они по публичной ссылке

ОстаткиСкладской учёт

Актуальны ли остатки и как трактуется нулевой остаток

ХарактеристикиСвойства номенклатуры

Заполнены ли размер, цвет, материал для параметров param

Способ 1: типовой обмен с торговыми площадками

В конфигурациях «1С:Управление торговлей 11», «1С:Комплексная автоматизация 2» и «1С:ERP» есть встроенная подсистема интеграции с маркетплейсами и выгрузки товарных каталогов. В зависимости от версии релиза она находится в разделах «Продажи», «CRM и маркетинг» или «Интеграция с маркетплейсами». Типовой механизм позволяет сформировать YML-файл или выгрузить каталог напрямую по API площадки.

Порядок настройки обычно такой: создаётся настройка обмена с конкретной площадкой, выбирается соглашение или вид цен, настраивается отбор товаров (по сегменту, группе номенклатуры, складу), задаётся соответствие категорий 1С категориям площадки. После этого выполняется тестовая выгрузка и проверяется результат.

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

Настройка типовой выгрузки (УТ 11)
  1. 1
    Откройте раздел обмена с торговыми площадками и создайте новую настройку
  2. 2
    Укажите вид цен, склад и отбор товаров для выгрузки
  3. 3
    Сопоставьте категории номенклатуры с категориями площадки
  4. 4
    Выполните тестовую выгрузку на небольшой группе товаров
  5. 5
    Проверьте файл валидатором площадки и исправьте замечания
  6. 6
    Настройте регламентное задание для автоматического обновления фида

Способ 2: внешние обработки для выгрузки YML

Для конфигураций «1С:Управление торговлей 10.3», «1С:Управление нашей фирмой» и нестандартных решений чаще применяют внешние обработки (файлы .epf). Такая обработка открывается через меню «Файл — Открыть», читает данные номенклатуры, цен и остатков и формирует XML-файл в указанную папку или сразу выкладывает его на FTP/HTTP-сервер, откуда площадка забирает фид по расписанию.

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

Внешняя обработка — компромисс между скоростью внедрения и контролем. Её код при необходимости дорабатывает программист 1С: добавляет нужные теги, меняет логику формирования offer id, подключает дополнительные источники данных, например описания из присоединённых файлов.

Способ 3: собственная выгрузка на встроенном языке

Если требования площадки нестандартны или данные размазаны по нескольким источникам (несколько складов, разные виды цен, описания в отдельном справочнике), пишут собственную выгрузку. В 1С для формирования XML используют объекты ЗаписьXML или построитель DOM: последовательно создаются элементы yml_catalog, shop, categories и offers.

Типовой каркас кода выглядит так: открывается поток записи XML, записывается заголовок с указанием кодировки UTF-8, затем из запроса к остаткам и ценам выбираются товары и для каждого формируется элемент offer с атрибутом id и дочерними элементами name, price, currencyId, categoryId, picture, url.

bsl
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу, "UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("yml_catalog");
ЗаписьXML.ЗаписатьАтрибут("date", Формат(ТекущаяДатаСеанса(), "ДФ='yyyy-MM-dd HH:mm'"));
// далее shop, categories, offers из запроса
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();

Самостоятельная разработка даёт полный контроль, но требует сопровождения: при изменении требований площадки код придётся править. Обязательно предусмотрите экранирование спецсимволов XML (&, <, >, кавычки) в наименованиях и описаниях — стандартные методы записи делают это автоматически, но при ручной конкатенации строк фид ломается на первом же товаре с амперсандом в названии.

Как настроить соответствие полей и категорий

Самая трудоёмкая часть — не формирование файла, а маппинг: соответствие данных 1С требованиям YML. Каждой группе номенклатуры нужно сопоставить категорию из классификатора площадки, каждому свойству товара — параметр param с правильным именем. Например, свойство «Цвет» в 1С должно попасть в элемент param с атрибутом name="Цвет", а не в произвольный текст описания.

Обратите внимание на идентификаторы офферов. Атрибут id элемента offer должен быть стабильным: если при очередной выгрузке у товара изменится id, площадка воспримет его как новый товар, и накопленная статистика, отзывы и привязка к карточке модели потеряются. Лучший вариант — использовать GUID номенклатуры или связку «номенклатура + характеристика».

Проверка и публикация фида

Сформированный файл сначала проверяют локально: открывают в браузере или редакторе и убеждаются, что XML не обрывается, кодировка UTF-8, спецсимволы экранированы. Затем файл размещают по постоянному URL (на сайте или FTP) и указывают ссылку в кабинете площадки. Большинство площадок имеют встроенный валидатор, который покажет ошибки и предупреждения по конкретным товарам.

Частые замечания валидатора: отсутствует обязательный элемент, цена указана с текстом вместо числа, ссылка на изображение недоступна извне (проверьте, что картинки открываются без авторизации), категория не соответствует классификатору площадки. Исправляйте замечания итеративно: сначала критичные ошибки, потом предупреждения.

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

Контрольные точки

Как проверить готовый фид

Открытие файла в браузере
Норма

XML отображается с деревом элементов

Тревожный признак

Ошибка парсинга, обрыв на элементе offer

Валидация на площадке
Норма

Файл принят, ошибки отсутствуют или незначительны

Тревожный признак

Критические ошибки по обязательным полям

Цены и остатки
Норма

Совпадают с данными на сайте и в 1С

Тревожный признак

Расхождения по части товаров

Ссылки на изображения
Норма

Картинки открываются без авторизации

Тревожный признак

Ошибка 403/404 по ссылкам picture

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Выгрузка без отбора по остаткам — в фид попадают отсутствующие товары и площадка снижает рейтинг магазина
02
Конкатенация строк XML вместо ЗаписьXML — файл ломается на спецсимволах в наименованиях
03
Изменяемый offer id — потеря истории товара и привязки к карточке модели
04
Картинки по локальным путям — площадка не может их скачать, товары отклоняются
05
Формирование фида вручную по запросу — цены и остатки быстро устаревают
Итог

Что важно запомнить

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

Частые вопросы о выгрузке YML из 1С

Можно ли создать YML-фид без программиста?

Да, если у вас актуальная типовая конфигурация (УТ 11, КА 2, ERP, УНФ) — встроенные механизмы обмена с площадками настраиваются через интерфейс без изменения кода. Понадобится аккуратно заполнить соответствие категорий и проверить результат валидатором. Для старых или нестандартных конфигураций без доработок обычно не обойтись.

Как выгрузить товары с характеристиками (размер, цвет)?

Каждая комбинация «номенклатура + характеристика» должна стать отдельным оффером со своим id, ценой и остатком. В типовых механизмах это включается настройкой выгрузки характеристик; в собственной выгрузке запрос строится по регистру остатков с разрезом по характеристикам. Общие свойства (бренд, материал) выносятся в param каждого оффера.

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

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

Что делать, если площадка отклоняет фид из-за категорий?

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

Подходит ли один фид для разных площадок?

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

Файл большого каталога формируется очень долго. Как ускорить?

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