1С Битрикс · 8 мин чтения

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

Выгрузка товара из 1С на сайт нужна, когда каталог, цены и остатки в интернет-магазине должны обновляться сами, без ручной догрузки Excel-файла каждую неделю. Технически задача решается по протоколу CommerceML: он встроен в 1С-Битрикс, в Tilda и в большинство конфигураций 1С, включая Управление торговлей, Розницу и Комплексную автоматизацию. Дальше разбираю, как устроен обмен, что готовить в 1С и на сайте, где он чаще всего ломается и из чего складывается цена настройки под нестандартную платформу.

Что такое CommerceML и как устроен обмен

CommerceML это XML-формат обмена торговыми данными, который 1С и Битрикс разрабатывали совместно ещё для десктопных версий каталогов, а сейчас он же используется для обмена с сайтами. Данные идут в двух направлениях: каталог, цены и остатки едут из 1С на сайт, а заказы, оформленные покупателями, возвращаются обратно в 1С.

Технически есть два режима обмена. Файловый - 1С выгружает XML-файлы в сетевую папку или на FTP, сайт периодически их забирает и разбирает. Он проще в диагностике, потому что файлы можно открыть глазами и посмотреть, что в них лежит. HTTP-обмен - 1С сама стучится на URL сайта и гоняет данные через POST-запросы без участия человека, это тот вариант, который обычно имеют в виду под «настроил и забыл».

В HTTP-режиме обмен идёт через несколько этапов, у каждого свой параметр mode в запросе: checkauth проверяет логин и пароль технического пользователя и в ответ отдаёт текстовую строку вида success, PHPSESSID и значение сессии, init сообщает 1С параметры приёма (нужен ли zip, какой лимит на размер файла), file принимает сами файлы каталога частями, import запускает разбор файла на стороне сайта, query отдаёт 1С список заказов для встречной выгрузки. Если сайт на любом из этапов ответит не той строкой, которую ждёт 1С, обмен просто остановится с ошибкой в протоколе.

Файлы каталога называются по шаблону import*.xml (структура каталога, карточки товаров, свойства) и offers*.xml (цены и остатки отдельно от карточек, потому что обновляются чаще). Если каталог большой, 1С режет файл на части и присылает их по очереди с растущим номером, это нормальное поведение, а не ошибка выгрузки.

Что подготовить в 1С перед выгрузкой каталога

В типовых конфигурациях (УТ 11, Розница, Комплексная автоматизация) обмен настраивается в разделе НСИ и администрирование, подразделе Синхронизация данных, дальше пункт обмена с сайтом или подключения торговых площадок и приложений в зависимости от релиза. Там указывается адрес обмена на сайте, логин и пароль.

Из практики, что реально нужно подготовить до первого запуска:

  • Отдельного технического пользователя для обмена, а не логин администратора сайта - если пароль утечёт или обмен зациклится, последствия ограничены
  • Сегмент номенклатуры для выгрузки - обычно не вся база, а конкретная группа или отбор по реквизиту, иначе на сайт улетит и то, что не продаётся через сайт
  • Тип цен, который пойдёт в offers.xml - в 1С часто несколько типов цен (розница, опт, для сайта), и если выбрать не тот, на сайте всплывут закупочные цены
  • Склад или несколько складов для расчёта остатков - если складов несколько, нужно решить, суммировать их или выгружать по одному
  • Заполненные артикулы, единицы измерения и привязку к группам у всех товаров, которые попадут в выгрузку - пустые поля на стороне 1С превращаются в пустые карточки на сайте

Отдельно стоит регламентное задание на автозапуск обмена по расписанию. Без него кто-то должен вручную нажимать кнопку «выгрузить» в 1С, и рано или поздно об этом забудут.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Как принимает данные сайт

1С-Битрикс

У 1С-Битрикс обмен встроен в модуль каталога и настраивается через административную панель без написания кода: указывается адрес обмена вида /bitrix/admin/1c_exchange.php, создаётся пользователь для обмена. Но модуль каталога есть не во всех редакциях. По ценам на 03.09.2026:

Редакция Цена Модуль каталога и обмен с 1С
Старт 7 100 ₽ нет, сайт-визитка без каталога
Стандарт 20 500 ₽ есть
Малый бизнес 47 000 ₽ есть, плюс расширенные торговые функции
Бизнес 96 500 ₽ есть, плюс расширенные торговые функции

При выборе редакции под интеграцию с 1С смотреть нужно именно на наличие каталога, а не на цену саму по себе.

Tilda

В Tilda обмен по CommerceML встроен в интерфейс: в настройках интернет-магазина указывается URL и токен доступа, дальше синхронизация товаров, цен, остатков и заказов идёт из личного кабинета без правки кода. Это штатная функция, а не то, что нужно дорабатывать с нуля. Доработка нужна, когда у клиента нестандартная структура каталога в 1С, например свои дополнительные свойства товара, которые надо смаппить на конкретные поля Tilda, или несколько типов цен для разных категорий покупателей. Такие вещи я закрываю через кастомные доработки для Tilda, штатный обмен их не покрывает.

WooCommerce и самописные сайты

У WooCommerce нет встроенного приёмника CommerceML, потому что это плагин WordPress, а не связка 1С-Битрикс. Нужен либо сторонний плагин синхронизации, либо собственный обработчик, который отвечает на запросы checkauth, init, file, import так, как их ждёт 1С, и пишет товары через штатный REST API WooCommerce или напрямую в базу. То же самое касается любого самописного сайта на своём движке, придётся писать приёмный скрипт с нуля под протокол, готового модуля из коробки не будет.

Порядок настройки обмена: пошагово

  1. Определить, какая конфигурация 1С используется и какой у неё штатный механизм обмена с сайтом - у разных релизов пункт меню называется по-разному
  2. На сайте создать технического пользователя для обмена и получить или сгенерировать адрес обмена
  3. В 1С указать адрес, логин, пароль, сегмент номенклатуры для выгрузки и тип цен
  4. Запустить тестовую выгрузку на небольшой группе товаров, штук 10-20, а не сразу на весь каталог - так проще поймать ошибку до того, как она размножится на тысячи позиций
  5. Проверить на сайте, что карточки появились в нужных разделах, остатки совпадают с 1С, картинки подгрузились
  6. Настроить регламентное задание на автоматический запуск по расписанию
  7. Если нужен встречный обмен заказами, отдельно включить и проверить его - это не включается автоматически вместе с выгрузкой каталога

Где обмен ломается на практике

Кодировка - часть старых конфигураций 1С по умолчанию отдаёт Windows-1251, а сайт ждёт UTF‑8, на выходе кракозябры в названиях товаров.

Лимиты сервера - upload_max_filesize и post_max_size в PHP часто выставлены на дефолтные небольшие значения, а каталог на несколько тысяч позиций с картинками в них не влезает. 1С в этом случае режет файл на части, но если part-файлы всё равно превышают лимит, обмен виснет посередине.

Таймауты - большой каталог с картинками разбирается на сервере не мгновенно, а max_execution_time по умолчанию может быть выставлен на небольшое значение, из-за чего import обрывается на середине разбора.

Расхождение структуры каталога - если группы товаров в 1С и разделы на сайте не смаппены один в один, часть товаров либо не попадает никуда, либо создаёт дублирующие разделы.

Дубли по GUID - если номенклатуру в 1С пересоздали или объединили задвоенные карточки, у товара меняется внутренний идентификатор, и на сайте вместо обновления старой карточки появляется новая.

Авторизация - неверный логин, пароль или права у технического пользователя дают ошибку доступа на этапе checkauth, обмен не стартует вообще, и в логах 1С это выглядит как обрыв соединения, а не как понятная ошибка доступа.

На одном проекте на Tilda у клиента остатки считались по трём разным складам в 1С, а в Tilda предусмотрен один суммарный остаток на товар. Пришлось на стороне 1С собирать отдельный регистр с суммой по складам специально под выгрузку, иначе на сайте либо продавали то, чего физически нет ни на одном складе, либо товар показывался как отсутствующий при наличии на одном из трёх.

Из чего складывается цена и срок работы

Штатный обмен на Битриксе с готовым каталогом и Tilda с уже подключённым магазином - это настройка, а не разработка: свести логины, сегменты, типы цен и проверить первую выгрузку можно за несколько часов, если структура каталога в 1С уже приведена в порядок.

Дальше цена растёт от того, что добавляется сверху:

  • Нестандартные свойства товара в 1С, которые нужно смаппить на конкретные поля сайта
  • Несколько складов или типов цен, которые нужно свести в одно значение перед выгрузкой
  • Обратный обмен заказами - отдельная логика, не включается вместе с каталогом
  • Приём CommerceML на платформе без встроенного модуля (WooCommerce, самописный сайт) - здесь это уже написание приёмного скрипта, а не настройка готового
  • Объём каталога - на тысячах SKU вылезают тайминги и лимиты, которые не проявляются на тестовых 20 позициях

Если каталога и магазина ещё нет и их нужно строить с нуля вместе с приёмом обмена, это укладывается в интернет-магазин под ключ, у меня такие проекты начинаются от 80 000 ₽. Если магазин уже есть и речь только про настройку или разбор существующего обмена, начинаю с консультации от 3 000 ₽, чтобы понять объём работ до того, как называть сумму. Для сайтов, где обмен уже настроен, но регулярно отваливается или требует присмотра, беру на техподдержку от 15 000 ₽ в месяц, туда входит мониторинг логов обмена и починка при сбоях.

1С регулярно обновляется, поэтому перед внедрением я сверяюсь с актуальной документацией.

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

Можно ли выгрузить товары из 1С на сайт без Битрикса и Tilda

Можно, но потребуется собственный приёмник, который умеет отвечать на запросы 1С по протоколу CommerceML (checkauth, init, file, import) и записывать данные в базу или каталог используемой CMS. Готового модуля из коробки для произвольного движка нет, это разработка под конкретный сайт.

Как часто должен обновляться обмен и не тормозит ли он сайт

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

Нужно ли сразу настраивать обратный обмен заказами

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

Почему после обмена товары дублируются или пропадают

Чаще всего это расхождение GUID между 1С и сайтом - если номенклатуру в 1С пересоздали, объединили или почистили дубли, товар на сайте воспринимается как новый вместо обновления старой карточки. Вторая частая причина - несовпадение структуры групп каталога, из-за которого часть товаров не попадает ни в один раздел на сайте.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно