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

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

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

Разбираем, как в 1С выгрузить товар как предложение: настройка обмена с сайтом, CommerceML, типовые узлы обмена, ошибки сопоставления и проверка результата.

При обмене данными между 1С и сайтом (1С-Битрикс, интернет-магазины, маркетплейсы) товарная информация передаётся в формате CommerceML в виде двух разных сущностей: «товар» (product) и «предложение» (offer). Товар описывает карточку — наименование, описание, свойства, картинки. Предложение описывает то, что реально продаётся: конкретную номенклатуру с ценой, остатком, характеристикой и единицей измерения. Если сайт ожидает предложения, а 1С выгружает только товары, на витрине не появятся цены и остатки.

Задача «выгружать товар как предложение» возникает в двух типовых ситуациях. Первая — стандартный обмен с сайтом, где в выгрузке участвуют и товары, и предложения, но часть номенклатуры теряется из-за настроек отбора или отсутствия цен. Вторая — нестандартная интеграция, где приёмная система понимает только блок предложений, и нужно сформировать выгрузку именно в этом виде. Ниже разобраны оба сценария на примере типовых конфигураций «Управление торговлей», «Комплексная автоматизация» и «ERP».

Чем товар отличается от предложения в CommerceML

В стандарте CommerceML 2.x файл выгрузки содержит два корневых блока: Каталог с элементами Товар и ПакетПредложений с элементами Предложение. Один и тот же артикул может присутствовать в обоих блоках, но с разным содержимым. В блоке товаров передаются наименование, полное описание, группа, реквизиты и значения свойств, картинки, штрихкоды. В блоке предложений — идентификатор, цена с указанием типа, количество на складе, единица измерения и характеристика (если номенклатура ведётся по характеристикам).

Связь между блоками — по идентификатору: предложение ссылается на товар через общий GUID. Если номенклатура ведётся с характеристиками, то в каталоге товар один, а предложений несколько — по одному на каждую характеристику, и идентификатор предложения формируется как «GUID номенклатуры#GUID характеристики». Именно поэтому на сайте один товар может иметь несколько торговых предложений с разными ценами и остатками.

Стандартный обмен с сайтом: где включается выгрузка предложений

В типовых конфигурациях настройка находится в разделе «Администрирование» → «Обмен с сайтами» (или «CRM и продажи» → «Обмен с сайтом», зависит от конфигурации). Создаётся узел обмена с сайтом, в котором на закладках задаются два независимых контура: «Выгрузка товаров» и «Обмен заказами». Именно настройки выгрузки товаров определяют, попадёт ли позиция в файл как товар и как предложение.

Ключевые параметры узла обмена:

  • Отбор номенклатуры — отбор по группам, свойствам, сегментам. Позиция вне отбора не попадёт ни в товары, ни в предложения.
  • Вид цен — цена для предложения берётся из указанного вида цен. Если цена не установлена, предложение сформируется с нулевой ценой или не сформируется вовсе (зависит от версии модуля обмена).
  • Склады — остаток в предложении считается по выбранным складам. Нет остатка на этих складах — в предложении будет нулевое количество.
  • Режим выгрузки — полная выгрузка или только изменения (регистрация изменений в узле плана обмена).
Настройка узла обмена с сайтом
  1. 1
    Откройте Администрирование → Обмен с сайтами и создайте новый узел обмена
  2. 2
    На закладке Выгрузка товаров задайте отбор номенклатуры и проверьте его кнопкой проверки отбора
  3. 3
    Укажите вид цен, из которого брать цены для предложений, и склады для расчёта остатков
  4. 4
    Включите выгрузку картинок и файлов при необходимости, задайте режим (полная или изменения)
  5. 5
    Выполните тестовую выгрузку в файл и откройте XML: убедитесь, что есть и блок Каталог, и блок ПакетПредложений
  6. 6
    Настройте расписание регламентного задания обмена

Почему номенклатура не попадает в предложения

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

Типовые причины отсутствия предложения:

  • Не установлена цена по виду цен, указанному в узле обмена. Документ «Установка цен номенклатуры» проведён, но по другому виду цен — для обмена это равносильно отсутствию цены.
  • Номенклатура не проходит отбор узла: например, отбор настроен по свойству «Выгружать на сайт», а у новых позиций оно не заполнено.
  • Позиция помечена на удаление или находится в группе, исключённой из отбора.
  • Для номенклатуры с характеристиками цена установлена на номенклатуру без характеристики, а обмен ожидает цену по каждой характеристике.
  • Остаток есть физически, но на складе, не входящем в список складов узла обмена.
Контрольные точки

Как проверить результат выгрузки

Файл выгрузки (import.xml / offers.xml)
Норма

Есть оба блока: Каталог с товарами и ПакетПредложений с ценами и количеством

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

ПакетПредложений пустой или отсутствует — проверяйте цены и отбор

Цена в предложении
Норма

Совпадает с ценой по виду цен из узла обмена

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

Ноль или цена из другого вида цен

Идентификатор предложения
Норма

GUID номенклатуры, при характеристиках — через символ #

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

Идентификатор меняется от выгрузки к выгрузке — слетит связь на сайте

Количество
Норма

Совпадает со свободным остатком по складам узла

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

Ноль при наличии остатка — проверяйте список складов

Выгрузка только предложений: когда нужен нестандартный вариант

Некоторые приёмные системы — маркетплейсы, старые версии модулей, самописные каталоги — принимают только блок предложений или требуют, чтобы вся информация о позиции передавалась внутри предложения. Типовой обмен с сайтом такой режим напрямую не поддерживает: он всегда формирует пару «каталог + пакет предложений».

Рабочие варианты решения:

  • Универсальный обмен данными в формате CommerceML через план обмена «Обмен с сайтом» с доработанными настройками или через обработку выгрузки, где формируется только пакет предложений.
  • Собственная выгрузка на встроенном языке — запрос по номенклатуре с ценами и остатками, формирование XML через XDTO-пакет CommerceML или построчную запись. Такой вариант даёт полный контроль над составом полей предложения.
  • Преобразование на стороне приёмника — выгружать типовой файл и на стороне сайта обрабатывать только блок предложений. Часто это проще, чем менять выгрузку.

Способы сформировать предложения

Типовой обмен с сайтом

Подходит для 1С-Битрикс и совместимых CMS. Не требует доработок, но всегда выгружает каталог вместе с предложениями.

Доработанная выгрузка через XDTO

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

Внешняя обработка выгрузки

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

Обмен через HTTP/API приёмника

Подходит для маркетплейсов с собственным API. Предложения передаются в формате площадки, а не CommerceML.

Пример фрагмента предложения в XML

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

<Предложение>

<Ид>bd72d8fc-55b1-11e9-9f4d-00155d0a0a01</Ид>

<Наименование>Кабель ВВГ 3х2.5</Наименование>

<Цены>

<Цена>

<ИдТипаЦены>Розничная</ИдТипаЦены>

<ЦенаЗаЕдиницу>152.00</ЦенаЗаЕдиницу>

<Валюта>RUB</Валюта>

</Цена>

</Цены>

<Количество>340</Количество>

</Предложение>

Режимы выгрузки: полная и по изменениям

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

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

Частые ошибки и ограничения

Первая группа ошибок — организационные: цены устанавливаются после сеанса обмена, а не до него; новую номенклатуру заводят без заполнения свойства, по которому работает отбор; остатки приходуют на склад, не входящий в узел. Решение — регламент: сначала документы и цены, потом обмен.

Вторая группа — технические. Стабильность идентификаторов: если номенклатуру удалили и завели заново вместо переименования, GUID изменится, и на сайте появится дубль. Кодировка файла: CommerceML использует UTF-8, при ручной правке файла в редакторах с другой кодировкой ломаются русские наименования. Ограничения хостинга: большие файлы выгрузки режутся по таймауту — в настройках обмена есть параметр размера части файла и использования ZIP.

Типичные ошибки
01
Менять вид цен в узле обмена без полной выгрузки — на сайте останутся старые цены у части позиций
02
Удалять номенклатуру и заводить новую вместо исправления — GUID меняется, на сайте появляются дубли
03
Добавлять склад в узел обмена без пересчёта — остатки в предложениях резко вырастут, включая резервы, если не настроен отбор
04
Редактировать XML выгрузки вручную в Блокноте — сбивается кодировка UTF-8, сайт отклоняет файл
05
Запускать обмен одновременно из расписания и вручную — конфликт сеансов, неполные файлы

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

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

Итог

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

Предложение — это цена, остаток и характеристика позиции в обмене с сайтом. Чтобы товар выгружался как предложение, заполните цену по виду цен узла, проверьте склады и отбор, включите обмен предложениями и контролируйте результат по файлу выгрузки. Для приёмников, принимающих только offers, потребуется доработанная выгрузка.

Частые вопросы

Почему на сайте товар есть, а цены нет?

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

Можно ли выгружать предложения без блока товаров?

Типовой обмен с сайтом всегда формирует оба блока. Если приёмная система принимает только предложения, нужна доработка: собственная выгрузка через XDTO, внешняя обработка или преобразование файла на стороне приёмника. Часто проще настроить приёмник игнорировать каталог и читать только пакет предложений.

Как выгрузить предложения по характеристикам номенклатуры?

Если для вида номенклатуры включено использование характеристик, типовой обмен сам формирует отдельное предложение на каждую характеристику с идентификатором вида «GUID номенклатуры#GUID характеристики». Важно, чтобы цены устанавливались с учётом характеристик, если цены по ним различаются.

Что делать, если после обмена на сайте появились дубли товаров?

Дубли возникают при смене идентификатора: номенклатуру удалили и создали заново, либо базу 1С восстановили из копии с другими GUID. Удалите дубли на сайте, в 1С оставьте одну актуальную позицию и выполните полную выгрузку. Впредь исправляйте карточки вместо пересоздания.

Почему остаток в предложении нулевой, хотя товар есть на складе?

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

Как часто нужно выгружать предложения?

Зависит от оборачиваемости: при активных продажах выгрузку изменений запускают каждые 15–60 минут, полную — раз в сутки. Слишком частая полная выгрузка большого каталога перегружает и 1С, и сайт, поэтому основной режим — именно выгрузка изменений через регистрацию в узле плана обмена.