Интеграция сайта с 1С: четыре способа и их последствия
1С почти никогда не готова отвечать на запросы сайта в реальном времени. Разбираем четыре схемы обмена и объясняем, какая когда оправдана.

«Свяжите сайт с 1С» — одна из самых частых задач и одна из самых недооценённых по трудоёмкости. Причина в том, что 1С обычно не проектировалась как источник данных для внешнего мира: она живёт на сервере в офисе, обслуживает бухгалтерию и болезненно реагирует на постоянные запросы извне.
Прежде чем выбирать способ обмена, полезно ответить на три вопроса: какие данные нужны сайту, с какой задержкой они допустимы и кто главный владелец каждой сущности. Ответы определяют схему.
Четыре рабочие схемы
| Схема | Задержка | Нагрузка на 1С | Трудоёмкость |
|---|---|---|---|
| Файловый обмен по расписанию | от 15 минут | Низкая, пакетно | 40–80 часов |
| CommerceML для товаров и заказов | от 10 минут | Средняя | 60–120 часов |
| HTTP-сервисы 1С по запросу | секунды | Высокая, зависит от нагрузки сайта | 80–160 часов |
| Промежуточная база плюс очередь | секунды на чтение | Низкая, обмен пакетный | от 160 часов |
Четвёртая схема выглядит самой дорогой и при этом чаще всего оказывается правильной для магазина с ощутимым трафиком. Сайт читает данные из своей базы и отвечает быстро всегда, а 1С обменивается с ней в спокойном режиме и не участвует в обслуживании покупателей.
Промежуточная база на практике
Идея простая: сайт работает со своей базой, где лежит витрина — товары, цены, остатки, статусы заказов. Обмен с 1С идёт в обе стороны через очередь: из 1С приходят изменения номенклатуры, в 1С уходят заказы. Каждая сторона имеет собственный владелец данных, и они не пересекаются.
export async function POST(request: Request) {
const signature = request.headers.get("x-exchange-signature")
const body = await request.text()
if (!verifySignature(body, signature)) {
return new Response("Подпись не совпадает", { status: 401 })
}
// Сначала фиксируем сырую выгрузку: если разбор упадёт,
// данные не потеряются и обмен можно повторить без 1С
const batch = await db.insert(exchangeBatches).values({
payload: body,
source: "1c",
status: "received",
}).returning({ id: exchangeBatches.id })
await queue.enqueue("exchange.process", { batchId: batch[0].id })
// 1С получает быстрый ответ и не держит соединение
return Response.json({ accepted: true, batchId: batch[0].id })
}Приём и обработка обязательно разделяются. Если разбирать выгрузку в том же запросе, любая ошибка в одной строке приведёт к тому, что 1С получит сбой и повторит выгрузку целиком — а вы не узнаете, на чём именно всё сломалось.
Что ломается чаще всего
- Изменение состава полей в выгрузке без предупреждения — обмен молча начинает терять данные
- Товары-дубли из-за смены идентификатора в 1С: сопоставление должно идти по неизменному ключу
- Часовые пояса: даты заказов уезжают на несколько часов и путают отчётность
- Ночной перезапуск 1С посреди обмена — нужны повторные попытки и защита от дублей
- Ручные правки в 1С задним числом: витрина расходится с учётом, а причина не видна
Отсюда практическое требование, которое стоит закладывать в договор: журнал обменов с возможностью посмотреть, что именно пришло, когда и с каким результатом. Без него разбор расхождений превращается в переписку между разработчиком сайта и специалистом по 1С, где никто не может ничего доказать.
Как выбрать схему
- Меньше 500 товаров и заказов до десяти в день — файловый обмен по расписанию
- Магазин с типовой конфигурацией — CommerceML, его поддерживают обе стороны
- Нужны данные о клиенте в реальном времени, например баланс — HTTP-сервисы с кэшем и лимитом запросов
- Заметный трафик, акции, несколько каналов продаж — промежуточная база с очередью
Частые вопросы
- Сколько стоит интеграция сайта с 1С
- Файловый обмен по расписанию — от 40 часов работы, обмен через промежуточную базу с очередью — от 160. Точная оценка зависит от того, насколько конфигурация 1С доработана: типовая обменивается по готовым правилам, сильно переписанная требует разбора каждой сущности.
- Нужен ли специалист по 1С с нашей стороны
- Практически всегда. Мы отвечаем за сторону сайта и формат обмена, но выгрузку и правила в самой 1С должен настраивать тот, кто ведёт вашу конфигурацию. Совместная работа экономит недели переписки.
- Можно ли синхронизировать остатки в реальном времени
- Технически да, практически это опасно: сайт становится зависим от доступности 1С. Мы обычно обновляем остатки каждые несколько минут и дополнительно проверяем наличие в момент оформления заказа — этого достаточно, чтобы не продать отсутствующий товар.
Похожая задача в вашем проекте?
Разберём вашу ситуацию и пришлём оценку по этапам — без обязательств и общих слов.
Обсудить задачу

