-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

Интеграция 1С-Битрикс с МойСклад: товары, остатки, цены и заказы

Схема интеграции интернет-магазина на 1С-Битрикс с МойСклад: товары, остатки, цены и заказы через REST API

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

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

Коротко

  • МойСклад — облачная учётная система; обмен с 1С-Битрикс идёт по REST API в формате JSON, а на события работают вебхуки.
  • На сайт передаются товары, модификации, остатки по складам и цены; обратно в МойСклад — заказы и их статусы.
  • Способы интеграции: готовый модуль из Маркетплейса Битрикс, собственный обмен по API или промежуточный сервис.
  • 90% проблем — не в API, а в неподготовленных справочниках и неверном маппинге сущностей и идентификаторов.
  • Остатки и заказы держат на вебхуках плюс сверочный полный обмен по расписанию раз в сутки.

Что такое МойСклад и зачем связывать его с сайтом

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

Для интернет-магазина МойСклад закрывает ровно ту часть, которую нельзя вести на сайте: реальный складской учёт. Сайт умеет показывать каталог и принимать заказы, но не знает, сколько товара физически лежит на складе, что уже зарезервировано и что в пути от поставщика. Всё это живёт в учётной системе. Интеграция соединяет две половины: витрину и учёт.

Что даёт связка сайта и МойСклад

Интеграция снимает с людей рутину, в которой человек ошибается чаще всего: перенос товаров, обновление цен, сверку остатков и ручное заведение заказов. Когда учётная система и сайт обмениваются данными автоматически, витрина всегда показывает актуальный ассортимент и цену, а заказы попадают в МойСклад без копирования руками.

Признаки, что интеграцию пора настраивать

Если вы узнаёте свой магазин в нескольких пунктах ниже — обмен с МойСклад окупится быстро:

МойСклад или 1С: вместе или вместо

Частый вопрос на старте: чем МойСклад отличается от 1С и можно ли одно заменить другим. Коротко: это две разные учётные системы, и выбор между ними — управленческий, а не технический. МойСклад — облачный сервис с фокусом на торговлю и склад, его сильные стороны — простота запуска, доступность из браузера и готовый API. 1С — платформа с бухгалтерией, зарплатой, производством и глубокой настройкой под отрасль, чаще коробочная, с обменом по CommerceML «из коробки».

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

Три типовых сценария

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

Что синхронизируется между Битрикс и МойСклад

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

ДанныеНаправлениеЗачем
Товары и папки (группы)МойСклад → сайтКаталог на витрине повторяет номенклатуру МойСклад
Модификации (варианты)МойСклад → сайтРазмеры, цвета, фасовки одного товара как торговые предложения
Характеристики и атрибутыМойСклад → сайтСвойства инфоблока, умный фильтр, описание товара
Остатки по складамМойСклад → сайтНаличие, резервы, отображение «в наличии»
Типы цен и цены продажиМойСклад → сайтРозница, опт, цены по группам клиентов
Заказы покупателейсайт → МойСкладОбработка заказа менеджером в учётной системе
Статусы и отгрузка заказаМойСклад → сайтПокупатель видит актуальный статус в кабинете

В терминах МойСклад товар — это product, вариант товара — variant (модификация), склад — store, остаток — часть отчёта по остаткам или «ассортимента», заказ покупателя — customerorder, отгрузка — demand, тип цены — pricetype. Дальше в статье мы разберём, как правильно связать эти сущности с объектами Битрикса, потому что именно на маппинге чаще всего возникают ошибки.

Способы интеграции: модуль, REST API, сервис-прослойка

У обмена с МойСклад нет одного «штатного» протокола, как CommerceML у 1С. Поэтому первый архитектурный выбор — каким способом связывать системы. Их три, и они отличаются трудозатратами, гибкостью и стоимостью поддержки.

1. Готовый модуль из Маркетплейса Битрикс

На Битрикс Маркетплейсе есть модули интеграции с МойСклад от разных вендоров. Вы устанавливаете модуль, указываете токен доступа к API МойСклад, настраиваете соответствие каталога, складов и типов цен — и обмен начинает работать «галочками». Это самый быстрый старт для типового магазина: не нужно писать код, базовые сценарии закрыты из коробки.

Минусы тоже есть: вы ограничены логикой модуля. Если нужен нестандартный маппинг, особая обработка модификаций или сценарий заказа, которого в модуле нет, придётся либо искать другой модуль, либо дорабатывать. Перед покупкой стоит проверить, что модуль поддерживает вашу версию Битрикса, актуальную версию API МойСклад и именно те сущности, которые вам нужны (модификации, комплекты, несколько складов, несколько типов цен).

2. Собственный обмен по REST API

Второй путь — написать обмен под свои процессы, обращаясь к REST API МойСклад напрямую. Это гибко: вы полностью контролируете маппинг, частоту, обработку ошибок и то, какие поля куда едут. Так делают, когда каталог сложный, сценарии нестандартные или готовый модуль не покрывает задачу. Обмен обычно оформляют как модуль или набор скриптов на стороне Битрикса плюс обработчики вебхуков.

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

3. Промежуточный сервис (middleware)

Третий вариант — отдельный сервис-прослойка между сайтом, МойСклад и остальными системами. Он принимает вебхуки, держит очередь событий, выполняет маппинг, делает повторные попытки при сбоях и ведёт единый лог. Такой слой оправдан, когда систем много: сайт, МойСклад, маркетплейсы, CRM, несколько складов. Он сглаживает пики вебхуков, снимает нагрузку с API и делает обмен предсказуемым.

Для одного магазина с одним складом middleware чаще избыточен — достаточно модуля или прямого обмена. Но для мультиканальной торговли это самый устойчивый вариант.

Сайт на 1С-Битрикс каталог · заказы МойСклад учёт · остатки REST API (JSON): запрос товаров, цен, остатков Вебхуки: событие изменилось → уведомление на сайт Токен доступа
Схема: сайт на Битриксе обращается к REST API МойСклад за товарами, ценами и остатками, а МойСклад присылает вебхуки о событиях. Доступ авторизуется токеном.

Как устроен REST API МойСклад

Независимо от способа, в основе обмена лежит REST API МойСклад — набор HTTP-адресов, к которым обращается сайт, чтобы читать и записывать данные. Формат обмена — JSON: и запросы, и ответы представляют собой структурированные объекты. Это принципиально иной транспорт, чем файловый XML CommerceML: здесь нет «пакета на диске», есть живые вызовы к облаку.

Работает это так. Каждая сущность в МойСклад — товар, модификация, склад, заказ — доступна по своему адресу (endpoint). Сайт отправляет запрос: «дай список товаров», «дай остатки по складам», «создай заказ покупателя» — и получает ответ в JSON. Чтение делается запросами на получение, создание и изменение — запросами на запись. У каждой сущности есть уникальный идентификатор, по которому её потом находят и обновляют.

Авторизация: токен доступа

Чтобы сайт мог обращаться к API, ему нужен доступ. МойСклад поддерживает авторизацию по паре логин-пароль и по токену доступа. На практике для интеграции заводят отдельного пользователя МойСклад и получают для него токен, который сайт подставляет в каждый запрос. Токен удобнее и безопаснее: его можно отозвать, не меняя основной пароль, и выдать интеграции ровно те права, которые ей нужны.

Основные сущности API

Сущность МойСкладЧто этоРоль в обмене
product (товар)Карточка номенклатурыСтановится элементом каталога на сайте
variant (модификация)Вариант товара по характеристикамСтановится торговым предложением
bundle (комплект)Набор из нескольких товаровТовар-комплект на витрине
store (склад)Место храненияИсточник остатков, привязка наличия
отчёт по остаткамКоличество по складамНаличие и резервы на сайте
pricetype / цены продажиТипы цен и значенияРозница, опт, цены по группам
customerorder (заказ)Заказ покупателяСоздаётся из заказа сайта
demand (отгрузка)Документ отгрузкиПризнак, что заказ отгружен
counterparty (контрагент)КлиентПокупатель в заказе

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

Товары и модификации: что приходит на сайт

Из МойСклад на сайт приходит структура каталога: папки (группы номенклатуры) превращаются в разделы инфоблока, сами товары — в элементы каталога, а их поля — в свойства товара. Как и в обмене с 1С, действует простое правило: на сайт уедет ровно то, что есть в учётной системе, со всеми недочётами. Поэтому сначала — порядок в МойСклад.

Что переносится с товаром

Что лучше вести на сайте, а не в МойСклад

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

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

Модификации МойСклад → торговые предложения Битрикс

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

Задача обмена — собрать из товара и его модификаций карточку с выбором варианта, а не россыпь отдельных позиций. Для этого при настройке:

  1. Родительский товар МойСклад маппится на элемент инфоблока товаров (карточку).
  2. Каждая модификация маппится на торговое предложение в инфоблоке предложений, привязанное к этой карточке.
  3. Характеристики модификации (размер, цвет) переносятся в свойства торговых предложений, чтобы работал выбор варианта и фильтр.
  4. Связь товар→модификация сохраняется по стабильным идентификаторам, чтобы при повторном обмене предложения не оторвались от карточки.
Решите структуру до обмена. Если в МойСклад каждый размер заведён отдельным товаром, а не модификацией, на сайте получится десяток почти одинаковых карточек вместо одной с выбором размера. Переделывать структуру каталога на «живом» сайте дорого, поэтому архитектуру торговых предложений согласуют до первого обмена.

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

МойСклад учётная система Сайт 1С-Битрикс Товары · модификации Остатки по складам Цены и типы цен Заказы покупателей Статусы и отгрузка заказа
Схема: товары, модификации, остатки и цены идут из МойСклад на сайт; заказы уходят обратно в МойСклад, а статусы и факт отгрузки возвращаются на витрину.

Остатки по складам и «честное» наличие

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

В МойСклад остатки берутся из отчёта по складам. В простом случае на сайт приходит одно число — общий остаток товара или модификации. Если складов несколько, обмен передаёт остатки в разрезе складов, и тогда на сайте можно показывать наличие по конкретному складу или пункту выдачи. Это особенно полезно магазинам с филиалами и самовывозом из разных городов.

Резервы и доступное количество

Отдельный и важный вопрос — резервы. Когда покупатель оформляет заказ, товар нужно зарезервировать, чтобы его не купил кто-то ещё, пока заказ обрабатывается. МойСклад различает физический остаток, резерв, ожидание (в пути от поставщика) и доступный остаток. На сайт разумно выводить именно доступное количество — то, что реально можно продать и отгрузить прямо сейчас, а не физический остаток, часть которого уже под чужими заказами.

Цель — чтобы число «в наличии» на сайте было честным. Расхождение между витриной и складом подрывает доверие покупателя сильнее, чем честное «нет в наличии», поэтому остаткам уделяют столько внимания. Логику резервов проговаривают с интегратором отдельно: где создаётся резерв (на сайте или в МойСклад при создании заказа) и как он влияет на отображаемое наличие.

Несколько складов и правила отображения

Цены и типы цен МойСклад

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

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

Цены по группам клиентов для B2B

Если вы работаете с разными категориями клиентов — дилеры, опт первого уровня, опт второго уровня, — для каждой можно завести свой тип цены в МойСклад и свою группу пользователей на сайте. Это основа B2B-витрины: закрытые цены, индивидуальные условия, разные прайсы для разных партнёров. Подробнее о ценообразовании по группам — в статье про оптовые цены по группам в Битриксе.

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

Валюта и округление

Проверьте, в какой валюте ведутся цены в МойСклад и как они должны показываться на сайте. Для большинства российских магазинов всё в рублях, и вопрос снимается. Согласуйте и правила округления, чтобы на витрине не появлялись цены вроде «1 249,87 ₽» там, где в учёте красиво «1 250 ₽». Это лучше задать единообразно на старте.

Синхронизация заказов туда и обратно

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

Работает так: покупатель оформляет заказ на сайте; сайт через API создаёт в МойСклад «Заказ покупателя» (customerorder), подставляя контрагента, позиции, склад, тип цены и комментарий. Менеджер видит заказ в привычном интерфейсе МойСклад, резервирует товар, оформляет отгрузку. Изменения статуса и факт отгрузки возвращаются на сайт — и покупатель видит в личном кабинете, что заказ принят, собран или отгружен.

Что важно передать в заказе

Договоритесь о «хозяине» заказа. Решите заранее, где заказ можно редактировать после оформления — на сайте, в МойСклад или и там, и там. Если обе системы будут править один заказ без правила, возможны конфликты. Обычно после выгрузки в МойСклад «хозяином» становится она, а сайт показывает статусы.
Покупатель оформил заказ Сайт создаёт заказ МойСклад customerorder Менеджер резерв · отгрузка Статус «отгружен» возвращается на сайт → в личный кабинет
Схема: заказ с сайта создаётся в МойСклад как «Заказ покупателя», менеджер его отгружает, а статус отгрузки возвращается на сайт в личный кабинет покупателя.

Статусы, резервы и отгрузки

Через обмен заказами синхронизируется не только сам заказ, но и его жизненный цикл. В МойСклад заказ проходит стадии: создан, зарезервирован, собран, отгружен, оплачен. Эти состояния важно отразить на сайте, чтобы покупатель не звонил «а что с моим заказом», а менеджер не дублировал работу.

Отдельно стоит продумать «неидеальные» сценарии, которые в рознице случаются постоянно: частичная отгрузка, когда часть позиций есть, а часть под заказ; дозаказ; возврат и отмена. Для каждого нужно решить, как он отражается в обмене — новым документом, изменением статуса или корректировкой состава. Это не столько техника, сколько описание ваших бизнес-процессов: обмен лишь переносит то, что вы заранее договорились считать «частичной отгрузкой» или «возвратом». Чем подробнее эти сценарии проговорены до настройки, тем меньше ручных правок и звонков покупателям будет потом.

Маппинг справочников: как связать сущности

Самая «невидимая», но критичная часть обмена — соответствие сущностей и идентификаторов. Чтобы при каждом сеансе сайт обновлял существующие товары, а не создавал их заново, у каждой сущности должен быть стабильный код, одинаковый от обмена к обмену. В МойСклад у каждого объекта есть уникальный идентификатор; на стороне Битрикса он сохраняется как внешний код элемента (XML_ID).

Если этот код «плывёт» — например, при перезаливке номенклатуры в МойСклад у товаров поменялись идентификаторы, — обмен перестаёт узнавать старые товары и создаёт дубли. Каталог распухает копиями, ломаются ссылки, страдает SEO. Поэтому стабильность идентификаторов — то, за чем следят в первую очередь.

Что с чем связывается

Сущность МойСкладОбъект в 1С-БитриксКлюч связи
Папка (группа) товаровРаздел инфоблокаИдентификатор папки → XML_ID раздела
Товар (product)Элемент инфоблока товаровИдентификатор товара → XML_ID элемента
Модификация (variant)Торговое предложениеИдентификатор модификации → XML_ID предложения
Атрибут / характеристикаСвойство инфоблокаПо имени/коду свойства, тип согласован
Тип цены (pricetype)Тип цены каталогаСопоставление один к одному
Склад (store)Склад БитриксаСопоставление складов
Заказ (customerorder)Заказ модуля магазинаВнешний код заказа в обе стороны

Что важно проверить по идентификаторам до и во время обмена: у разделов, товаров и модификаций есть стабильные коды, которые не меняются между обменами; при переносе каталога идентификаторы сохраняются или явно сопоставляются со старыми; на тестовом обмене повторный сеанс обновляет товары, а не плодит дубли. Отдельно согласуйте маппинг атрибутов: имя и тип свойства в Битриксе должны заранее соответствовать атрибуту МойСклад, иначе характеристики приедут «не туда» или строкой.

МойСклад 1С-Битрикс Папка (группа) Раздел инфоблока Товар (product) Элемент каталога Модификация (variant) Торговое предложение Склад (store) Склад каталога Связь по стабильным идентификаторам (XML_ID)
Схема: каждая сущность МойСклад связывается со своим объектом в Битриксе по стабильному идентификатору — так повторный обмен обновляет данные, а не плодит дубли.

Вебхуки против расписания

Есть два принципиальных способа поддерживать данные в актуальном состоянии: спрашивать МойСклад по расписанию (pull) или получать уведомления о событиях по вебхукам (push). Их часто противопоставляют, но на практике лучший результат даёт комбинация.

Вебхуки: реакция на событие

Вебхук — это уведомление, которое МойСклад отправляет на заданный адрес сайта, когда с сущностью что-то происходит: товар создан, изменён, удалён, изменился остаток или заказ. Сайт принимает вебхук и реагирует почти в реальном времени: подтягивает изменённые данные и обновляет каталог или заказ. Это хорошо для быстро меняющихся данных — остатков и статусов заказов.

Минус вебхуков — они не дают стопроцентной гарантии доставки. Если сайт в момент события был недоступен, вебхук может не дойти, и данные разойдутся. Поэтому на одних вебхуках обмен не строят.

Расписание: периодический опрос

Опрос по расписанию — это агент Битрикса или задача cron, которая раз в N минут обращается к API МойСклад и подтягивает изменения. Он предсказуем и надёжен: даже если вебхук потерялся, следующий сеанс опроса всё равно заберёт актуальные данные. Минус — задержка: между сеансами данные на сайте немного «отстают».

Рабочая схема — гибрид. Оперативные данные (остатки, статусы заказов) держат на вебхуках для скорости, а поверх ставят «сверочный» полный обмен по расписанию раз в сутки в тихое время. Вебхуки дают реактивность, расписание страхует от пропусков и устраняет накопленные расхождения. Так витрина и учёт не расходятся даже при сбоях связи.
Вебхуки (push) Событие в МойСклад → мгновенно на сайт Быстро, но без гарантии доставки Расписание (pull) Опрос API каждые N минут Надёжно, страхует от пропусков
Схема: вебхуки дают мгновенную реакцию на событие, расписание надёжно опрашивает API и подстраховывает. В рабочем обмене их сочетают.

Частота обмена: что как часто гонять

Не нужно (и вредно) гонять весь каталог каждые пять минут — это упрётся в лимиты API и нагрузит обе системы без пользы. Рациональнее разнести обмен по типам данных и их «скоропортящести».

Такое разделение снимает нагрузку: тяжёлый полный обмен идёт раз в сутки, а лёгкие частые сеансы (остатки, статусы) почти не нагружают ни API, ни сайт. Заодно это бережёт лимиты API МойСклад, о которых ниже.

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

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

Идемпотентность: перезапуск без вреда

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

Что должен уметь обмен при сбоях

Если обмен всё же сломался, общий порядок такой: посмотреть лог последнего сеанса и найти ошибку, проверить доступность API и токен, убедиться, что не упёрлись в лимиты, и перезапустить проблемную пачку. Благодаря идемпотентности повторный прогон безопасен.

Лимиты API и производительность обмена

МойСклад — облачный сервис, и его API защищён ограничениями: нельзя слать сколько угодно запросов сколь угодно часто. При превышении темпа сервис отвечает ошибкой и просит снизить частоту. Поэтому обмен проектируют экономно по числу обращений.

Приёмы бережного обмена

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

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

Чем это отличается от обмена с 1С по CommerceML

Если вы знакомы с обменом Битрикса и 1С, полезно увидеть разницу явно. Задачи одинаковые — товары, остатки, цены, заказы, — но транспорт и механика другие.

КритерийМойСклад (REST API)1С (CommerceML)
ТранспортHTTP-запросы, JSONФайлы XML, пакетный обмен
Где живёт учётОблако провайдераОбычно коробка на сервере клиента
Инициатор обменаСайт обращается к API; МойСклад шлёт вебхуки1С «толкает» пакеты на адрес сайта
Реакция на событиеВебхуки почти в реальном времениТолько по сеансу обмена
Штатность в БитриксеЧерез модуль Маркетплейса или свой обменВстроено в модуль «Интернет-магазин»
Гибкость маппингаВысокая, задаётся при разработкеОграничена правилами выгрузки 1С
Единица вариантаМодификация (variant)Характеристика номенклатуры

Практический вывод: с 1С обмен «из коробки» и файловый, с МойСклад — через API и более «живой». Ни один не лучше в вакууме — выбор диктует то, где вы ведёте учёт. А иногда обе связки работают вместе: 1С и сайт по CommerceML, МойСклад и сайт по API, если системы делят между собой роли. Про обмен с 1С у нас есть отдельное подробное руководство — интеграция магазина с 1С по CommerceML, а общий обзор задач интеграций собран в рубрике «Интеграции».

Пошаговая настройка интеграции

Когда способ выбран и данные в МойСклад приведены в порядок, настройка сводится к понятной последовательности. Часть шагов делается в МойСклад, часть — на сайте.

На стороне МойСклад

  1. Наведите порядок в номенклатуре. Товары разложены по папкам, без дублей и «мусорных» позиций; заполнены наименование, артикул, единица измерения, цены и характеристики.
  2. Настройте модификации. Товары с вариантами заведены как товар плюс модификации (а не отдельными позициями), у характеристик единообразные значения.
  3. Проверьте типы цен и склады. Заведены нужные типы цен (розница, опт) и определены склады, остатки которых уходят на сайт.
  4. Заведите пользователя интеграции. Отдельный пользователь с нужными правами; получите для него токен доступа к API.
  5. Настройте вебхуки. Включите уведомления по нужным событиям (остатки, заказы, товары) на адрес обработчика сайта.

На стороне сайта (1С-Битрикс)

  1. Проверьте модуль «Интернет-магазин». Каталог реализован на инфоблоке с торговым каталогом и торговыми предложениями.
  2. Подготовьте свойства и типы цен. Заведите свойства инфоблока под атрибуты МойСклад (правильных типов) и типы цен под цены МойСклад.
  3. Установите модуль обмена или подключите свой. Пропишите токен, укажите соответствие каталога, складов, типов цен и правила маппинга модификаций.
  4. Настройте обработчик вебхуков. Адрес, который принимает уведомления МойСклад и обновляет данные; защитите его от посторонних обращений.
  5. Задайте расписание. Полный сверочный обмен — ночью, цены и остатки — чаще, заказы — почти в реальном времени.

Первый пробный обмен

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

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

Безопасность: токены и доступы

Через API на сайт приходит каталог, а обратно уходят заказы с персональными данными покупателей. Поэтому канал обмена защищают так же серьёзно, как и админку. Базовые меры:

Это не «паранойя», а нормальная гигиена: токен API — такой же ключ от системы, как пароль администратора. Юридические аспекты работы с персональными данными покупателей в заказах — отдельная тема; по ней лучше свериться с вашим юристом и требованиями законодательства.

Мини-кейс: магазин на МойСклад

Чтобы всё вышесказанное не осталось теорией, коротко опишем типичный для нас сценарий (детали обобщены, без названий клиентов — по нашей редполитике мы не раскрываем проекты без согласия).

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

Задача. Сделать МойСклад единым источником товаров, остатков и цен, настроить автоматический обмен и двустороннюю синхронизацию заказов, не уронив скорость витрины.

Решение. Сначала навели порядок в номенклатуре МойСклад и перевели варианты в модификации. Затем согласовали маппинг: папки → разделы, товары → элементы, модификации → торговые предложения, атрибуты → свойства нужных типов под умный фильтр. Настроили обмен по API с постраничной выгрузкой, повесили вебхуки на остатки и заказы, а поверх — сверочный полный обмен ночью. Заказы с сайта стали создаваться в МойСклад сразу после оформления, статусы отгрузки — возвращаться в личный кабинет.

Результат. Каталог стал вестись в одном месте, наличие на витрине перестало расходиться с учётом, а заказы поехали в МойСклад без ручного переноса. Точные цифры по каждому проекту разные и зависят от исходного состояния данных, поэтому обещать «ускорение в N раз» было бы некорректно — но снятие ручной рутины и расхождений по остаткам клиенты отмечают сразу.

Частые ошибки при интеграции с МойСклад

Большинство проблем повторяются из проекта в проект. Зная их заранее, вы сэкономите дни отладки:

Чек-лист перед запуском обмена

Короткий список, по которому удобно свериться до того, как включить обмен на боевом сайте:

Когда интеграция нужна, а когда нет

Интеграция с МойСклад — не самоцель. Полезно честно понимать, когда она окупается, а когда можно обойтись проще.

Когда обмен точно нужен

Когда можно повременить

И обратная сторона ожиданий: обмен переносит данные, но не наводит в них порядок и не принимает за вас бизнес-решения. Если в МойСклад бардак — дубли, пустые описания, кривые характеристики, — ровно это приедет на сайт. Структуру каталога, ценовую политику и продающие тексты по-прежнему определяете вы; обмен лишь убирает рутину и расхождения.

Вывод

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

Сделайте подготовку как следует, отладьте первый обмен на копии, разнесите данные по расписанию и подстрахуйте вебхуки сверочным обменом — и магазин перестанет жить «в двух системах». Витрина будет показывать актуальные цены и остатки, а заказы окажутся в МойСклад без ручного переноса. Это и есть та автоматизация, ради которой затевают интеграцию.

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

Чем интеграция с МойСклад отличается от обмена с 1С по CommerceML?

МойСклад — облачная учётная система, и обмен с ней идёт по REST API в формате JSON: сайт сам обращается к API и запрашивает или отправляет данные, а на события МойСклад может присылать вебхуки. Обмен с 1С по CommerceML — это файловый пакетный протокол на XML, встроенный в модуль «Интернет-магазин» и типовые конфигурации. У МойСклад штатного CommerceML нет, поэтому интеграцию делают через готовый модуль из Маркетплейса или через собственный обмен по API. По сути это другой транспорт при тех же задачах: товары, остатки, цены и заказы.

Можно ли использовать МойСклад и 1С одновременно?

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

Как в Битриксе показать модификации товара из МойСклад?

Модификации МойСклад (варианты одного товара по характеристикам — размер, цвет, объём) сопоставляются с торговыми предложениями инфоблока в Битриксе. Родительский товар МойСклад становится карточкой-товаром, а его модификации — торговыми предложениями под ней. Чтобы это собралось в карточку с выбором варианта, а не в россыпь отдельных позиций, при настройке обмена характеристики модификаций маппятся на свойства торговых предложений, а связь товар→модификация переносится по стабильным идентификаторам.

Что использовать для обновления остатков — вебхуки или расписание?

Обычно комбинацию. Вебхуки МойСклад присылают уведомление о событии (например, изменилась отгрузка или остаток), и сайт реагирует почти в реальном времени — это хорошо для быстро расходящегося товара. Расписание (периодический опрос API по агенту или cron) страхует от пропущенных вебхуков и подтягивает данные пакетно. На практике остатки и заказы держат на вебхуках плюс «сверочный» полный обмен по расписанию раз в сутки, чтобы гарантированно устранить расхождения.

Передаются ли заказы с сайта обратно в МойСклад?

Да, обмен двусторонний. Заказ, оформленный на сайте, создаётся в МойСклад как «Заказ покупателя» через REST API: подставляются контрагент, позиции, склад, цена и комментарий. Дальше менеджер работает с заказом в МойСклад — резервирует товар, оформляет отгрузку. Изменения статуса и факта отгрузки возвращаются на сайт, и покупатель видит актуальное состояние заказа в личном кабинете. Важно связать позиции заказа с товарами и модификациями по идентификаторам, иначе заказ уедет «без товаров».

Какие ограничения у API МойСклад стоит учитывать?

МойСклад ограничивает частоту обращений к API: при слишком частых запросах сервис отвечает ошибкой и просит снизить темп. Поэтому обмен проектируют так, чтобы не «долбить» API по одному товару, а использовать пакетную выгрузку, фильтры, постраничную навигацию и разумные интервалы. Также есть ограничения на объём одного ответа, поэтому большой каталог выгружают страницами. Конкретные значения лимитов уточняйте в актуальной документации МойСклад — они могут меняться и зависят от тарифа.

Что делать, если обмен упал на середине большого каталога?

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

Нужен ли отдельный сервис-прослойка между сайтом и МойСклад?

Не всегда. Для типового магазина хватает готового модуля из Маркетплейса Битрикс или обмена напрямую по API. Промежуточный сервис (middleware) оправдан, когда систем несколько — сайт, МойСклад, маркетплейсы, CRM, — и нужно единое место, которое разруливает маппинг, очередь событий, повторные попытки и логи. Такой слой снимает нагрузку с API, сглаживает пики вебхуков и делает обмен предсказуемым. Но для одного магазина с одним складом он чаще избыточен.

Поделиться:

Свяжем ваш магазин с МойСклад без боли

Подготовим номенклатуру и маппинг, настроим обмен товарами, модификациями, остатками, ценами и заказами по API и вебхукам, проверим на копии и наладим расписание. Рассчитаем работу по вашему МойСклад и каталогу.

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

Основатель студии B2Bsite. С 2014 года команда настраивает обмен интернет-магазинов на 1С-Битрикс с учётными системами — 1С и МойСклад, проектирует каталоги и торговые предложения, связывает витрину с CRM, складом и маркетплейсами для среднего и крупного бизнеса.

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