Інтеграція 1С-Бітрікс з МійСклад (WMS)

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з МійСклад (WMS)
Середній
~1-2 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    880
  • 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
    631
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    781
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    681
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1010

Інтеграція 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 тижнів

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