связать всё вместе
Интеграции и обмен данными между системами
Связать системы так, чтобы данные ходили сами: обмен по событию, с очередью, повтором при сбое и журналом. Вместо ручного переноса и выгрузки в файл.
Данные, которые сотрудники руками переносят из системы в систему, — это не только потерянное время. Это ещё и расхождения, которые обнаруживаются позже всего: цена в счёте не та, остаток на сайте не тот, заявка потерялась между формой и CRM. Ручной перенос всегда выглядит дешевле автоматического обмена ровно до того момента, когда кто-то начинает считать стоимость ошибок и сверок.
При этом интеграция ломается не в тот день, когда её написали. Она ломается через полгода: у смежной системы выросли объёмы, поменялся формат поля, сменился ключ доступа, сервер был недоступен ровно те десять минут, когда ушёл заказ. Поэтому надёжный обмен — это не «код, который вызывает чужой API», а несколько вещей вокруг: очередь, чтобы не потерять сообщение; повтор с нарастающей паузой, чтобы пережить чужой простой; защита от повторной обработки, чтобы один заказ не поехал дважды; и журнал, по которому видно, что именно ушло, что вернулось и где остановилось.
Второе место, где ошибаются чаще всего, — направление и источник правды. Пока не решено, какая система главная по цене, какая по остатку, а какая по статусу заказа, любой двусторонний обмен рано или поздно устраивает войну: одна система перезаписывает другую, обе считают себя правыми. Поэтому разговор начинается не с API, а с таблицы: какие сущности синхронизируем, в какую сторону по каждому полю, что происходит при конфликте и что считается признаком совпадения записей — ИНН, артикул, внешний идентификатор.
Технически способов два, и выбор между ними стоит денег. Выгрузка файлом по расписанию — дёшево, просто и означает, что данные всегда отстают на период между запусками, а расхождения ловятся вручную. Обмен по событию — дороже в разработке и даёт актуальные данные, журнал и понятное поведение при сбое. Для остатков и заказов почти всегда нужен второй, для справочников часто хватает первого. Первая работающая связка выходит за 2 недели, дальше подключаются остальные системы по одной.
Что здесь ломается
- Заявку с сайта переносят в CRM руками, и часть заявок теряется на этом шаге.
- Остаток на сайте обновляется раз в сутки, поэтому продаётся то, чего уже нет.
- Обмен «сломался» — а когда именно и на какой записи, выяснить нечем: логов нет.
- Один заказ уехал в учёт дважды, потому что вебхук пришёл повторно.
- Смежная система была недоступна десять минут, и эти десять минут данных просто исчезли.
- Две системы перезаписывают друг друга, и никто не может сказать, где настоящая цена.
Где обмен ломается через полгода после запуска
| Что случается | Как обычно сделано | Как должно быть |
|---|---|---|
| Смежная система недоступна | Запрос упал, данные потеряны | Очередь и повтор с нарастающей паузой: уйдёт, когда поднимется |
| Вебхук пришёл дважды | Две записи в учёте | Ключ операции: повтор распознаётся и не создаёт второй заказ |
| Поменялся формат поля | Молча пишется мусор | Проверка на входе, стоп с понятной ошибкой вместо тихой порчи |
| Обе системы правят одно поле | Кто последний, тот и прав | Источник правды по каждому полю зафиксирован заранее |
| Записи не сопоставляются | Сверка глазами по названию | Правило совпадения: ИНН, артикул, внешний идентификатор |
| Объёмы выросли | Выгрузка не успевает за ночь | Передаются изменения, а не весь справочник целиком |
| Никто не знает, работает ли обмен | Узнают от клиента | Журнал и уведомление о сбое раньше, чем заметит бизнес |
Что входит
- карта обмена: какие сущности, в какую сторону, что источник правды
- обмен с 1С: номенклатура, цены, остатки, заказы, документы
- интеграции с CRM — amoCRM, Битрикс24 и другими через их API
- платежи и эквайринг, сверка поступлений со статусами заказов
- мессенджеры и уведомления: Telegram, email, статусы обеим сторонам
- приём и отправка вебхуков с защитой от повторной обработки
- публичный API вашего продукта: версии, ключи, ограничение частоты
- очереди, повторы и фоновые задачи вместо синхронных вызовов
- журнал обмена и уведомления о сбоях — до того, как заметит бизнес
Для кого
тем, у кого данные живут в нескольких системах и переносятся вручную: сайт и 1С, CRM и учёт, заявки с форм и мессенджеров, платежи и заказы. Особенно там, где расхождение между системами уже стоило денег.
Когда не ко мне: если обе системы коробочные и между ними есть готовый коннектор от вендора — начните с него, это дешевле и быстрее любой разработки. Разработка нужна там, где готового коннектора нет, где он не умеет вашу логику или где связывать надо вашу собственную систему.
Цена и сроки: от 130 000 ₽ Обмен 1С с сайтом: что синхронизируется и как
Частые вопросы
- Сколько стоит одна интеграция?
- Смету двигают три вещи: качество чужого API, число сущностей и требования к актуальности. Односторонняя выгрузка справочника раз в сутки и двусторонний обмен заказами и остатками в реальном времени различаются в разы при одинаковом списке систем. Вилка и разбор того, что двигает цену, — на странице стоимости интеграции; цена и срок фиксируются до начала работ.
- А если у смежной системы нет API?
- Тогда смотрим, что есть: обмен файлами по расписанию, выгрузка из интерфейса, прямой доступ к базе на чтение. Все три хуже полноценного API, и я говорю об этом прямо, а не выдаю обходной путь за решение. Чего я не делаю — так это разбора чужого интерфейса роботом: такая связка ломается при первом же обновлении смежной системы и без предупреждения.
- Что будет, когда 1С или CRM обновятся?
- Обмен построен так, чтобы поломка была заметной, а не тихой. Данные проверяются на входе: если пришло не то, что ожидалось, обмен останавливается с понятной ошибкой и уведомлением, а не пишет мусор в вашу систему. Это принципиальный выбор — лучше остановиться и разобраться, чем полгода спустя выяснять, откуда в базе взялись странные цены.
- Можно автоматизировать процесс целиком, а не только обмен?
- Часто именно это и нужно. Обмен переносит данные, автоматизация принимает по ним решения: разобрать заявку, назначить ответственного, собрать документ, отправить уведомление, поднять флаг при отклонении. Это соседний раздел сайта, и там разобрано по процессам, что реально снимается с рук, а что только выглядит автоматизируемым.