БесплатноБазовая интеграция с 1С в подарок при заказе интернет-магазина под ключ

Интеграция 1С:ERP с интернет-магазином на 1С-Битрикс: обмен и сложные сценарии

Обмен между 1С:ERP и интернет-магазином на 1С-Битрикс: каталог, цены, остатки по складам и заказы

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

Ниже — практический разбор обмена 1С:ERP с сайтом на Битриксе: от протокола CommerceML 2 и настройки узлов до многоскладских остатков, резервов, B2B-цен и обработки ошибок. Это выжимка из наших внедрений по интеграции сайтов с 1С — без общих слов, с конкретикой по тому, что реально ломается и как это чинить.

Коротко

  • Протокол тот же, что у УТ — CommerceML 2, но данных больше: организации, склады, типы цен и регистры ERP.
  • Каталог, характеристики и цены выгружаются из ERP; остатки идут в разбивке по складам, а заказы возвращаются встречным шагом.
  • Разделяйте полный и частичный обмен: полный — ночью и редко, изменения цен/остатков — часто и маленькими пакетами.
  • Сопоставляйте всё по GUID, а не по названию, иначе повторный обмен плодит дубли товаров и заказов.
  • Тяжёлые операции сайта выносите в очереди и агенты, чтобы обмен был идемпотентным и предсказуемым.

1С:ERP против УТ и УНФ: в чём разница для обмена

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

Управление торговлей (УТ) и Управление нашей фирмой (УНФ) — это торговые конфигурации с относительно простой моделью: как правило, одна-две организации, понятный набор складов, типовая выгрузка на сайт «из коробки». Обмен настраивается мастером за полчаса, и на выходе получается рабочая связка каталог-остатки-заказы.

1С:ERP Управление предприятием — это система уровня всего предприятия. В ней одновременно живут производство, закупки, склад, финансы, продажи. Из этого вытекают особенности обмена, к которым нужно быть готовым:

Практический вывод: при интеграции ERP основная работа и основные риски — не на сайте, а в грамотной настройке того, что именно ERP отдаёт наружу. Если это спроектировано правильно, сторона Битрикса собирается почти так же, как для обычной УТ. Базовый сценарий обмена «сайт — 1С» мы подробно разобрали в отдельном материале про интеграцию магазина с 1С; здесь же сосредоточимся на том, что добавляет именно ERP.

Важно: прежде чем настраивать обмен, зафиксируйте на бумаге ответы на три вопроса: от какой организации торгует сайт, остатки каких складов показываем и какие виды цен выгружаем. Без этих трёх решений любая техническая настройка обмена будет переделываться.
УТ / УНФ 1С:ERP 1 организация 1–2 склада Розничная + оптовая цена Остаток «на складе» N организаций Десятки складов, помещения Виды цен, соглашения, скидки Свободный / резерв / ожидается Регистры и регламентные задания
Схема: протокол обмена один, но модель данных ERP заметно богаче — и именно её нужно спроектировать под витрину.

Протокол CommerceML 2: что передаётся по проводам

В основе обмена лежит стандарт CommerceML 2 (Commerce Markup Language) — это набор XML-файлов, которыми обмениваются 1С и сайт. Стандарт открытый, и именно его понимает штатный модуль Битрикса «Обмен с 1С». Понимать структуру полезно даже если вы не пишете обмен руками: она подсказывает, где искать проблему, когда что-то не долетает до сайта.

Обмен CommerceML логически делится на несколько потоков файлов:

Технически обмен идёт по протоколу HTTP в несколько шагов: авторизация, инициализация (сайт сообщает лимит размера файла и включён ли zip), затем передача файлов частями (file), команда импорта (import) и, для заказов, встречная выгрузка (query/success). Каждый шаг — отдельный HTTP-запрос к специальной точке обмена на сайте. Если обмен «застревает», почти всегда виноват один из этих шагов: не прошла авторизация, файл больше разрешённого лимита, таймаут на шаге import.

Файл / потокЧто несётНаправление
import.xml (каталог)Группы, свойства, номенклатура, картинки, единицы1С → сайт
offers.xml (предложения)Цены по видам цен, остатки по складам1С → сайт
orders.xml (заказы, выгрузка)Новые заказы с сайта: состав, покупатель, суммысайт → 1С
orders.xml (заказы, загрузка)Статусы, оплаты, отгрузки, номер в 1С1С → сайт
Важно: в CommerceML 2 остатки и цены живут в файле предложений отдельно от описания товара. Поэтому «цена не обновилась», но «товар есть» — это разные проблемы: смотреть нужно не общую выгрузку каталога, а именно шаг предложений.

Узлы и планы обмена: как связать ERP и сайт

В 1С:ERP обмен с сайтом описывается через узел обмена (иногда говорят «настройка обмена с сайтом» или «план обмена»). Узел — это, по сути, паспорт соединения: с каким сайтом дружим, по какому адресу, под каким логином, что и как выгружаем. Правильно заведённый узел — половина успеха.

В настройке узла на стороне ERP задаются ключевые параметры:

На стороне Битрикса связка описывается в модуле «Торговый каталог» — там создаётся профиль обмена, привязанный к инфоблоку каталога. Критично, чтобы реквизиты совпадали с двух сторон: адрес узла, логин и пароль, идентификатор инфоблока/каталога. Самая частая причина «обмен не идёт» на старте — рассинхрон именно здесь: сменили пароль на сайте, а в узле ERP оставили старый.

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

Выгрузка каталога, характеристик и упаковок

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

Группы и свойства. Дерево групп из ERP становится структурой разделов инфоблока, а свойства номенклатуры — свойствами инфоблока. Здесь важно, чтобы свойства, по которым потом строится фильтр, приходили как значения из справочника (списки), а не произвольным текстом. Если в ERP характеристики ведутся хаотично, на сайте это выльется в раздутый фасетный индекс и медленный фильтр.

Характеристики и торговые предложения. В ERP у номенклатуры бывают характеристики (цвет, размер) — они на сайте превращаются в торговые предложения (SKU) дочернего инфоблока. Обмен связывает родительский товар и его предложения по внешнему коду. Ключевой момент: решите заранее, что именно является предложением, а что — отдельным товаром, и держите эту логику единой с двух сторон.

Единицы измерения и упаковки. ERP умеет вести номенклатуру в разных единицах и упаковках (штука, коробка, паллета) с коэффициентами пересчёта. В CommerceML это передаётся как базовая единица и, при необходимости, набор упаковок. На сайте это важно для B2B: оптовик часто заказывает коробками, а цена и остаток считаются в штуках. Если упаковки не выгружены, витрина покажет только штучную продажу, и кратность заказа придётся дорабатывать вручную.

Совет: заранее договоритесь о «владельце поля». Каждое поле товара (название, описание, картинки, цена, метатеги) должно иметь одну систему-источник. Иначе обмен и редакторы сайта будут бесконечно перетирать правки друг друга.

Цены по типам и остатки по нескольким складам

Здесь начинается то, ради чего ERP и внедряют. Цены и остатки передаются в файле предложений, и в ERP их структура заметно сложнее, чем в УТ.

Цены по типам. В ERP каждый вид цены (розничная, оптовая, дилерская, РРЦ) — это отдельный источник. В настройке обмена выбирается, какие виды цен выгружать, и каждый из них на сайте превращается в свой тип цены торгового каталога. Дальше типы цен привязываются к группам пользователей: незалогиненный посетитель и розничный покупатель видят розничную цену, а авторизованный дилер — дилерскую. Так одна выгрузка обслуживает и B2C, и B2B витрину одновременно.

Остатки по складам. Если в узле обмена включён режим выгрузки по складам, в предложениях каждый товар приходит с разбивкой количества по складам. На сайте эти склады должны быть заранее заведены в модуле «Торговый каталог» и сопоставлены складам ERP по коду. Тогда витрина может:

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

Что выгружаемКак в ERPКак на сайте (Битрикс)
Розничная ценаВид цены «Розничная»Тип цены → группа «Все пользователи»
Оптовая / дилерская ценаВид цены «Оптовая», «Дилерская»Тип цены → группа «Дилеры»
Остаток по складуСвободный остаток регистра по складуСклад каталога, сопоставлен по коду
Суммарное наличиеСумма по выбранным складамСвойство «В наличии», флаг для фильтра
Кратность / упаковкаУпаковка с коэффициентомЕдиница измерения торгового предложения
1С:ERP Цена: розничная Цена: дилерская Склад: Москва — 30 Склад: Казань — 12 Склад: СПб — 0 offers.xml 1С-Битрикс Розничная → группа «Все» Дилерская → группа «Дилеры» Наличие суммарно: 42 шт По складам: Москва ✓, Казань ✓, СПб — Фильтр «В наличии» = да
Схема: виды цен ERP превращаются в типы цен под группы пользователей, а остатки по складам — в наличие по точкам и суммарный флаг для фильтра.

Загрузка заказов и возврат статусов в ERP

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

Что уходит с сайта в ERP при выгрузке заказа:

Что возвращается из ERP на сайт:

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

Важно: определите одну систему-владельца статуса заказа после оформления. Как правило, это 1С:ERP. Сайт тогда работает в режиме «только отображение статуса», и конфликтов не возникает.

Резервирование и оперативные остатки

Резервирование — тонкое место любого обмена с ERP, потому что «остаток» здесь не одно число, а несколько разных показателей. ERP различает как минимум: физический остаток на складе, свободный остаток (за вычетом резервов), товар в резерве под заказы и ожидаемые поступления. Вопрос интеграции — какой из них показывать на сайте и когда резервировать товар под заказ с сайта.

Есть два принципиальных подхода к резерву:

Для витрины важно выгружать именно свободный (доступный к продаже) остаток, а не физический. Иначе покупатель увидит «в наличии 5», хотя все 5 уже в резерве под чужие заказы, и оформит то, чего фактически нет. Это классический источник конфликтов «продали, а отгрузить нечем».

Отдельно стоит вопрос частоты. Оперативные остатки в ERP меняются постоянно — при каждой продаже, отгрузке, поступлении. Гонять полный обмен ради остатков нельзя, поэтому остатки выносят в частый частичный обмен (каждые 10–30 минут), передавая только изменившиеся позиции. Чем «горячее» товарные категории и выше оборот, тем чаще нужен обмен остатками — вплоть до почти реального времени через дополнительный REST-канал поверх штатного CommerceML.

Что считать наличием на витрине Физический остаток: 50 В резерве: 8 Свободно: 42 → на сайт Ожидается: 100 → «под заказ» Правило витрины: показываем «свободно», а не «физически» — иначе продадим то, что в резерве
Схема: на витрину уходит свободный остаток, ожидаемые поступления показываются как «под заказ», а физический остаток остаётся внутренней величиной ERP.

Частичный и полный обмен, расписание, производительность

На большом каталоге вопрос производительности обмена становится вопросом работоспособности сайта в принципе. Секрет — в правильном разделении полного и частичного обмена.

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

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

Что настраивают для производительности больших выгрузок:

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

ПотокТип обменаЧастотаВремя
Каталог, характеристикиПолныйРаз в суткиНочь
КартинкиПолный / по изменениюРаз в суткиНочь
ЦеныЧастичный1–4 раза в часКруглосуточно
Остатки по складамЧастичныйКаждые 10–30 минКруглосуточно
Заказы (в обе стороны)ЧастичныйКаждые 2–5 минКруглосуточно

Сопоставление номенклатуры: GUID против названий

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

Почему это критично: GUID не меняется, когда меняется название или артикул. Если сопоставлять по имени или артикулу, то стоит поменять в ERP название «Смартфон XYZ» на «Смартфон XYZ (2024)» — и обмен создаст на сайте новый товар вместо обновления старого. Каталог обрастает дублями, ссылки бьются, SEO рушится. С GUID такого не случается: как бы ни менялись реквизиты, сайт узнаёт товар и обновляет существующую запись.

Практические правила сопоставления:

Отдельная боль — первичная стыковка, когда каталог на сайте уже есть, а обмен только настраивают. Тут нужно аккуратно проставить GUID существующим товарам (по артикулу, а лучше вручную выверенным сопоставлением), иначе первый же полный обмен продублирует весь каталог. Эту операцию всегда делают на копии базы и с бэкапом.

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

Ошибки обмена, идемпотентность и очереди

Обмен по HTTP по своей природе ненадёжен: сеть моргнула, сервер ушёл в перезагрузку, шаг упал по таймауту. Хорошо спроектированный обмен переживает такие сбои без потерь и дублей. Ключевое свойство здесь — идемпотентность: повторное выполнение той же операции даёт тот же результат, а не второй экземпляр.

Что делает обмен идемпотентным:

Для устойчивости к нагрузке и всплескам обмен подпирают очередями. Заказ, пришедший с сайта, не обязательно обрабатывать синхронно в момент HTTP-запроса: его можно положить в очередь и разобрать агентом. Так пик заказов в чёрную пятницу не роняет обмен, а обрабатывается ровным потоком. То же с исходящими событиями: изменение статуса, уведомление клиента, обновление кэша — всё это уходит в очередь, а не выполняется прямо в шаге.

Обработка ошибок должна быть явной, а не «упало и молчим»:

Заказ с сайта Очередь буфер Обработчик приём в ERP Принят в ERP GUID сохранён Карантин + алерт повтор при временной ошибке
Схема: заказ проходит через очередь, при временной ошибке повторяется, а невалидный уходит в карантин с оповещением — поток не встаёт.

B2B-сценарии: цены под контрагента

B2B-витрина — частая причина, по которой вообще заходят на ERP. Оптовику мало «розничной цены»: у него своё соглашение, своя скидка, свои условия. Здесь штатный CommerceML достигает предела: он передаёт цены по типам, а не по каждому клиенту, и этого хватает для «дилерской» или «оптовой» цены, но не для персональной.

Уровни персонализации цен и как их закрывать:

Типовая архитектура B2B-магазина на ERP: базовые цены и остатки идут штатным CommerceML (быстро, надёжно, кэшируется), а «поверх» для авторизованного контрагента личный кабинет запрашивает у ERP персональные цены, доступные склады, дебиторку и историю заказов через REST. Так витрина остаётся быстрой для всех, а B2B-клиент видит именно свои условия. Про построение таких кабинетов и порталов — раздел B2B-порталы.

Совет: не пытайтесь запихнуть персональные цены каждого клиента в штатный обмен CommerceML — он на это не рассчитан и обмен станет неподъёмным. Типовые цены — через CommerceML, персональные — через REST в личном кабинете.

Мониторинг и логирование обмена

Обмен, за которым никто не следит, однажды молча встаёт — и вы узнаёте об этом, когда клиенты жалуются на неверные остатки или пропавшие заказы. Поэтому мониторинг закладывают сразу, а не «когда сломается».

Что нужно видеть по обмену:

Штатный лог обмена Битрикса (exchange.log и журнал в админке) фиксирует ход выгрузки и приёма. Со стороны ERP есть журнал регистрации, куда падают ошибки регламентных заданий обмена. Для промышленной эксплуатации этого мало: логи разнесены по двум системам, их неудобно сопоставлять. Поэтому поверх ставят единую панель — сводку по потокам обмена с алертами в мессенджер, когда обмен встал или карантин растёт. Это превращает обмен из «чёрного ящика» в управляемый процесс.

Что мониторимНормаТревога
Возраст последнего обмена остатками< 30 мин> 1 часа
Возраст выгрузки заказов< 5 мин> 20 мин
Размер очереди заказовЕдиницыДесятки и растёт
Объекты в карантине0> 0, разбираем
Доля упавших шаговОколо 0%Регулярные падения

Реализация в 1С-Битрикс: модуль и настройки

На стороне сайта весь обмен обслуживает модуль «1С-Битрикс: Обмен с 1С» в связке с модулем «Торговый каталог». Точка входа обмена — файл /bitrix/admin/1c_exchange.php, к которому обращается ERP. Настройки профиля обмена живут в разделе «Магазин → Настройки → Настройки обмена с 1С» (в зависимости от редакции — «Контент → Инфоблоки → Обмен с 1С»).

Ключевые вещи, которые задают на стороне Битрикса:

Схематично экран настройки профиля обмена выглядит так:

Настройки обмена с 1С — профиль «ERP-основной» Инфоблок каталога Каталог (товары + SKU) Обмен заказами Двусторонний (выгрузка + загрузка статусов) Типы цен Розн. ↔ Розничная Дилер ↔ Дилерская Склады Москва ✓ Казань ✓ СПб ✓ Пользователь обмена: exchange1c · права: только обмен Проверить соединение
Схема: профиль обмена связывает инфоблок каталога, двусторонний обмен заказами и сопоставления типов цен и складов. Подписи зависят от редакции и версии платформы.

Отдельный практический момент — окружение. Обмен большого каталога упирается в лимиты PHP (память, время выполнения) и настройки веб-сервера. На боевом внедрении заранее поднимают memory_limit и max_execution_time для точки обмена, включают zip, а тяжёлую постобработку уводят в фоновые агенты. Без этого первый же полный обмен большого каталога упрётся в таймаут на середине.

Частые ошибки

Мини-FAQ. Нужно ли останавливать сайт на время полного обмена? Нет, полный обмен идёт в фоне и не требует остановки. Но планировать его стоит на часы низкой нагрузки, а тяжёлую постобработку — выносить в агенты, чтобы посетители не чувствовали просадки.

Чек-лист внедрения

Сведём всё в практический список, по которому удобно принимать готовность обмена ERP с сайтом перед запуском:

  1. Модель зафиксирована. Определены организация продаж, список выгружаемых складов и набор видов цен для витрины и B2B.
  2. Узел и профиль настроены. Реквизиты соединения совпадают с двух сторон: адрес, логин, пароль, инфоблок.
  3. Сопоставления по GUID. Товары, группы, свойства, склады и типы цен связаны по стабильным кодам, дублей нет.
  4. Каталог и предложения выгружены. Характеристики стали SKU, упаковки и единицы измерения переданы, картинки идут отдельным шагом.
  5. Цены и остатки корректны. Типы цен привязаны к группам, на витрину идёт свободный остаток по складам, а не физический.
  6. Заказы ходят в обе стороны. Выгрузка в ERP работает, статусы возвращаются, определён единственный владелец статуса.
  7. Обмен разнесён по расписанию. Полный — ночью, цены и остатки — часто и малыми пакетами, заказы — почти в реальном времени.
  8. Надёжность заложена. Обмен идемпотентен, есть очередь, повторы и карантин для битых объектов.
  9. Постобработка вынесена. Переиндексация фасета и пересчёт скидок работают в агентах, а не в шаге обмена.
  10. Мониторинг включён. Есть сводка по потокам обмена и алерты, когда обмен встал или растёт карантин.

Вывод

Интеграция 1С:ERP с интернет-магазином на 1С-Битрикс — это не «настроить галочку обмена», а спроектировать, что именно предприятие показывает витрине: от какой организации торгуем, остатки каких складов и какие типы цен отдаём, как возвращаем статусы заказов. Протокол CommerceML 2 и штатный модуль обмена дают надёжную основу, а сложность ERP закрывается правильной моделью данных, сопоставлением по GUID, разделением полного и частичного обмена и вынесением тяжёлых операций в очереди и агенты. Сделайте эти вещи аккуратно — и обмен перестанет быть источником дублей, рассинхрона и продаж того, чего нет на складе, даже на большом B2B-каталоге.

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

Чем обмен 1С:ERP с сайтом отличается от обмена с УТ или УНФ?

Протокол один и тот же — CommerceML 2, и на стороне сайта модуль «1С-Битрикс: обмен с 1С» настраивается практически одинаково. Отличия в самой ERP: сложнее модель данных (несколько организаций, складов и типов цен), выгрузка идёт из подсистемы «Интеграция с сайтами» или через типовые правила обмена, а оперативные остатки и резервы считаются по регистрам ERP. Поэтому основная работа при интеграции с ERP — не на сайте, а в грамотной настройке того, какие организации, склады и цены выгружать.

Как выгружать остатки по нескольким складам из 1С:ERP на сайт?

В 1С:ERP в настройке обмена указывается список складов, остатки по которым передаются на сайт. В CommerceML остатки уходят в разбивке по складам (элемент «Склад» с количеством), а на стороне Битрикса эти склады должны быть заранее заведены в модуле «Торговый каталог» и сопоставлены. Тогда сайт может показывать наличие как суммарно, так и по конкретным точкам. Подробно многоскладской сценарий мы разбираем в отдельной статье про обмен остатками.

Как передать на сайт разные цены для розницы и для B2B-контрагентов?

В 1С:ERP заводится несколько видов цен (например, «Розничная», «Оптовая», «Дилерская»), и в настройке обмена выбираются те, что нужно выгрузить. На сайте эти типы цен создаются в торговом каталоге и привязываются к группам пользователей: розница видит розничную цену, авторизованный дилер — свою. Для персональных цен под конкретного контрагента обычно используют личный кабинет и REST-обмен поверх штатного CommerceML, потому что базовый протокол передаёт цены по типам, а не по каждому клиенту.

Почему заказы с сайта не попадают обратно в 1С:ERP?

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

Как ускорить обмен, если каталог очень большой?

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

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

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

Поделиться:

Нужен надёжный обмен 1С:ERP с сайтом?

Настроим обмен каталогом, ценами по типам и остатками по складам, наладим двусторонний обмен заказами, персональные B2B-цены и мониторинг. Рассчитаем стоимость по вашей конфигурации ERP и каталогу.

Услуга «Интеграция с 1С»

Игорь Воскресенский

Основатель студии B2Bsite. С 2014 года команда разрабатывает и поддерживает интернет-магазины и корпоративные сайты на 1С-Битрикс, настраивает обмен с 1С (УТ, УНФ, ERP), многоскладские остатки и B2B-витрины для среднего и крупного бизнеса.

← Все статьи блога