Интеграция 1С-Битрикс с МойСклад (WMS)

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с МойСклад (WMS)
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с МойСклад (WMS)

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

API МойСклад и точки интеграции

МойСклад предоставляет REST API на базе JSON-API (стандарт JSON:API). Базовый URL: https://api.moysklad.ru/api/remap/1.2/. Аутентификация — Bearer-токен или Basic Auth.

Основные сущности, с которыми работает интеграция:

  • entity/product — товары (без модификаций)
  • entity/variant — модификации (торговые предложения в терминах Битрикс)
  • entity/customerorder — заказы покупателей
  • entity/demand — отгрузки
  • entity/stock — остатки (только чтение через отчёт)

Получение остатков по всем складам: GET /report/stock/all?groupBy=variant — возвращает JSON с полями stock (свободный остаток), reserve (резерв), inTransit (в пути).

Самая сложная часть: синхронизация модификаций

В 1С-Битрикс товарные предложения (модификации) хранятся в b_catalog_sku и связаны с родительским товаром через IBLOCK_ID торговых предложений. В МойСклад это variant с ссылкой на product.

Проблема возникает при первичной загрузке: нужно правильно связать variant.id из МойСклад с ID торгового предложения в Битрикс. Без таблицы маппинга каждый запуск синхронизации будет пытаться создать дубли. Храним соответствие в отдельной таблице custom_moysklad_mapping (или в свойстве инфоблока MOYSKLAD_ID).

При обновлении остатков модификаций нужно сначала получить variant.id → найти в таблице маппинга соответствующий ID торгового предложения → обновить b_catalog_product для этого предложения.

// Обновление остатка торгового предложения
\Bitrix\Catalog\ProductTable::update($offerBitrixId, [
    'QUANTITY' => $stockData['stock'],
    'QUANTITY_RESERVED' => $stockData['reserve'],
]);
\Bitrix\Catalog\Catalog::clearProductCache($offerBitrixId);

Передача заказов в МойСклад

Новый заказ в Битрикс → создание customerorder в МойСклад. Минимальный набор полей:

  • organization — ссылка на организацию продавца (обязательна)
  • agent — покупатель (counterparty в МойСклад), создаётся автоматически или маппится по email
  • positions — позиции заказа с ссылками на variant или product и количеством
  • vatEnabled, vatIncluded — настройки НДС должны совпадать с настройками организации

Частичная отгрузка — сценарий, который ломает простые интеграции. Заказ на 5 позиций, отгрузили 3. В МойСклад создаётся demand с 3 позициями, связанный с customerorder. Статус заказа в Битрикс должен перейти в «Частично отгружен», а не в «Выполнен». Это обрабатывается через вебхук МойСклад на событие создания demand — сравниваем demand.positions с customerorder.positions и выбираем нужный статус Битрикс.

Вебхуки МойСклад

МойСклад поддерживает вебхуки для событий: CREATE, UPDATE, DELETE по любой сущности. Подписка:

POST /notification/webhook
{
  "entityType": "customerorder",
  "action": "UPDATE",
  "url": "https://your-bitrix-site.ru/api/moysklad/webhook/"
}

На стороне Битрикс создаём контроллер (наследник \Bitrix\Main\Engine\Controller) или простой init.php-обработчик. Важно вернуть HTTP 200 в течение 3 секунд — МойСклад считает вебхук неудавшимся если ответ не пришёл вовремя, и ретраит его.

Типичные грабли

Лимиты API. МойСклад ограничивает запросы: 45 запросов в секунду на бесплатном тарифе, 100 на платных. При массовом обновлении остатков (1000+ позиций) добавляем usleep(100000) между пакетами.

Разница часовых поясов. МойСклад хранит даты в UTC+3. Битрикс работает в серверном часовом поясе. При сравнении дат синхронизации («что изменилось с последнего запуска») учитываем смещение.

Удалённые товары. Если товар удалён из МойСклад, он не появится в ответе /entity/product. Битрикс об удалении не узнает. Нужна периодическая полная сверка или проверка через archived: true.

Ориентиры по срокам

Сценарий Срок
Односторонняя синхронизация остатков 1–2 недели
Двусторонний обмен заказами и остатками 3–6 недель
Полная синхронизация с вебхуками и частичными отгрузками 6–10 недель

Стоимость рассчитывается индивидуально после анализа номенклатуры, схемы складов и бизнес-процессов обработки заказов.