Каталог в одной системе, заказы — в другой, остатки менеджер сверяет вручную и всё равно продаёт то, чего нет на складе. Знакомо? Пока товаров немного, с этим можно жить, но с ростом ассортимента ручная сверка превращается в источник ошибок и потерянных денег. Решение — обмен интернет-магазина на 1С-Битрикс с 1С: товары, цены и остатки приходят на сайт из учётной системы автоматически, а заказы с сайта возвращаются в 1С, где их обрабатывает менеджер.
Это подробное руководство о том, как устроен штатный обмен по CommerceML, что подготовить до запуска, как настроить выгрузку товаров, цен, остатков и заказов, наладить расписание и не сломать каталог при первом обмене. Материал основан на нашей практике интеграции интернет-магазинов с 1С — без маркетинговых обещаний, по делу.
Коротко
- Штатный обмен 1С-Битрикс с 1С идёт по протоколу CommerceML — это есть «из коробки», без сторонних модулей.
- В сторону сайта передаются товары, разделы, свойства, цены и остатки; обратно в 1С — заказы и изменения по ним.
- 90% проблем — не в технике обмена, а в неподготовленных справочниках 1С и несогласованных свойствах.
- Первый обмен всегда делайте на тестовой копии, а полный обмен ставьте на ночь.
Что даёт интеграция с 1С и кому она нужна
Интеграция с 1С снимает с людей рутину, в которой человек ошибается чаще всего: перенос товаров, обновление цен, сверку остатков и ручное заведение заказов. Когда учётная система и сайт обмениваются данными автоматически, витрина всегда показывает актуальный ассортимент и цену, а заказы попадают в 1С без копирования руками.
Это особенно важно для среднего и крупного магазина, где ассортимент измеряется тысячами и десятками тысяч позиций, цены меняются по графику, а заказов в день — десятки и сотни. Но и небольшому магазину обмен экономит часы: вместо того чтобы поддерживать каталог в двух местах, вы ведёте его в одном — в 1С, а сайт получает данные следом.
Что именно синхронизируется
Полноценный обмен закрывает четыре больших группы данных. Понимание, что и в какую сторону передаётся, — половина успеха при настройке:
- Товары и каталог. Из 1С на сайт приходят разделы (категории), сами товары, их описания, артикулы, характеристики, картинки и торговые предложения (размеры, цвета, упаковки). Каталог на сайте повторяет структуру номенклатуры в 1С.
- Цены. Передаются один или несколько типов цен: розничная, оптовая, по группам клиентов, акционная. На сайте они привязываются к группам покупателей.
- Остатки. Количество товара по складам, чтобы покупатель видел наличие, а магазин не продавал то, чего нет. При многоскладском учёте остатки приходят в разрезе складов.
- Заказы. Здесь поток обратный: заказы с сайта выгружаются в 1С, а назад возвращаются статусы (оплачен, отгружен, отменён) и корректировки.
Признаки, что обмен пора настраивать
Если вы узнаёте свой магазин в нескольких пунктах ниже — интеграция с 1С окупится быстро:
- Цены на сайте обновляются вручную и регулярно отстают от учётных.
- Бывают продажи товара, которого нет на складе, и потом приходится извиняться перед покупателем.
- Менеджер переносит заказы с сайта в 1С копированием — и иногда ошибается в позициях или количестве.
- Новые товары появляются на сайте с задержкой, потому что их заводят отдельно от 1С.
- Невозможно быстро ответить на вопрос «сколько этого товара реально есть» — данные расходятся.
Как устроен штатный обмен 1С-Битрикс с 1С
1С-Битрикс и 1С обмениваются данными по специальному протоколу — CommerceML. Это согласованный формат XML-файлов, который понимают обе стороны: 1С формирует выгрузку в этом формате, а сайт умеет её принимать и разбирать. Ничего стороннего для базового обмена не нужно — механизм входит и в модуль «Интернет-магазин» Битрикса, и в типовые конфигурации 1С.
Протокол CommerceML
CommerceML (часто говорят «коммерсемл» или «обмен по CML») — это стандарт обмена коммерческой информацией между 1С и сайтом. Актуальная версия для интернет-магазинов — CommerceML 2.x. В рамках протокола выгрузка обычно делится на два смысловых пакета: каталог (разделы, товары, свойства, картинки) и предложения (цены, остатки, торговые предложения). Заказы передаются отдельным документом.
Важно понимать: CommerceML — это файловый, пакетный обмен, а не «живая» связь в реальном времени. Стороны договариваются о сеансе, 1С отдаёт пакет данных, сайт его принимает и применяет. Поэтому актуальность данных на сайте определяется частотой обмена: чем чаще сеансы, тем «свежее» цены и остатки на витрине.
Кто инициатор обмена
В классической схеме инициатором выступает 1С: именно она «толкает» данные на сайт. 1С подключается к специальному адресу обмена на сайте (служебный скрипт модуля «Интернет-магазин»), авторизуется по логину и паролю и передаёт пакеты. Сайт принимает их и обновляет каталог. Заказы 1С забирает с того же адреса.
Это означает, что для обмена сайт должен быть доступен из сети, где работает 1С, а на сайте должен быть заведён пользователь с правами на обмен. Если 1С работает в закрытом контуре, потребуется настроить доступ к адресу обмена сайта (по защищённому каналу) — это типовая задача для администратора.
Что передаётся в каждую сторону
| Данные | Направление | Зачем |
|---|---|---|
| Разделы и товары | 1С → сайт | Каталог на витрине повторяет номенклатуру 1С |
| Свойства и характеристики | 1С → сайт | Фильтры, сравнение, описание товара |
| Торговые предложения (SKU) | 1С → сайт | Размеры, цвета, фасовки одного товара |
| Типы цен | 1С → сайт | Розница, опт, цены по группам клиентов |
| Остатки по складам | 1С → сайт | Наличие, резервы, отображение «в наличии» |
| Заказы покупателей | сайт → 1С | Обработка заказа менеджером в учётной системе |
| Статусы и оплата заказа | 1С → сайт | Покупатель видит актуальный статус в кабинете |
SKU здесь — это Stock Keeping Unit, единица складского учёта; в терминах Битрикса это «торговое предложение», а в 1С — характеристика номенклатуры. Дальше в статье мы разберём, как правильно связать эти сущности, потому что именно на них чаще всего возникают ошибки.
Что подготовить до первого обмена
Самый частый вывод из наших проектов: технически обмен настраивается за день, а вот подготовка данных в 1С занимает основное время. Если запустить обмен на неподготовленных справочниках, каталог на сайте получится «грязным»: дубли разделов, товары без характеристик, путаница в ценах. Поэтому сначала — подготовка.
Редакция Битрикса и модуль «Интернет-магазин»
Обмен с 1С работает там, где есть модуль «Интернет-магазин». Это редакции «1С-Битрикс: Управление сайтом — Малый бизнес» и «Бизнес», а также «1С-Битрикс24» в коробочной версии с интернет-магазином. В редакции «Старт» интернет-магазина нет, поэтому полноценный товарный обмен на ней не настроить — это нужно учесть ещё на этапе выбора редакции.
Заодно проверьте версию платформы и обновления: механизм обмена развивается, и на свежих версиях меньше известных проблем. Если сайт давно не обновлялся, перед настройкой обмена стоит обновить ядро и модуль «Интернет-магазин» — но обязательно на копии, а не сразу на боевом сайте.
Порядок в справочниках 1С
До обмена наведите порядок в учётной системе — на сайт уедет ровно то, что есть в 1С, со всеми недочётами. Минимальный набор проверок:
- Номенклатура структурирована. Товары разложены по понятным группам, у групп нет дублей, нет «временных» папок и мусорных позиций.
- Заполнены ключевые реквизиты. У товаров есть наименование, артикул, единица измерения, ставка НДС, а для каталога — описания и хотя бы базовые характеристики.
- Настроены типы цен. Те цены, что вы хотите показывать на сайте (розница, опт), заведены как отдельные типы цен и заполнены у товаров.
- Определены склады. Понятно, остатки каких складов уходят на сайт и как они складываются в «общее наличие».
- Картинки. Если изображения ведутся в 1С, они привязаны к товарам; если на сайте — договоритесь, что обмен их не затирает.
Структура каталога и торговые предложения
Заранее решите, как товары с вариантами (размер, цвет, объём) будут жить на сайте. В Битриксе для этого есть торговые предложения: один товар-карточка и несколько предложений под ним. В 1С им соответствуют характеристики номенклатуры. Если в 1С варианты заведены характеристиками — обмен соберёт из них торговые предложения автоматически; если каждый размер заведён отдельной позицией, на сайте получится не карточка с выбором размера, а десяток отдельных товаров.
Это архитектурное решение лучше принять до обмена, потому что переделывать структуру каталога на «живом» сайте дорого. Если каталог сложный, имеет смысл сначала спроектировать его вместе с теми, кто будет настраивать интернет-магазин на 1С-Битрикс, и только потом включать обмен.
Соответствие свойств и характеристик
Свойства товаров в 1С (страна, бренд, материал, габариты) при обмене превращаются в свойства инфоблока на сайте. Чтобы по ним потом работал умный фильтр, важно, чтобы они приходили в правильном типе: бренд и материал — как списки, числовые характеристики — как числа. Если всё придёт «строкой», фильтр будет работать медленно и неудобно.
Мы подробно разбирали это в статье про умный фильтр в 1С-Битрикс: тип свойства напрямую влияет на скорость и удобство каталога. Поэтому соответствие свойств 1С и свойств инфоблока стоит продумать заранее, до первого обмена, а не чистить руками тысячи товаров после.
Пошаговая настройка обмена
Когда данные в 1С приведены в порядок, сама настройка обмена сводится к понятной последовательности шагов: что-то делается на стороне сайта, что-то — на стороне 1С. Ниже — общий порядок; названия пунктов меню могут немного отличаться в зависимости от версии платформы и конфигурации.
На стороне сайта (1С-Битрикс)
- Проверьте модуль «Интернет-магазин». Убедитесь, что модуль установлен и активен, а каталог реализован на инфоблоке с включёнными торговым каталогом и предложениями.
- Заведите пользователя для обмена. Создайте отдельного пользователя с правами на обмен с 1С (или используйте служебный). Через его логин и пароль 1С будет подключаться к сайту — отдельный пользователь удобнее для безопасности и аудита.
- Узнайте адрес обмена. Это служебный скрипт модуля «Интернет-магазин» (точку обмена подсказывает документация вашей версии). Именно к нему будет обращаться 1С.
- Настройте тип цен и склады на сайте. В торговом каталоге заранее создайте типы цен (розница, опт) и, при необходимости, склады — чтобы было с чем сопоставлять данные из 1С.
- Проверьте права и лимиты. Убедитесь, что у пользователя обмена достаточно прав на инфоблок каталога, а на сервере подняты лимиты времени выполнения и памяти для тяжёлого процесса обмена.
На стороне 1С
- Откройте узел обмена с сайтом. В типовой конфигурации (например, «Управление торговлей») это раздел обмена с сайтом или интернет-поддержки. Создайте новый узел обмена.
- Укажите адрес, логин и пароль. Пропишите адрес обмена сайта и учётные данные пользователя, которого вы завели на шаге выше. Проверьте соединение — 1С должна «достучаться» до сайта.
- Выберите, что выгружать. Отметьте группы номенклатуры, которые идут на сайт, типы цен, склады для остатков и настройте выгрузку картинок и свойств.
- Настройте правила для торговых предложений. Укажите, что характеристики номенклатуры выгружаются как торговые предложения, чтобы на сайте получились карточки с выбором варианта.
- Задайте режим обмена. Определите, делать полный обмен или только изменения, и с каким шагом (сколько товаров за один пакет). Для первого раза — полный обмен.
Первый пробный обмен
Первый обмен делайте только на тестовой копии сайта. Запустите полную выгрузку из 1С и внимательно проверьте результат на сайте: правильно ли создались разделы, на месте ли картинки, корректны ли цены и остатки, собрались ли торговые предложения в карточки. На этом этапе всплывают почти все проблемы соответствия справочников — и их дешевле исправить здесь, а не на боевом каталоге.
Когда тестовый обмен проходит чисто, переносите настройки на боевой сайт и делайте первый полный обмен в спокойное время — лучше ночью, когда нагрузка на сайт минимальна, а долгий процесс обмена никому не помешает.
Обмен ценами: розница, опт и типы цен
Цена — данные, которые меняются чаще всего, поэтому обмен ценами обычно настраивают на частое расписание. В 1С цены хранятся как типы цен: у одного товара может быть и розничная, и оптовая, и акционная цена одновременно. Задача обмена — донести нужные типы цен до сайта и показать их правильным покупателям.
Механика такая: в 1С вы отмечаете, какие типы цен выгружать; на сайте в торговом каталоге заведены свои типы цен; при настройке обмена они сопоставляются один к одному. Дальше каждый тип цены на сайте привязывается к группе пользователей: розничная — всем, оптовая — группе «Оптовые покупатели». Авторизованный оптовик видит свою цену, обычный посетитель — розничную.
Цены по группам клиентов для B2B
Если вы работаете с разными категориями клиентов — дилеры, опт первого уровня, опт второго уровня — для каждой можно завести свой тип цены в 1С и свою группу пользователей на сайте. Это основа B2B-витрины: закрытые цены, индивидуальные условия, разные прайсы для разных партнёров. Подробнее о таком сценарии — на странице услуги сайт для B2B-компании.
Важно по редполитике и по жизни: не обещайте покупателю «оптовую цену» там, где правила её предоставления не определены. Сначала договоритесь внутри компании, кто и при каких условиях попадает в оптовую группу, а потом отражайте это в типах цен и группах пользователей. Техника обмена лишь переносит то, что вы решили в учёте.
Обмен остатками и многоскладской учёт
Остатки — вторые по «скоропортящести» данные после цен. Покупателю важно видеть, есть товар или нет, а магазину — не продавать то, чего на складе уже не осталось. Поэтому обмен остатками часто ставят на самое частое расписание из всех, особенно если товар активно расходится.
В простом случае на сайт приходит одно число — общий остаток товара. Если у вас несколько складов, обмен может передавать остатки в разрезе складов, и тогда на сайте можно показывать наличие по конкретному складу или пункту выдачи. Это особенно полезно для магазинов с филиалами и самовывозом из разных городов.
Резервы и «честное» наличие
Отдельный вопрос — резервы. Когда покупатель оформляет заказ, товар стоит зарезервировать, чтобы его не купил кто-то ещё, пока заказ обрабатывается. В связке с 1С резервирование настраивается так, чтобы зарезервированное количество не «продавалось» повторно. Логика резервов зависит от конфигурации 1С и бизнес-процессов, и это один из пунктов, который стоит проговорить с интегратором отдельно.
Цель — чтобы число «в наличии» на сайте было честным: показывало то, что реально можно купить и отгрузить. Расхождение между витриной и складом подрывает доверие покупателя сильнее, чем честное «нет в наличии», поэтому остаткам уделяют столько внимания.
Обмен заказами в обе стороны
До этого момента данные шли из 1С на сайт. С заказами поток обратный: заказ рождается на сайте и должен попасть в 1С, где его обработает менеджер. Это и есть вторая половина интеграции, ради которой её часто и затевают, — чтобы не переносить заказы руками.
Работает это так: покупатель оформляет заказ на сайте; при очередном сеансе обмена 1С забирает новые заказы и создаёт по ним документы (заказ покупателя, реализацию). Менеджер видит заказ в привычном интерфейсе 1С, резервирует товар, готовит отгрузку. Изменения статуса 1С возвращает на сайт — и покупатель видит в личном кабинете, что заказ принят, оплачен или отгружен.
Статусы, оплата и состав заказа
Через обмен заказами синхронизируются не только сами заказы, но и их жизненный цикл:
- Статусы. «Принят», «В обработке», «Отгружен», «Доставлен», «Отменён» — статусы из 1С отражаются на сайте, чтобы покупатель не звонил «а что с моим заказом».
- Оплата. Факт оплаты (особенно при онлайн-оплате через платёжные системы) синхронизируется, чтобы 1С знала, какие заказы оплачены, а сайт — показывал верный статус.
- Корректировки. Если менеджер в 1С изменил состав или количество (например, часть товара недоступна), эти изменения могут возвращаться на сайт.
Отдельно стоит продумать «неидеальные» сценарии заказа, которые в рознице случаются постоянно: частичная отгрузка, когда часть позиций есть, а часть под заказ; дозаказ, когда покупатель добавляет товар к уже оформленному; возврат и отмена. Для каждого из них нужно решить, как он отражается в обмене — отдельным документом, изменением статуса или корректировкой состава. Это не столько техника, сколько описание ваших бизнес-процессов: обмен лишь переносит то, что вы заранее договорились считать «частичной отгрузкой» или «возвратом». Чем подробнее эти сценарии проговорены до настройки, тем меньше ручных правок и звонков покупателям будет потом.
Единицы измерения, упаковки и кратность заказа
Единицы измерения кажутся мелочью ровно до первого опта. В рознице товар обычно продаётся штуками, и вопросов не возникает. Но как только появляется оптовый канал, всплывают коробки, упаковки, погонные метры, килограммы и кратность заказа — и всё это должно корректно приехать из 1С на сайт, иначе покупатель закажет «не то количество».
В 1С у номенклатуры есть базовая единица измерения и могут быть дополнительные (упаковка, коробка) с коэффициентом пересчёта. При обмене важно договориться, в каких единицах товар показывается и продаётся на сайте. Типичные сценарии, которые стоит проговорить до настройки:
- Продажа упаковками. Товар отгружается только коробками по N штук — на сайте нужно показывать цену за упаковку и не давать заказать «3 штуки из коробки в 12».
- Кратность заказа. Минимальная партия и шаг — например, кратно 10. Это правило либо приходит из 1С, либо настраивается на сайте, и его нужно где-то закрепить как «хозяина».
- Весовой и метражный товар. Кабель, ткань, сыпучие — продаются в метрах или килограммах с дробным количеством. Единица и точность округления должны совпадать в 1С и на сайте.
Если этот вопрос не проработать, получаются неприятные расхождения: на сайте заказали 5 штук, а отгрузить можно только упаковкой, и менеджер вынужден перезванивать и переоформлять. Поэтому единицы измерения — обязательный пункт подготовки, особенно для B2B-магазина.
НДС, валюта и округление цен
Цена — это не только число, но и контекст: с НДС или без, в какой валюте, с каким округлением. Если эти параметры в 1С и на сайте трактуются по-разному, покупатель увидит цену, которая не совпадает с той, что попадёт в документ. Поэтому при настройке обмена ценами всегда проверяют три вещи.
НДС. Решите, как товар отображается на витрине — цена с НДС или без — и убедитесь, что обмен передаёт ставку НДС и сумму так, как нужно. Для розничного магазина обычно показывают цену с НДС, для оптового B2B иногда удобнее показывать цену без НДС с пометкой. Главное — чтобы это было осознанным решением, а не случайностью настройки.
Валюта. Если учёт ведётся в одной валюте, а на сайте цены показываются в рублях, нужно понимать, как и где происходит пересчёт и по какому курсу. Для большинства российских магазинов всё в рублях, и вопрос снимается, но для импортных позиций его стоит проговорить.
Округление. Согласуйте правила округления, чтобы на сайте не появлялись цены вроде «1 249,87 ₽» там, где в учёте красиво «1 250 ₽». Округление настраивается, и его лучше задать единообразно, чтобы витрина выглядела аккуратно.
Картинки и контент товара: что ведём в 1С, а что на сайте
Один из самых частых источников боли — изображения и тексты товаров. Вопрос не технический, а организационный: где «живёт» контент. Если картинки и описания ведутся в 1С, они приедут на сайт обменом. Если их наполняют контент-менеджеры прямо на сайте, обмен не должен их затирать. Самое плохое — когда нет договорённости, и обмен то и дело перезаписывает то, что наполнили руками.
Практичное решение — разделить зоны ответственности и закрепить их в настройках обмена:
- Из 1С приходит: наименование, артикул, цена, остаток, базовые характеристики, иногда основное фото.
- На сайте ведётся: продающие описания, дополнительные фото и галерея, SEO-поля, видео, баннеры — то, что 1С не хранит.
- Защита от затирания: поля, которыми «хозяйствует» сайт, исключаются из перезаписи обменом, чтобы выгрузка из 1С не очищала их пустыми значениями.
С изображениями есть нюанс производительности: при каждом полном обмене не нужно перекачивать все картинки заново, если они не менялись. Грамотно настроенный обмен переносит только новые и изменённые изображения, иначе тяжёлая выгрузка картинок будет нагружать и 1С, и сайт без всякой пользы.
Соответствие справочников: коды, GUID и XML_ID
Самая «невидимая», но критичная часть обмена — идентификаторы. Чтобы при каждом сеансе 1С обновляла существующие товары, а не создавала их заново, у каждой сущности должен быть стабильный код, одинаковый от обмена к обмену. В мире 1С это обычно уникальный идентификатор (GUID), который на стороне сайта сохраняется как внешний код элемента (XML_ID).
Если этот код «плывёт» — например, при перезаливке номенклатуры в 1С у товаров поменялись идентификаторы, — обмен перестаёт узнавать старые товары и создаёт дубли. Каталог распухает копиями, ломаются ссылки, страдает SEO. Поэтому стабильность идентификаторов — то, за чем следят в первую очередь, особенно если каталог уже переносили или 1С меняли.
Что важно проверить по идентификаторам до и во время обмена:
- У разделов, товаров и торговых предложений есть стабильные коды, которые не меняются между обменами.
- При переносе каталога или смене конфигурации 1С идентификаторы сохраняются или явно сопоставляются со старыми.
- На тестовом обмене вы убедились, что повторный сеанс обновляет товары, а не плодит дубли.
Логи, мониторинг и что делать при сбое
Обмен — это процесс, который работает годами и иногда ломается: сменился пароль, упал сервер, 1С обновили, каталог вырос и перестал укладываться в лимиты. Плохой сценарий — когда обмен молча встал, а заметили это через неделю по жалобам покупателей на старые цены. Хороший — когда о сбое вы узнаёте сразу.
Поэтому в рабочей интеграции всегда настраивают наблюдение за обменом:
- Логи обмена. Каждый сеанс пишет журнал: что передано, сколько товаров, были ли ошибки. По логам легко понять, где именно сломалось.
- Уведомления об ошибках. Если обмен завершился с ошибкой или давно не проходил, ответственный получает сигнал — на почту или в мессенджер.
- Контроль «свежести» данных. Полезно видеть, когда был последний успешный обмен ценами и остатками, чтобы заметить «заморозку» вовремя.
Если обмен всё же сломался, общий порядок действий такой: посмотреть лог последнего сеанса и найти ошибку, проверить доступность сайта и учётных данных, убедиться, что не кончились лимиты сервера, и при необходимости перезапустить обмен пачками. Большинство сбоев — это пароли, права и лимиты, а не «сломавшийся протокол».
Безопасность обмена с 1С
Через адрес обмена на сайт можно загружать каталог и забирать заказы — а в заказах есть персональные данные покупателей. Поэтому канал обмена нужно защищать так же серьёзно, как и саму админку. Базовые меры, которые стоит соблюдать всегда:
- Отдельный пользователь обмена со сложным паролем и минимально необходимыми правами — только на обмен, не администратор.
- Защищённое соединение (HTTPS). Обмен идёт по шифрованному каналу, чтобы логин, пароль и данные не передавались открытым текстом.
- Ограничение доступа к адресу обмена. По возможности — доступ только с известных адресов, где работает 1С.
- Регулярная смена паролей и контроль, кто имеет доступ к настройкам обмена с обеих сторон.
Это не «паранойя», а нормальная гигиена: адрес обмена — такая же дверь в систему, как форма входа в админку, и относиться к ней нужно соответственно. Юридические аспекты работы с персональными данными покупателей в заказах — отдельная тема; по ней лучше свериться с вашим юристом и требованиями законодательства.
Обмен и SEO каталога: бережём ЧПУ и метатеги
Каталог — это страницы, которые приводят трафик из поиска, поэтому обмен не должен ломать SEO. Главные риски здесь — смена адресов страниц (ЧПУ — человекопонятный URL) и перезапись метатегов, которые ведутся на сайте. Если при обмене у товара изменится символьный код, поменяется и его URL, а старый адрес отдаст 404 — поисковик это не любит.
Чтобы обмен дружил с продвижением, придерживаются нескольких правил:
- Стабильные ЧПУ. Символьный код товара формируется один раз и не меняется при каждом обмене, чтобы URL оставались постоянными.
- SEO-поля ведёт сайт. Title, description и тексты для поисковиков обычно наполняют на сайте, и обмен их не затирает.
- Редиректы при изменениях. Если адрес всё-таки меняется (переименовали раздел), со старого URL настраивается переход на новый.
SEO каталога — большая отдельная тема: метатеги, умный фильтр, robots и карта сайта. Мы разбираем её в рубрике «SEO и продвижение», а готовую структуру под поиск делаем в рамках услуги сайт с SEO-структурой. Главное — учесть SEO до запуска обмена, а не спасать позиции после.
Мини-кейс: каталог на десятки тысяч позиций
Чтобы всё вышесказанное не осталось теорией, коротко опишем типичный для нас сценарий (детали обобщены, без названий клиентов — по нашей редполитике мы не раскрываем проекты без согласия).
Ситуация. Магазин с каталогом в несколько десятков тысяч позиций вёл товары и в 1С, и на сайте параллельно. Цены обновляли вручную раз в неделю, остатки не сходились, заказы менеджеры переносили в 1С копированием. С ростом ассортимента это перестало масштабироваться.
Задача. Перевести каталог на единый источник — 1С, настроить автоматический обмен товарами, ценами, остатками и заказами и при этом не уронить скорость витрины и позиции в поиске.
Решение. Сначала навели порядок в справочниках 1С и согласовали свойства под умный фильтр. Затем собрали структуру каталога на торговых предложениях, отладили обмен на копии, настроили шаговый обмен и разнесли расписание: полный каталог — ночью, цены и остатки — несколько раз в день, заказы — почти в реальном времени. Отдельно защитили SEO-поля и картинки от перезаписи.
Результат. Каталог стал вестись в одном месте, цены и остатки на витрине перестали отставать от учёта, а заказы поехали в 1С без ручного переноса. Точные цифры по каждому проекту разные и зависят от исходного состояния данных, поэтому обещать «ускорение в N раз» было бы некорректно — но снятие ручной рутины клиенты отмечают сразу.
Расписание и автоматизация обмена
Ручной запуск обмена годится для отладки, но на рабочем магазине обмен должен идти сам. Автоматизировать его можно с двух сторон, и обычно используют комбинацию.
На стороне 1С обмен ставят на регламентное задание: 1С по расписанию сама подключается к сайту и передаёт данные. На стороне сайта можно использовать агенты Битрикса или вызывать скрипт обмена по cron (планировщику задач сервера). Какой способ выбрать — зависит от того, где удобнее держать расписание и кто администрирует системы.
Разные данные — разная частота
Не обязательно (и не нужно) гонять весь каталог каждые пять минут. Рациональнее разнести обмен по типам данных:
- Полный обмен каталогом — раз в сутки, ночью: новые товары, изменения описаний, картинки, свойства.
- Цены — несколько раз в день или по событию изменения прайса.
- Остатки — часто, вплоть до каждых нескольких минут, если товар быстро расходится.
- Заказы — как можно ближе к реальному времени, чтобы менеджер видел заказ сразу.
Такое разделение снимает нагрузку: тяжёлый полный обмен идёт раз в сутки в тихое время, а лёгкие частые сеансы (цены, остатки, заказы) почти не нагружают ни 1С, ни сайт.
Производительность: большой каталог
Чем больше каталог, тем больше внимания к производительности обмена. Выгрузка десятков тысяч товаров с картинками и характеристиками — тяжёлый процесс, и если его не настроить, он может упираться в лимиты сервера или замедлять витрину. Несколько проверенных приёмов:
- Шаговый обмен. Передавайте товары пачками (по несколько сотен за пакет), а не всё разом — так обмен укладывается в лимиты и его проще перезапустить при сбое.
- Ночной полный обмен. Самую тяжёлую выгрузку каталога ставьте на ночь, когда покупателей мало.
- Лимиты PHP. Под процесс обмена поднимите время выполнения скрипта и лимит памяти — иначе длинный обмен оборвётся на середине.
- Меньше лишних пересчётов. На время массовой загрузки имеет смысл отложить тяжёлые пересчёты (например, переиндексацию), чтобы они не запускались на каждый товар.
- Композитный сайт и кэш. Чтобы обмен не влиял на скорость витрины, используйте композитный сайт и продуманное кэширование каталога.
Тема скорости тесно связана с архитектурой магазина в целом — про неё и про Core Web Vitals мы пишем в рубрике «Разработка и архитектура». Если каталог большой и нагрузка высокая, обмен стоит проектировать вместе с производительностью, а не отдельно.
Частые ошибки при обмене с 1С
Большинство проблем обмена повторяются из проекта в проект. Зная их заранее, вы сэкономите дни отладки. Вот те, что встречаются чаще всего:
- Запуск первого обмена сразу на боевом сайте. Самая дорогая ошибка: неотлаженный обмен портит каталог в рабочее время. Лечится одним правилом — сначала тестовая копия.
- Несогласованные коды товаров. Если идентификатор товара (XML_ID) между обменами «плавает», 1С создаёт дубли вместо обновления существующих позиций. Каталог распухает копиями.
- Свойства приходят «строкой». Характеристики, которые должны быть списками или числами, выгружаются текстом — и умный фильтр по ним работает плохо.
- Обмен затирает данные сайта. Картинки, SEO-поля или описания, которые ведутся на сайте, перезаписываются пустыми значениями из 1С. Нужно явно договориться, какие поля «хозяйствует» сайт, а какие — 1С.
- Каждый вариант — отдельный товар. Размеры и цвета заведены в 1С отдельными позициями, и на сайте вместо удобной карточки с выбором получается россыпь почти одинаковых товаров.
- Неверное сопоставление типов цен. Розничная цена уезжает в оптовый тип или наоборот — покупатели видят не те цены. Проверяется на тестовом обмене.
- Слишком тяжёлый полный обмен днём. Гигантская выгрузка в пиковые часы тормозит сайт. Решается ночным расписанием и шаговым обменом.
- Нет мониторинга обмена. Обмен молча сломался, а заметили это через неделю по жалобам. Нужны логи и уведомления об ошибках обмена.
- Конфликт «хозяина» заказа. Заказ правят и на сайте, и в 1С без правил — данные расходятся. Договоритесь, кто главный после выгрузки.
Чек-лист перед запуском обмена
Короткий список, по которому удобно свериться до того, как включить обмен на боевом сайте:
- Редакция Битрикса с модулем «Интернет-магазин», ядро и модуль обновлены.
- Номенклатура в 1С структурирована, без дублей и мусора.
- Заполнены артикулы, единицы, ставки НДС и ключевые характеристики.
- Заведены нужные типы цен и определены склады для остатков.
- Решено, как варианты товара (характеристики) превращаются в торговые предложения.
- Согласовано соответствие свойств 1С и свойств инфоблока (списки, числа).
- На сайте создан пользователь обмена с нужными правами.
- Подняты лимиты PHP под процесс обмена, настроен шаговый обмен.
- Первый обмен отлажен на тестовой копии, результат проверен.
- Настроено расписание: каталог — ночью, цены и остатки — чаще, заказы — почти в реальном времени.
- Включены логи и уведомления об ошибках обмена.
Когда штатного обмена не хватает
CommerceML закрывает большинство задач магазина, но не все. Есть сценарии, где нужен либо доработанный обмен, либо интеграция через REST API в дополнение к файловому обмену:
- Обмен в реальном времени по событию. Когда остаток или цена должны меняться на сайте мгновенно, а не в ближайший сеанс обмена.
- Несколько систем сразу. Магазин обменивается не только с 1С, но и со складом (WMS), CRM, маркетплейсами — данные ходят между несколькими системами.
- Нестандартные данные. Нужно передавать поля и сущности, которых нет в стандартном CommerceML.
- Особая логика цен и скидок. Сложные правила ценообразования, индивидуальные условия, расчёт «на лету».
В таких случаях обычно сочетают подходы: каталог, цены и заказы идут по CommerceML, а особые сценарии — через REST API и обработчики событий. Это уже не настройка «галочками», а разработка, которую стоит планировать отдельно. Если у вас именно такой случай, посмотрите смежные услуги в каталоге всех услуг B2Bsite или свяжите магазин с CRM через интернет-магазин с CRM.
Сколько это занимает и от чего зависит
Сроки и стоимость интеграции с 1С сильно зависят от исходных данных, поэтому честнее говорить о факторах, а не о фиксированной цифре. На объём работ влияют: порядок в справочниках 1С (чем чище данные, тем быстрее), размер и сложность каталога, число типов цен и складов, наличие торговых предложений, требования к расписанию и необходимость нестандартных сценариев.
Если данные в 1С в порядке, а сценарий типовой, базовый обмен каталогом, ценами, остатками и заказами настраивается ориентировочно за несколько дней. Если же справочники нужно приводить в порядок, каталог — перепроектировать под торговые предложения, а обмен дополнять REST-сценариями, работа займёт больше. Точную оценку всегда дают после знакомства с вашей 1С и каталогом — заочно её называть некорректно.
Хороший способ начать — не пытаться «включить всё сразу», а двигаться этапами: сначала наладить обмен каталогом и ценами, убедиться, что витрина показывает актуальные данные, затем подключить остатки, и только потом — двусторонний обмен заказами. Поэтапный запуск снижает риск: каждый шаг проверяется отдельно, и если что-то идёт не так, понятно, где именно искать причину. На неподготовленном каталоге этот путь почти всегда оказывается быстрее, чем попытка настроить полный обмен одним заходом.
Тестирование обмена: что проверить на копии
Тестовая копия упоминалась несколько раз — и не зря. Но «проверить обмен» — это не «посмотреть, что сайт не упал». Есть конкретный список того, что нужно прогнать на копии перед запуском на боевом каталоге. Пройдитесь по нему как по сценарию приёмки:
- Создание каталога. Разделы создались с правильной вложенностью, без дублей, товары попали в свои категории.
- Торговые предложения. Варианты товара собрались в карточку с выбором (размер, цвет), а не рассыпались на отдельные позиции.
- Свойства и фильтр. Характеристики пришли в нужных типах (списки, числа), и по ним корректно работает умный фильтр.
- Цены. Розничная и оптовая цены сопоставились с правильными типами цен и показываются нужным группам покупателей.
- Остатки. Наличие совпадает с 1С, при многоскладском учёте — в разрезе складов, резервы учитываются.
- Картинки и контент. Изображения на месте, а поля, которые ведутся на сайте (SEO, описания), не затёрлись пустыми значениями.
- Повторный обмен. Второй сеанс обновляет существующие товары, а не создаёт дубли — это проверка стабильности идентификаторов.
- Заказ туда-обратно. Тестовый заказ с сайта выгрузился в 1С, а изменение статуса в 1С вернулось на сайт.
- Нагрузка и время. Полный обмен укладывается в лимиты сервера и не валится на середине большого каталога.
Если все пункты проходят чисто — обмен готов к переносу на боевой сайт. Если хоть один даёт сбой, дешевле разобраться сейчас, на копии, чем потом объяснять покупателям, почему у них в корзине не та цена. Хорошая приёмка обмена экономит недели последующей правки данных вручную.
Обмен с 1С и Битрикс24: где граница
Здесь важно не путать два продукта. 1С (учётная система — УТ, ERP, УНФ) хранит товары, цены, остатки и заказы; обмен с ней по CommerceML — это то, о чём вся эта статья. Битрикс24 — это CRM и корпоративный портал: сделки, лиды, задачи, общение с клиентами. Это разные системы, и магазин нередко связывают с обеими сразу, но по разным сценариям.
Типичное разделение ролей выглядит так: каталог, цены, остатки и сами заказы магазин обменивает с 1С, а обращения покупателей, заявки с форм и работа менеджера по сделке ведутся в Битрикс24 или другой CRM. Тогда заявка с сайта попадает в CRM как лид, заказ — в 1С как документ, и каждая система занимается своим делом.
Если вам нужна именно связка витрины с CRM — это отдельная задача, которую мы решаем в рамках услуги интернет-магазин с CRM и сайт с интеграцией CRM. Про связку магазина с Битрикс24 у нас будет отдельный материал в рубрике «Интеграции»; механика там своя и с обменом по CommerceML её лучше не смешивать.
Что обмен НЕ делает за вас
У интеграции есть и обратная сторона ожиданий. Обмен переносит данные между системами, но не наводит в них порядок и не принимает за вас бизнес-решения. Полезно заранее понимать его границы, чтобы не разочароваться:
- Не чистит каталог. Если в 1С бардак — дубли, пустые описания, кривые характеристики, — ровно это и приедет на сайт. Обмен честно переносит то, что есть.
- Не придумывает структуру. Как товары разложены по группам и как варианты собраны в торговые предложения — решаете вы, обмен лишь воспроизводит это на сайте.
- Не пишет продающие тексты. Учётная система хранит сухие данные; маркетинговые описания и SEO — это работа на стороне сайта.
- Не устанавливает правила цен и скидок. Кому какая цена и при каких условиях — это политика компании; обмен переносит готовые типы цен, а не выдумывает их.
- Не заменяет тестирование. Каждое изменение в обмене нужно проверять на копии — само по себе оно не «просто работает».
Если держать эти границы в голове, ожидания от интеграции будут реалистичными: обмен убирает рутину и расхождения, но качество каталога и ценовой политики по-прежнему на вашей стороне.
Словарь терминов обмена с 1С
Чтобы разговор с интегратором шёл на одном языке, держите под рукой короткий словарь ключевых понятий, которые встречаются при настройке обмена:
- CommerceML — стандартный формат обмена коммерческими данными между 1С и сайтом (товары, цены, остатки, заказы). Актуальная версия для магазинов — 2.x.
- Узел обмена — настройка на стороне 1С, описывающая, с каким сайтом и какими данными идёт обмен.
- Профиль/точка обмена — адрес на сайте, к которому подключается 1С, и связанные с ним настройки приёма данных.
- Инфоблок — хранилище данных каталога в Битриксе; именно в инфоблок обмен записывает разделы и товары.
- Торговое предложение (SKU) — вариант товара (размер, цвет, фасовка); в 1С ему соответствует характеристика номенклатуры.
- Тип цены — вид цены в учёте и на сайте (розничная, оптовая); типы цен 1С сопоставляются с типами цен сайта.
- XML_ID (внешний код) — стабильный идентификатор элемента, по которому обмен узнаёт товар между сеансами и обновляет его, а не создаёт заново.
- Регламентное задание — расписание на стороне 1С, по которому обмен запускается автоматически.
- Агент — механизм Битрикса для запуска задач по расписанию на стороне сайта; может инициировать или обслуживать обмен.
- Шаговый обмен — передача данных пачками, чтобы тяжёлая выгрузка укладывалась в лимиты сервера.
Этих понятий достаточно, чтобы уверенно обсуждать обмен и понимать, о чём говорит подрядчик. Если встретите незнакомый термин — лучше уточнить сразу: цена ошибки в обмене с 1С измеряется испорченным каталогом, а не парой минут разговора.
Вывод
Интеграция интернет-магазина на 1С-Битрикс с 1С — это не про «галочку в настройках», а про порядок в данных и продуманную схему обмена. Технически штатный обмен по CommerceML закрывает основные задачи: товары, цены, остатки идут на сайт, заказы возвращаются в 1С. Но качество результата определяется подготовкой: чистыми справочниками, согласованными свойствами, правильной структурой каталога и аккуратным расписанием.
Сделайте подготовку как следует, отладьте первый обмен на копии, разнесите данные по расписанию — и магазин перестанет жить «в двух системах». Витрина будет показывать актуальные цены и остатки, а заказы окажутся в 1С без ручного переноса. Это и есть та автоматизация, ради которой затевают интеграцию.