МойСклад закрывает учёт товаров, закупки и отгрузки, а 1С-Битрикс отвечает за витрину и приём заказов. Задача интеграции — сделать так, чтобы карточки, остатки, цены и заказы жили в двух системах как единое целое, без ручного переноса и расхождений.
Что и в какую сторону синхронизируем
Прежде чем настраивать обмен, зафиксируйте, какая система является мастером для каждого типа данных. От этого зависит вся логика связки и порядок разрешения конфликтов.
| Данные | Мастер-система | Направление |
|---|---|---|
| Номенклатура, характеристики | МойСклад | МойСклад → Битрикс |
| Цены (розница, опт) | МойСклад | МойСклад → Битрикс |
| Остатки по складам | МойСклад | МойСклад → Битрикс |
| Заказы покупателей | Битрикс | Битрикс → МойСклад |
| Статусы отгрузки/оплаты | МойСклад | МойСклад → Битрикс |
В подавляющем большинстве магазинов номенклатура и учёт ведутся в МойСклад, а сайт — только точка приёма заказов. Каталог, цены и остатки едут на сайт, а заказы уходят обратно в учёт. Это стандартная и самая надёжная схема.
Способы связать Битрикс и МойСклад
Есть три рабочих подхода, и выбор зависит от бюджета, нестандартности каталога и требований к скорости обновления.
- Готовый модуль из Маркетплейса Битрикс — коробочное решение (например, класса «МойСклад: обмен товарами и заказами»). Ставится за пару часов, настраивается через мастер, покрывает типовые сценарии.
- Штатная интеграция на стороне МойСклад — в разделе «Приложения» МойСклад есть готовые коннекторы, которые тянут заказы и отдают остатки по API.
- Собственный обмен через JSON API 1.2 МойСклад — когда каталог с нетиповыми свойствами, много складов или нужна своя логика цен. Пишется модуль под проект.
https://api.moysklad.ru/api/remap/1.2. Авторизация по токену или Basic-логину. Лимит — 45 запросов за 3 секунды на аккаунт, это важно учитывать при массовой выгрузке.Подготовка обеих систем
До первого обмена приведите данные в порядок — иначе синхронизация размножит дубли.
- В МойСклад включите API: Настройки → Обмен данными → включить JSON API, создайте отдельного пользователя-интегратора и токен для него.
- Проверьте, что у товаров заполнен артикул или код — именно он станет ключом сопоставления с
XML_IDэлемента инфоблока Битрикс. - В Битрикс подготовьте инфоблок каталога с включённым модулем
catalog, заведите нужные типы цен (catalog_group) и склады (catalog_store). - Решите вопрос торговых предложений (SKU): если в МойСклад товар — это «модификации», в Битрикс им соответствует инфоблок предложений, привязанный к основному.
Настройка обмена: каталог, цены, остатки
Порядок настройки един для готового модуля и для самописного обмена.
- Подключение. Указываете токен МойСклад и привязываете целевой инфоблок каталога Битрикс.
- Маппинг свойств. Сопоставляете поля: наименование →
NAME, артикул →XML_ID, описание, бренд, категории (папки МойСклад → разделы инфоблока). - Цены. Каждый тип цены МойСклад (Розница, Оптовая) связываете с типом цены Битрикс.
- Остатки. Выбираете, отдавать общий остаток или по конкретным складам в
b_catalog_store_product. - Расписание. Обмен вешается на агент Битрикс или внешний cron:
*/15 * * * * php /home/bitrix/www/local/tools/ms_sync.php.
Первую выгрузку каталога всегда прогоняйте на тестовом инфоблоке и проверяйте 10–20 карточек вручную: категории, цены, изображения, привязку предложений.
Передача заказов обратно в МойСклад
Обратный поток настраивается через событие оформления заказа. В Битрикс это обработчик OnSaleOrderSaved (или OnSaleStatusOrderChange), который формирует документ «Заказ покупателя» в МойСклад через API.
- Позиции заказа сопоставляются по тому же артикулу, что и в каталоге.
- Покупатель заводится как контрагент (поиск по телефону/email, чтобы не плодить дубли).
- Способ доставки и оплаты пишутся в комментарий или в дополнительные поля документа.
- Обратно из МойСклад приходят статусы: «Отгружен», «Оплачен» — и меняют статус заказа на сайте.
Типичные ошибки и как их избежать
Проблемы почти всегда одинаковые, и почти все — из-за спешки на этапе подготовки.
| Симптом | Причина | Решение |
|---|---|---|
| Дубли товаров | Сменился или пустой артикул | Фиксировать XML_ID, чистить каталог перед запуском |
| Остатки «застыли» | Упал агент/cron или превышен лимит API | Мониторинг агентов, батчи по 100 позиций, паузы между запросами |
| Заказы не уходят | Ошибка авторизации или несопоставленная позиция | Логировать ответ API, обрабатывать 401/404 отдельно |
| Неверные цены | Перепутан тип цены при маппинге | Сверить catalog_group ↔ тип цены МойСклад |
Обязательно ведите лог обмена с ответами API — без него разбор инцидента превращается в гадание.
Итог
Рабочая связка Битрикс ↔ МойСклад строится в четыре шага: определить мастер-систему для каждого типа данных, подготовить артикулы и типы цен, настроить выгрузку каталога/остатков и обратную передачу заказов, добавить логи и мониторинг. Готовый модуль подходит для типового каталога, а под нестандартные свойства и много складов надёжнее собственный обмен на JSON API 1.2.
Мы в B2Bsite настраиваем такие связки под ключ: проектируем маппинг, разворачиваем обмен, закрываем идемпотентность и мониторинг, чтобы остатки и заказы не расходились. Если каталог сложный или систем больше двух — поможем собрать сквозную схему без дублей и потерь данных.
Частые вопросы
Можно ли обойтись без 1С, только МойСклад и Битрикс?
Да, это распространённая схема: МойСклад ведёт учёт и является мастером каталога, остатков и цен, а Битрикс — витриной и приёмником заказов. 1С в такой связке не нужна.
Как часто обновляются остатки?
Обычно раз в 10–15 минут по расписанию. При использовании вебхуков МойСклад обновление может быть почти мгновенным, но для большинства магазинов достаточно интервального обмена.
Что взять ключом сопоставления товаров?
Артикул или уникальный код МойСклад, который записывается в XML_ID элемента инфоблока Битрикс. Главное — не менять его после запуска обмена.
Поддерживаются ли торговые предложения и модификации?
Да. Модификации МойСклад маппятся на инфоблок торговых предложений Битрикс, привязанный к основному каталогу. Настройка немного сложнее, но полностью рабочая.
Уйдут ли в МойСклад заказы, оформленные до интеграции?
По умолчанию обмен передаёт новые заказы. Историю можно выгрузить разово отдельным скриптом, но чаще старые заказы оставляют в архиве Битрикс.
Готовый модуль или разработка под проект?
Для типового каталога с розничными и оптовыми ценами хватает готового модуля. Если много складов, нетиповые свойства или своя логика цен — надёжнее собственный обмен на API.
Что с лимитами API МойСклад?
Ограничение — около 45 запросов за 3 секунды на аккаунт. При массовой выгрузке нужно бить данные на батчи и делать паузы, иначе часть запросов вернёт ошибку.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.