Блог
Блог
Подпишитесь на еженедельные полезные статьи от агентства MWI:
Как выгрузить товары из 1С на сайт Битрикс без ошибок и дублей

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

Александр Апраксин

Зачем интернет-магазину выгрузка товаров из 1С на сайт Битрикс

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

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

Как устроен механизм обмена 1С и Битрикс

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

Инициатором обмена всегда выступает 1С: она обращается к сайту по адресу вида http://ваш-сайт.ru/bitrix/admin/1c_exchange.php и передаёт данные через последовательные HTTP-запросы. Такая архитектура выбрана не случайно — даже если сайт скомпрометируют, обратного пути к учётной системе не будет, потому что сайт физически не умеет обращаться к 1С.

Сам обмен проходит через несколько этапов:

  • авторизацию 1С на сайте;
  • загрузку файлов во временную папку (обычно /upload/1c_catalog/, которая очищается перед каждой сессией);
  • построчное чтение XML во временные таблицы;
  • и финальную обработку данных с записью в инфоблоки.

Информация структурирована по стандарту CommerceML2 и разложена по нескольким файлам: import.xml содержит сами товары, разделы, свойства и типы цен, offers.xml — торговые предложения, prices.xml — цены на эти предложения, rests.xml — остатки, а references.xml — справочную информацию. Если хотя бы в одном из этих файлов идентификатор товара или предложения не совпадёт с идентификатором в соседнем файле, вы получите товар без цены или предложение без остатка — и такие рассинхроны встречаются чаще, чем хотелось бы.

Что нужно подготовить перед выгрузкой товаров из 1С в Битрикс интернет-магазин

Во-первых, проверьте редакцию Битрикса: полноценная выгрузка каталога через торговый обмен доступна начиная с редакции «Малый бизнес», в «Старте» этой функциональности просто нет. Во-вторых, скачайте и установите на стороне 1С модуль обмена — для типовых конфигураций 1С:УТ, 1С:КА или 1С:ERP он обычно уже встроен, для сильно доработанных баз модуль может потребовать донастройки силами программиста 1С.

И в-третьих, создайте на сайте отдельного технического пользователя с правами на обмен — использовать для этого учётку администратора сайта нежелательно по соображениям безопасности и удобства аудита логов. Этот пользователь и будет тем «мостиком», через который 1С будет авторизовываться при каждой сессии обмена.

Настройка выгрузки на стороне сайта Битрикс

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

Первый шаг на сайте — включить видимость технических настроек, которые по умолчанию скрыты. В административной панели откройте «Настройки» → «Настройки продукта» → «Настройки модулей» → «Информационные блоки» и поставьте флаг «Показывать код загрузки из внешних источников». Без этого шага вы просто не увидите нужные поля для внешнего кода инфоблока чуть позже.

Дальше переходим в раздел «Магазин» → «Настройки» → «Интеграция с 1С» и указываем, в какой именно инфоблок должна попадать номенклатура. Здесь стоит сразу включить три полезные опции:

  • использовать настройки инфоблока для обработки изображений (чтобы не настраивать это дублирующе в двух местах);
  • транслитерировать символьный код из названия при создании элементов; и разделов (это избавит от ошибок вида «обязательное поле “символьный код” не заполнено»);
  • и — если номенклатура в 1С ведётся в разрезе характеристик — выгружать торговые предложения в отдельный инфоблок.
blockquote-icon

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

Настройка обмена в 1С: как выгрузить каталог с сайта Bitrix пошагово

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

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

После этого в «Узлах обмена с сайтами» создаётся новый узел с режимом «Выгрузка товаров», где в качестве адреса указывается тот самый скрипт 1c_exchange.php*. На закладке «Выгрузка товаров» находится идентификатор каталога — это значение стоит скопировать, потому что именно оно связывает конкретный каталог в 1С с конкретным инфоблоком на сайте. Если структура разделов на сайте должна отличаться от иерархии в 1С, здесь же, через кнопку «Настроить дерево групп», можно вручную привязать группы номенклатуры к нужным разделам сайта — это особенно полезно, когда витрина сайта логически устроена иначе, чем справочники в учётной системе.

1С Битрикс признак выгрузки на сайт: как работают XML_ID и внешние коды

Признак выгрузки на сайте в Битриксе — это, по сути, внешний код инфоблока, который должен совпадать с идентификатором каталога, скопированным на предыдущем шаге в 1С. Формируется он по такому шаблону: тип инфоблока (тот самый символьный код в квадратных скобках из настроек модуля «Интеграция с 1С») через дефис и идентификатор каталога, например, catalog-280af51d-ef93-11de-9de0-001c7e202cbc. Указывается это значение в поле «Внешний код» на карточке нужного инфоблока в разделе «Контент» → «Инфоблоки» → «Типы инфоблоков» → «Каталоги».

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

Как выгрузить из 1С в уже существующий каталог Битрикс, а не создать дубли

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

Решение — на закладке «Поля разделов» карточки инфоблока снять флаги обязательности и уникальности для символьного кода, а на закладке «Инфоблок» переключить формирование ЧПУ с SECTION_CODE на SECTION_ID. После этого ссылки на разделы будут строиться по числовому идентификатору, и конфликтов между одинаково названными категориями больше не возникнет — сайт просто получит адреса вида /catalog/81/ вместо /catalog/zima/.

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

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

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

Отдельная тонкость касается свойств типа «справочник» — например, цвета или материала. Если такое свойство выгружается как простой текст, карточка товара теряет возможность показывать красивую плитку с превью цвета краски или картинкой камня. Чтобы это работало корректно, свойство в 1С нужно связывать с HL-справочником* на сайте, а не с обычным текстовым полем — тогда при выгрузке подтянутся не только названия значений, но и их изображения.

Выгрузка заказов из Битрикс в 1С и обратно

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

Топ ошибок при выгрузке из 1С на сайт и как их избежать

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

Практика показывает, что абсолютное большинство сбоев сводится к нескольким повторяющимся причинам. Самая частая — это несовпадение идентификаторов между файлами обмена: если ID предложения в offers.xml не начинается с ID товара из import.xml, а ID в prices.xml и rests.xml не совпадают с ID предложения, товар выгрузится без цены и остатка, даже если формально обмен прошёл без ошибок. Вторая частая история — расхождение идентификаторов свойств и их значений между общим справочным файлом и файлами товаров: в результате нужные характеристики либо не появляются в карточке, либо появляются пустыми. Третья причина — несовпадение идентификатора типа цены из import.xml с типом цены, заведённым на сайте: в этом случае весь каталог выгрузится, а цены останутся нулевыми.

Отдельно стоит упомянуть ситуацию, когда после успешного на первый взгляд обмена товары внезапно деактивируются — как правило, это следствие настроенного в 1С отбора «остаток больше 0», который автоматически скрывает позиции без остатка на складе. Это не ошибка, а штатное поведение, но о нём стоит помнить, чтобы не тратить время на поиск несуществующей проблемы.

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

Цена и сроки сильно зависят от исходных данных. Если 1С близка к типовой конфигурации, а каталог сайта укладывается в 10 000 позиций, базовая настройка выгрузки с нуля обычно занимает от нескольких дней до недели и стоит в районе 40–50 тысяч рублей — именно такой порядок цифр фигурирует у большинства интеграторов на рынке. Ситуация меняется, если структура каталога в 1С принципиально отличается от структуры на сайте, если нужна первоначальная выгрузка данных не из 1С на сайт, а наоборот — с сайта в 1С, или если требуются доработки нетиповых полей и отчётов. В таких случаях смета формируется индивидуально, и разумно заранее обсудить с подрядчиком объём работ, а не ориентироваться на усреднённые цифры из чужих кейсов.

Мнение эксперта

— Александр Апраксин, совладелец и генеральный директор digital-агентства MWI (входит в ТОП-10 Рейтинга Рунета). Автор книги «50 способов увеличения продаж интернет-магазина». Ведущий подкаста «Маркетологи», автор Telegram-канала Апраксин Pro Бизнес. Практик с 15+ годами опыта в digital и eCommerce. Сайт компании: mwi.me.

Главная ошибка, которую я вижу из проекта в проект — это попытка настроить обмен как чисто техническую задачу, без синхронизации между 1С-программистом и веб-разработчиком. Штатный модуль действительно работает быстро, но стоит 1С хоть немного отойти от типовой конфигурации — а таких баз, по моим наблюдениям, большинство, — как обмен начинает требовать ручной донастройки. Я всегда рекомендую перед первым запуском выгрузки свести на одном экране структуру номенклатуры в 1С и структуру инфоблоков на сайте: пять минут сверки идентификаторов на старте экономят потом часы отладки уже после того, как каталог «поехал» и начал показывать не то, что нужно.

FAQ: ответы на частые вопросы

Можно ли выгрузить товары из 1С на сайт Битрикс без модуля обмена?
Технически да, через собственный API-интегратор или сторонние коннекторы, но это отдельная разработка со своей логикой валидации данных. Штатный модуль обмена CommerceML2 в большинстве случаев быстрее и надёжнее, если 1С не сильно доработана.

Как часто должна происходить выгрузка каталога — раз в час или в реальном времени?
Всё зависит от бизнес-процессов: для интернет-магазинов с активными остатками разумный интервал — от 15 минут до часа для цен и остатков, а полную выгрузку каталога с новыми товарами достаточно запускать 1–2 раза в сутки, чтобы не перегружать сервер.

Что делать, если после выгрузки товары не появились на сайте?
Первым делом проверить логи обмена в административной панели сайта, затем сверить, совпадает ли внешний код инфоблока с идентификатором каталога в 1С, и убедиться, что признак выгрузки проставлен корректно.

Можно ли выгружать из нескольких баз 1С в один каталог на сайте?
Да, для этого создаётся несколько узлов обмена с разными идентификаторами, но важно заранее продумать, как избежать конфликтов ID между разными базами — иначе один товар может «перезаписать» другой.

Как выгрузить только остатки и цены без полной перезагрузки каталога?
В настройках узла обмена в 1С есть отдельный режим выгрузки «Остатки и цены» — он работает быстрее полного обмена номенклатурой и не трогает уже загруженные разделы и свойства товаров.

Заключение

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

Уже пытались настроить выгрузку из 1С на сайт Битрикс, но каталог всё равно живёт своей жизнью — с пропавшими ценами, дублями разделов или товарами без картинок?

Оставьте заявку — разберём вашу текущую настройку обмена и покажем, что можно исправить без пересборки каталога с нуля.

Термины и сноски

* XML_ID (внешний код) — уникальный идентификатор, по которому сайт и 1С «узнают» один и тот же объект между собой при каждом обмене.
* CommerceML2 — стандарт формата XML-файлов, по которому 1С и Битрикс обмениваются информацией о товарах, ценах и заказах.
* HL-справочник — highload-блок в Битриксе, используемый для хранения значений свойств товара с возможностью прикрепления изображений.
* 1c_exchange.php — скрипт на сайте, к которому обращается 1С для выполнения всех этапов обмена данными.

Да, evibi.ru —
классный сайт
Мы подошли к его проектированию и
разработке особенно тщательно.
Давайте расскажу и пришлю вам
расчет на подобный проект?
Расскажи
img