Торговля и Склад · 12 мин
Выгрузка товара как предложение в 1С: настройка и обмен с сайтом
Разбираем, как в 1С выгрузить товар как предложение: настройка обмена с сайтом, CommerceML, типовые узлы обмена, ошибки сопоставления и проверка результата.
При обмене данными между 1С и сайтом (1С-Битрикс, интернет-магазины, маркетплейсы) товарная информация передаётся в формате CommerceML в виде двух разных сущностей: «товар» (product) и «предложение» (offer). Товар описывает карточку — наименование, описание, свойства, картинки. Предложение описывает то, что реально продаётся: конкретную номенклатуру с ценой, остатком, характеристикой и единицей измерения. Если сайт ожидает предложения, а 1С выгружает только товары, на витрине не появятся цены и остатки.
Задача «выгружать товар как предложение» возникает в двух типовых ситуациях. Первая — стандартный обмен с сайтом, где в выгрузке участвуют и товары, и предложения, но часть номенклатуры теряется из-за настроек отбора или отсутствия цен. Вторая — нестандартная интеграция, где приёмная система понимает только блок предложений, и нужно сформировать выгрузку именно в этом виде. Ниже разобраны оба сценария на примере типовых конфигураций «Управление торговлей», «Комплексная автоматизация» и «ERP».
Чем товар отличается от предложения в CommerceML
В стандарте CommerceML 2.x файл выгрузки содержит два корневых блока: Каталог с элементами Товар и ПакетПредложений с элементами Предложение. Один и тот же артикул может присутствовать в обоих блоках, но с разным содержимым. В блоке товаров передаются наименование, полное описание, группа, реквизиты и значения свойств, картинки, штрихкоды. В блоке предложений — идентификатор, цена с указанием типа, количество на складе, единица измерения и характеристика (если номенклатура ведётся по характеристикам).
Связь между блоками — по идентификатору: предложение ссылается на товар через общий GUID. Если номенклатура ведётся с характеристиками, то в каталоге товар один, а предложений несколько — по одному на каждую характеристику, и идентификатор предложения формируется как «GUID номенклатуры#GUID характеристики». Именно поэтому на сайте один товар может иметь несколько торговых предложений с разными ценами и остатками.
Стандартный обмен с сайтом: где включается выгрузка предложений
В типовых конфигурациях настройка находится в разделе «Администрирование» → «Обмен с сайтами» (или «CRM и продажи» → «Обмен с сайтом», зависит от конфигурации). Создаётся узел обмена с сайтом, в котором на закладках задаются два независимых контура: «Выгрузка товаров» и «Обмен заказами». Именно настройки выгрузки товаров определяют, попадёт ли позиция в файл как товар и как предложение.
Ключевые параметры узла обмена:
- Отбор номенклатуры — отбор по группам, свойствам, сегментам. Позиция вне отбора не попадёт ни в товары, ни в предложения.
- Вид цен — цена для предложения берётся из указанного вида цен. Если цена не установлена, предложение сформируется с нулевой ценой или не сформируется вовсе (зависит от версии модуля обмена).
- Склады — остаток в предложении считается по выбранным складам. Нет остатка на этих складах — в предложении будет нулевое количество.
- Режим выгрузки — полная выгрузка или только изменения (регистрация изменений в узле плана обмена).
- 1Откройте Администрирование → Обмен с сайтами и создайте новый узел обмена
- 2На закладке Выгрузка товаров задайте отбор номенклатуры и проверьте его кнопкой проверки отбора
- 3Укажите вид цен, из которого брать цены для предложений, и склады для расчёта остатков
- 4Включите выгрузку картинок и файлов при необходимости, задайте режим (полная или изменения)
- 5Выполните тестовую выгрузку в файл и откройте XML: убедитесь, что есть и блок Каталог, и блок ПакетПредложений
- 6Настройте расписание регламентного задания обмена
Почему номенклатура не попадает в предложения
Самая частая жалоба при обмене: «товар на сайте есть, а цены и остатка нет». В подавляющем большинстве случаев причина — в данных 1С, а не в модуле обмена. Проверять нужно по списку, от простого к сложному.
Типовые причины отсутствия предложения:
- Не установлена цена по виду цен, указанному в узле обмена. Документ «Установка цен номенклатуры» проведён, но по другому виду цен — для обмена это равносильно отсутствию цены.
- Номенклатура не проходит отбор узла: например, отбор настроен по свойству «Выгружать на сайт», а у новых позиций оно не заполнено.
- Позиция помечена на удаление или находится в группе, исключённой из отбора.
- Для номенклатуры с характеристиками цена установлена на номенклатуру без характеристики, а обмен ожидает цену по каждой характеристике.
- Остаток есть физически, но на складе, не входящем в список складов узла обмена.
Как проверить результат выгрузки
Есть оба блока: Каталог с товарами и ПакетПредложений с ценами и количеством
ПакетПредложений пустой или отсутствует — проверяйте цены и отбор
Совпадает с ценой по виду цен из узла обмена
Ноль или цена из другого вида цен
GUID номенклатуры, при характеристиках — через символ #
Идентификатор меняется от выгрузки к выгрузке — слетит связь на сайте
Совпадает со свободным остатком по складам узла
Ноль при наличии остатка — проверяйте список складов
Выгрузка только предложений: когда нужен нестандартный вариант
Некоторые приёмные системы — маркетплейсы, старые версии модулей, самописные каталоги — принимают только блок предложений или требуют, чтобы вся информация о позиции передавалась внутри предложения. Типовой обмен с сайтом такой режим напрямую не поддерживает: он всегда формирует пару «каталог + пакет предложений».
Рабочие варианты решения:
- Универсальный обмен данными в формате CommerceML через план обмена «Обмен с сайтом» с доработанными настройками или через обработку выгрузки, где формируется только пакет предложений.
- Собственная выгрузка на встроенном языке — запрос по номенклатуре с ценами и остатками, формирование XML через XDTO-пакет CommerceML или построчную запись. Такой вариант даёт полный контроль над составом полей предложения.
- Преобразование на стороне приёмника — выгружать типовой файл и на стороне сайта обрабатывать только блок предложений. Часто это проще, чем менять выгрузку.
Способы сформировать предложения
Подходит для 1С-Битрикс и совместимых CMS. Не требует доработок, но всегда выгружает каталог вместе с предложениями.
Подходит, когда приёмник принимает только offers или нестандартный набор полей. Требует разработчика и поддержки при обновлении конфигурации.
Подходит для разовых выгрузок и обмена файлами через каталог или FTP. Проще доработки конфигурации, легко отключить.
Подходит для маркетплейсов с собственным API. Предложения передаются в формате площадки, а не CommerceML.
Пример фрагмента предложения в XML
Предложение в файле обмена выглядит примерно так (сокращённо): идентификатор, наименование, цена с валютой и количество. Проверяя выгрузку, ищите именно эту структуру.
<Предложение>
<Ид>bd72d8fc-55b1-11e9-9f4d-00155d0a0a01</Ид>
<Наименование>Кабель ВВГ 3х2.5</Наименование>
<Цены>
<Цена>
<ИдТипаЦены>Розничная</ИдТипаЦены>
<ЦенаЗаЕдиницу>152.00</ЦенаЗаЕдиницу>
<Валюта>RUB</Валюта>
</Цена>
</Цены>
<Количество>340</Количество>
</Предложение>
Режимы выгрузки: полная и по изменениям
Полная выгрузка передаёт всю номенклатуру из отбора при каждом сеансе обмена. Она надёжна, но при большом каталоге (десятки тысяч позиций) создаёт тяжёлые файлы и долгую обработку на сайте. Изменения выгружаются через механизм регистрации в узле плана обмена: 1С фиксирует, какие позиции менялись (цена, остаток, реквизит), и выгружает только их.
Практическая рекомендация: настроить регулярную выгрузку изменений по расписанию и периодическую полную выгрузку (например, раз в сутки или в неделю) для самосинхронизации. Если на сайте появились «зависшие» позиции, которых нет в 1С, полная выгрузка с включённым режимом деактивации отсутствующих товаров на стороне сайта приведёт витрину в соответствие.
Частые ошибки и ограничения
Первая группа ошибок — организационные: цены устанавливаются после сеанса обмена, а не до него; новую номенклатуру заводят без заполнения свойства, по которому работает отбор; остатки приходуют на склад, не входящий в узел. Решение — регламент: сначала документы и цены, потом обмен.
Вторая группа — технические. Стабильность идентификаторов: если номенклатуру удалили и завели заново вместо переименования, GUID изменится, и на сайте появится дубль. Кодировка файла: CommerceML использует UTF-8, при ручной правке файла в редакторах с другой кодировкой ломаются русские наименования. Ограничения хостинга: большие файлы выгрузки режутся по таймауту — в настройках обмена есть параметр размера части файла и использования ZIP.
Контроль после настройки
После запуска обмена контролируйте три вещи: журнал сеансов обмена (в типовых конфигурациях ведётся история с ошибками), количество выгруженных позиций против количества по отчёту «Остатки и доступность» с тем же отбором, и точечную сверку — 5–10 позиций, где цена и остаток на сайте сравниваются с 1С. Расхождения почти всегда означают расхождение настроек (вид цен, склады, отбор), а не сбой механизма.
Что важно запомнить
Предложение — это цена, остаток и характеристика позиции в обмене с сайтом. Чтобы товар выгружался как предложение, заполните цену по виду цен узла, проверьте склады и отбор, включите обмен предложениями и контролируйте результат по файлу выгрузки. Для приёмников, принимающих только offers, потребуется доработанная выгрузка.
Частые вопросы
Почему на сайте товар есть, а цены нет?
Почти всегда причина в том, что цена не установлена по тому виду цен, который указан в узле обмена с сайтом. Откройте карточку номенклатуры, проверьте цены по всем видам и сравните с настройкой узла. После установки цены выполните выгрузку изменений — предложение появится в ближайшем сеансе обмена.
Можно ли выгружать предложения без блока товаров?
Типовой обмен с сайтом всегда формирует оба блока. Если приёмная система принимает только предложения, нужна доработка: собственная выгрузка через XDTO, внешняя обработка или преобразование файла на стороне приёмника. Часто проще настроить приёмник игнорировать каталог и читать только пакет предложений.
Как выгрузить предложения по характеристикам номенклатуры?
Если для вида номенклатуры включено использование характеристик, типовой обмен сам формирует отдельное предложение на каждую характеристику с идентификатором вида «GUID номенклатуры#GUID характеристики». Важно, чтобы цены устанавливались с учётом характеристик, если цены по ним различаются.
Что делать, если после обмена на сайте появились дубли товаров?
Дубли возникают при смене идентификатора: номенклатуру удалили и создали заново, либо базу 1С восстановили из копии с другими GUID. Удалите дубли на сайте, в 1С оставьте одну актуальную позицию и выполните полную выгрузку. Впредь исправляйте карточки вместо пересоздания.
Почему остаток в предложении нулевой, хотя товар есть на складе?
Остаток считается только по складам, перечисленным в настройках узла обмена. Проверьте, на каком складе лежит товар, и входит ли он в список. Также учтите, что часть модулей выгружает свободный остаток (минус резервы), а не физический.
Как часто нужно выгружать предложения?
Зависит от оборачиваемости: при активных продажах выгрузку изменений запускают каждые 15–60 минут, полную — раз в сутки. Слишком частая полная выгрузка большого каталога перегружает и 1С, и сайт, поэтому основной режим — именно выгрузка изменений через регистрацию в узле плана обмена.