Інтеграція 1С:Підприємства з веб-сайтом
Інтеграція веб-сайту з 1С — це завдання, складність якого часто недооцінюється. 1С — це не просто база даних, а складна облікова система з власною логікою бізнес-процесів, конфігураціями, які сильно відрізняються між клієнтами, та інфраструктурними обмеженнями (часто працює в локальній мережі підприємства).
Архітектурні варіанти інтеграції
Варіант 1: 1С як мастер даних 1С зберігає актуальні дані (залишки, ціни, номенклатуру), веб-сайт періодично синхронізується. Підходить, якщо 1С — основна облікова система, а веб-сайт — просто вітрина.
Варіант 2: Двостороння синхронізація Замовлення створюються на веб-сайті й передаються в 1С. Оновлення даних надходять з 1С на веб-сайт. Вимагає ретельної логіки розв'язання конфліктів.
Варіант 3: Веб-сайт як мастер для замовлень Веб-сайт управляє замовленнями, 1С отримує їх для обліку та виробництва/відправлення. Дані каталогу надходять з 1С.
Методи підключення до 1С
Веб-сервіси 1С (SOAP/REST) — 1С публікує HTTP-сервіс через веб-сервер (Apache/IIS). Веб-сайт звертається до нього безпосередньо. Вимагає публікації 1С на зовнішню адресу або VPN.
Проміжна шина (брокер) — рекомендуємий варіант для production. RabbitMQ або Redis Queue між веб-сайтом і агентом 1С. Агент — окремий процес (Node.js, Go, Python), який читає чергу й викликає COM-об'єкт 1С або його HTTP-сервіс.
Веб-сайт → RabbitMQ (exchange: site_to_1c) → агент 1С → 1С
1С → RabbitMQ (exchange: 1c_to_site) → PHP Worker → Веб-сайт
CommerceML (1С→веб-сайт) — XML-формат експорту каталогу з 1С. Детальніше в описі CommerceML-інтеграції.
1С:Коннектор для веб-сайтів — готовий модуль для 1C-Bitrix. Для інших CMS — немає готового рішення, потрібна розробка.
Синхронізація номенклатури
З 1С експортуються: артикул, найменування, опис, характеристики (колір, розмір), одиниця виміру, ПДВ, зображення (посилання або base64), штрихкоди.
Формат експорту: JSON через REST API 1С або XML за протоколом CommerceML.
// Обробка отриманої номенклатури
foreach ($nomenclature as $item) {
Product::updateOrCreate(
['sku_1c' => $item['code']],
[
'name' => $item['name'],
'description' => $item['description'],
'price' => $item['price'],
'stock' => $item['stock']
]
);
}
Синхронізація залишків і цін
Залишки й ціни змінюються частіше, ніж номенклатура. Для них потрібна частіша синхронізація (кожні 15–30 хвилин). Оптимально — інкрементальний експорт: тільки змінені позиції з моменту останньої синхронізації.
-- У 1С: експортувати тільки змінені з останньої синхронізації
SELECT Номенклатура.Код, ОстаткиТоварів.КоличествоОстаток
FROM РегістрНакопління.ТовариНаСкладах.Остатки AS ОстаткиТоварів
WHERE ОстаткиТоварів.Період > &ПоследняяСинхронізація
Передача замовлень у 1С
Замовлення передається в 1С після підтвердження й оплати. Формат залежить від конфігурації 1С. Для "Управління торгівлею" — об'єкт "Замовлення клієнта":
{
"Номер": "SITE-12345",
"Дата": "2024-03-15T10:30:00",
"Контрагент": {
"ПІБ": "7712345678",
"Найменування": "ІП Іванов"
},
"Товари": [
{
"Артикул": "ART-001",
"Кількість": 2,
"Ціна": 1500.00,
"Сума": 3000.00,
"СтавкаПДВ": "20%"
}
],
"СумаДокумента": 3000.00,
"Коментар": "Доставка кур'єром"
}
Довідники: контрагенти, склади, організації
Перед передачею замовлення може знадобитися створення або пошук контрагента в 1С за ПІБ або електронною поштою. Це окремий запит до сервісу 1С. Якщо контрагент не знайдено — створюється новий.
Обробка помилок і моніторинг
1С — система з обмеженою відмовостійкістю. Типові помилки:
- 1С заблокована іншим користувачем (монопольний режим)
- Порушення референціальної цілісності (товар у замовленні не існує в 1С)
- Timeout при обробці великих обсягів даних
Усі операції логуються в sync_log з деталями запиту й помилок. Сповіщення про серію помилок — у Telegram/email.
Безпека
1С не повинна бути прямо доступна з інтернету. Рекомендується:
- VPN або виділена мережа між сервером веб-сайту й 1С
- Брокер повідомлень як єдина точка контакту
- IP-whitelist для REST-сервісу 1С
Терміни розробки: 6–10 тижнів залежно від конфігурації 1С, обсягу даних та обраного методу інтеграції.







