Інтеграція OpenCart з 1С: покрокова інструкція

Як налаштувати двосторонню синхронізацію OpenCart з 1С: товари, ціни, залишки, замовлення. Способи інтеграції, типові помилки, вартість.

Що саме синхронізуємо

З 1С на сайт: товари (назва, опис, артикул, бренд), категорії, ціни (роздріб, опт, акції), залишки на складах, характеристики, зображення.

З сайту в 1С: замовлення з усіма деталями (склад, оплата, доставка), нові клієнти (картка контрагента), статуси замовлень.

Періодичність: товари і ціни — раз на годину або при змінах. Залишки — раз на 5-15 хвилин (критично для актуальності). Замовлення — миттєво при оформленні.

Спосіб 1: CommerceML 2 (стандарт)

CommerceML — це стандартний XML-формат обміну, який підтримують і 1С, і OpenCart. На стороні 1С є вбудована обробка для вивантаження. На OpenCart встановлюємо модуль приймача.

Як працює: 1С генерує XML файли з товарами і залишками, відправляє на сайт через HTTP POST. OpenCart парсить XML і оновлює базу. У зворотній бік сайт публікує XML з замовленнями, 1С їх забирає.

Плюси: працює "з коробки" в 1С, не треба програмувати на стороні 1С. Мінуси: повільний при великих обсягах (15 000+ товарів), складно зробити нетипові поля.

Підходить для: магазинів з типовою номенклатурою до 10 000 товарів і стандартним 1С УТ або Управління Торгівлею.

Спосіб 2: REST API (найгнучкіший)

OpenCart 4 має повноцінний REST API. У 1С пишемо обробку, яка читає документи "Поступление", "Цены", "Остатки" і відправляє PUT/POST запити на API сайту.

Плюси: реальний час (можна синхронізувати з затримкою 1-5 хвилин), гнучкі поля, можна відправляти тільки змінене (delta), легко логувати помилки.

Мінуси: треба програміст з досвідом 1С і REST. Перша інтеграція коштує $800-1500.

Підходить для: великих магазинів (50 000+ товарів), кастомних конфігурацій 1С, складних бізнес-процесів.

Спосіб 3: XML-обмін через FTP/SFTP

Просте рішення: 1С викидає XML файл (товари, залишки) на FTP сервер раз на N хвилин. На OpenCart cron-скрипт забирає файл і оновлює базу.

Плюси: дешево ($250-500), просто, працює без постійного з'єднання. Підходить навіть якщо 1С на закритій локальній мережі.

Мінуси: не реального часу. Залишки оновлюються з затримкою 5-30 хвилин. Замовлення з сайту в 1С потрапляють у такому ж режимі.

Підходить для: магазинів з невисокою динамікою (1-50 замовлень на день), де затримка 15 хв в залишках допустима.

Спосіб 4: SQL-міст

Найекстремальний випадок: підключаємо 1С напряму до бази даних OpenCart (MySQL/MariaDB). 1С робить SELECT/INSERT/UPDATE без проміжного XML/JSON.

Плюси: моментальна синхронізація, мінімальне навантаження, можна обмінюватись чим завгодно.

Мінуси: вимагає прямого мережевого з'єднання між сервером 1С і сервером сайту, складно тестувати, ризик колізій при паралельних оновленнях. Не рекомендую без досвідченого DBA.

Підходить для: масштабних e-commerce (100 000+ товарів, тисячі замовлень на день) з єдиною ІТ-командою.

Реальний приклад: Abertime

Магазин Abertime — каталог годинників на 15 000+ товарів. Використовуємо комбінацію REST API + XML.

Товари і ціни — REST API з 1С УТ 11.4 раз на годину, надсилається тільки delta (змінене). Близько 200-500 товарів за раз, не падає сервер.

Залишки — XML файл кожні 5 хвилин (тільки SKU + quantity), парсимо швидко.

Замовлення — миттєво через webhook, OpenCart → REST API → 1С Документ "Замовлення покупця" створюється за 3-5 секунд.

Загальна вартість інтеграції $1200, термін розробки 8 днів, працює стабільно вже понад рік.

Типові помилки і як їх уникнути

Що ламає інтеграцію в 80% випадків:

  • Артикул товару змінився в 1С — на сайті дублікат. Рішення: фіксований унікальний ID (GUID), артикул може мінятись
  • Категорії в 1С перейменовані — на сайті стара структура. Рішення: синхронізуємо по ID категорії, не по назві
  • Однакова назва товару з різними варіантами в 1С — на сайті 5 однакових товарів. Рішення: правильне використання Характеристик і Варіантів
  • Залишки мінусові (товар проданий в обхід 1С) — клієнт замовляє, але товару нема. Рішення: блокування замовлень при нулі або негативі
  • Кодування файлів UTF-8 vs Windows-1251 — кирилиця ламається. Рішення: фіксуємо UTF-8 з BOM на всіх етапах

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

Перевіряємо перед тим, як кидати інтеграцію в продакшн:

  • Тестове середовище з копією 1С і копією сайту — є?
  • Логи обміну збираються (запити, відповіді, помилки) — є?
  • Алерти на критичні помилки (Telegram, email) — є?
  • Бекапи бази 1С і бази OpenCart щодня — є?
  • Резервний канал зв'язку якщо API падає — є?
  • Інструкція для менеджерів що робити при розсинхроні — є?

Часті питання

Чи можна інтегрувати OpenCart з 1С Бухгалтерія, а не УТ?
Можна, але дорожче. 1С Бухгалтерія не призначена для торгівлі, тому товари там зберігаються інакше. Зазвичай рекомендую або переходити на 1С УТ, або поставити проміжний шар (наприклад, через КУБ або Servis Online).
Що зі знижками і акціями — синхронізуються?
Так. Стандартні види цін з 1С (роздріб, опт, акційна) — підтримуються більшістю модулів. Кастомні знижки за умовами (наприклад, "знижка для VIP клієнта 15%") — додатковий код $100-300.
Скільки навантаження це створює на 1С?
Якщо синхронізуємо delta (тільки змінене) — мінімальне, 1-3% CPU. Якщо повний обмін — піки до 50% під час вивантаження. Рекомендую робити повний обмін раз на ніч, delta — днем.
Що з обліком ПДВ і фіскальним чеком?
OpenCart передає в 1С: ставку ПДВ, суму без ПДВ, суму з ПДВ. Фіскальний чек генерується вже в 1С через підключений ПРРО (Checkbox, Vchasno.Caса). Інтеграція з фіскальним апаратом — окрема задача $300-800.
Чи можна синхронізувати з 1С Підприємство 7.7?
7.7 — застаріла платформа без сучасного API. Інтеграція тільки через XML-обмін, обмежена за функціями. Рекомендую переходити на 1С УТ 11 або БАС перш ніж робити інтеграцію.

Готові обговорити проєкт?

Безкоштовна консультація 15 хвилин. Розкажемо, що реально потрібно у вашому випадку, дамо орієнтовну ціну і терміни без зобов'язань.

Написати в Telegram