Интеграция систем: обмен данными между программами компании
В любой компании старше нескольких лет накапливается набор программ, каждая из которых когда-то решала отдельную задачу. Учет в 1С, продажи в CRM, склад в чем-то своем, заявки в почте, отчеты в Excel. Между ними ходит человек с выгрузками — и это самое дорогое место в компании, потому что он ходит каждый день.
Интеграция — это когда программы начинают обмениваться данными сами, а человек занимается тем, ради чего его нанимали.
Чем это не является
Слово используют широко, поэтому стоит сразу очертить.
- Не заменой систем. Задача не в том, чтобы все свести в одну программу. Обычно правильный ответ — оставить каждую там, где она работает, и наладить обмен.
- Не разовой выгрузкой. Скрипт, который раз в месяц перекладывает файл, — не интеграция. Интеграция включает расписание, обработку ошибок, повторы и сверку.
- Не соединением всего со всем. Каждая связь стоит денег в разработке и ломается при изменениях на той стороне. Связывают то, что реально нужно.
Как это устроено
Что обычно связывают
- CRM и учетную систему. Самая частая пара. Номенклатура, остатки и цены приходят из учета, сделка отдает счет и отгрузку, статус оплаты возвращается обратно.
- Сайт или кабинет и учет. Каталог, наличие, персональные цены, заказы, документы. Без этого сайт живет отдельной жизнью и устаревает.
- Склад и производство. Резервы, списания, движения между участками. Здесь важнее всего скорость: задержка в обмене означает неверные остатки.
- ЭДО и документы. Входящие и исходящие документы, статусы подписания, автоматическое создание записей в учете.
- Банк и платежи. Выписки, разнесение оплат по счетам, платежный календарь.
- Маркетплейсы и торговые площадки. Заказы, остатки, цены, статусы. Отдельная сложность — ограничения на частоту обращений и разные правила у каждой площадки.
- Оборудование и датчики. Весы, счетчики, станки, терминалы. Данные приходят потоком и требуют другого подхода, чем обмен документами.
Как мы делаем
- Рисуем карту данных. Какие сущности есть, в какой системе каждая живет, где источник правды. Это главный вопрос всего проекта: если для номенклатуры источников правды два, обмен будет ломаться вечно.
- Определяем направление и частоту. Что куда едет, в одну сторону или в обе, мгновенно или по расписанию. Двусторонний обмен в разы сложнее одностороннего, и его стоит применять только там, где он действительно нужен.
- Проектируем сопоставление. Как связать записи двух систем между собой, что делать с новыми, что с удаленными, как поступать при конфликте. Самая трудоемкая и самая недооцененная часть.
- Делаем обмен с журналом. Каждая операция записывается: что, когда, успешно или нет, с какой ошибкой. Без журнала разбор проблемы превращается в гадание.
- Добавляем сверку. Регулярный отчет: столько документов там, столько здесь, расхождение такое-то. Это то, что отличает надежный обмен от такого, который «вроде работает».
- Запускаем параллельно. Сначала обмен работает рядом с ручным способом, данные сверяются. Ручной способ отключается, когда расхождений нет несколько циклов подряд.
Отдельно проектируется поведение при сбое. Вторая система недоступна, ответила с ошибкой, ответила медленно, прислала мусор — на каждый случай нужно решение: повторить, отложить, пропустить, позвать человека. Интеграция без обработки сбоев не ломается только до первого обновления на той стороне.
Какими способами системы обмениваются
Технически вариантов немного, и выбор обычно определяется тем, что умеет та сторона.
Через интерфейс обмена
Система предоставляет способ запросить и записать данные программно. Самый надежный вариант: обмен идет по документированным правилам, ошибки понятны, изменения отслеживаются.
Уведомлением о событии
Та сторона сама сообщает, что что-то изменилось. Быстро и экономно, но требует надежного приема: если сообщение потерялось, данные разойдутся незаметно.
Файлами
Выгрузка и загрузка по расписанию. Выглядит архаично, но для многих учетных систем это единственный доступный путь — и при хорошей обработке ошибок он работает годами.
Прямо в базу
Последний вариант, когда других нет. Рискованно: обновление системы может сломать структуру. Применяем только на чтение и только когда согласовано с владельцем системы.
Особенности обмена с 1С
Это отдельная тема просто потому, что 1С стоит почти у всех.
Главное правило: 1С обычно остается источником правды по номенклатуре, контрагентам, остаткам и деньгам. Пытаться завести эти справочники где-то еще — прямой путь к постоянным дублям и расхождениям.
Технически обмен делается несколькими способами, и выбор зависит от конфигурации, версии и того, типовая она или дописанная. Типовая конфигурация дает стандартные возможности, серьезно переписанная — требует разбора того, что там на самом деле происходит. Это стоит выяснить до оценки сроков: разница может быть в разы.
Практический момент: обмен не должен мешать работе бухгалтерии. Тяжелые выгрузки ставятся на ночь, частые операции делаются небольшими порциями, а нагрузка на базу проверяется на боевых объемах, а не на копии с сотней документов.
Где здесь искусственный интеллект
- Сопоставление справочников. При первом связывании систем номенклатура и контрагенты почти никогда не совпадают по названиям. Модель находит соответствия, человек подтверждает. Руками это недели монотонной работы.
- Разбор неструктурированного входа. Заказы приходят письмом в свободной форме или файлом от каждого клиента по-своему. Модель приводит это к единому виду, и интеграция становится возможной там, где раньше сидел оператор.
- Поиск причины расхождений. Сверка показала разницу — модель разбирает выгрузки с двух сторон и объясняет, где именно разошлось, вместо ручного сопоставления таблиц.
- Работа с чужой документацией. Разбор описания чужого API ускоряет подключение, особенно когда документация большая и написана плохо.
Сроки и стоимость
На стоимость влияют не столько объемы данных, сколько качество той стороны: есть ли у системы нормальный интерфейс обмена, есть ли документация, можно ли туда вообще писать. Интеграция с современным сервисом и с самописной программой без документации — задачи разного порядка.
Разберем ваш набор систем и предложим схему обмена
Перечислите, какие системы у вас есть и что между ними сейчас переносят руками. В ответ — карта данных с источниками правды, схема обмена, порядок работ и стоимость по этапам.
Начинать стоит с одной связи, которая снимает самый большой объем ручного переноса.
Что ломает интеграции
- Два источника правды. Номенклатуру заводят и в учете, и в CRM. Дальше любая схема обмена превращается в постоянную борьбу с дублями.
- Изменения на той стороне. Обновили систему-партнера, поменялся формат — обмен встал. Помогают журнал, мониторинг и уведомления: важно узнать об этом в тот же день, а не в конце месяца.
- Отсутствие сверки. Обмен «работает», а данные потихоньку расходятся. Обнаруживается при закрытии периода, когда исправлять дорого.
- Ручные правки в обход обмена. Кто-то поправил запись напрямую в базе, и следующий цикл затер правку или создал дубль.
- Обмен без ограничения объема. На тестовых данных все летает, на реальных выгрузка занимает часы и кладет систему. Проверять надо на боевых объемах.
- Никто не отвечает за обмен. Интеграция — живая часть системы, у нее должен быть хозяин, который получает уведомления об ошибках и реагирует.
Когда лучше не интегрировать
Такое бывает, и мы об этом говорим. Если данные нужны раз в месяц и их немного, ручная выгрузка дешевле и надежнее автоматической. Если одна из систем скоро меняется, интеграцию с ней разумнее отложить. Если связь нужна ради одного отчета, часто проще собрать отчет из двух источников, чем налаживать постоянный обмен.
Хорошая интеграция — та, которая экономит больше, чем стоит в поддержке. Это стоит посчитать до начала работ, а не после.
Что остается у вас
Код обмена в вашем репозитории, описание схемы данных и правил сопоставления, доступ к журналу операций и настроенные уведомления об ошибках. Плюс отчет сверки, который можно запустить в любой момент.
Мы сознательно делаем обмен прозрачным: любой ваш технический специалист должен понимать, что происходит, по журналу, без обращения к нам. Черный ящик, работающий у подрядчика, — худший вид интеграции.
Дальше по теме
Частые вопросы
Обмен точка-точка или общий слой?
На двух-трех системах проще и дешевле связывать их напрямую. Начиная с четырех-пяти выигрывает общий слой обмена: при добавлении новой системы нужна одна связь вместо пяти, а правила и журнал лежат в одном месте. Универсально правильного варианта нет, выбор зависит от количества систем и планов по новым.
Что самое сложное в интеграции?
Определить источник правды для каждой сущности. Если номенклатуру заводят и в учете, и в CRM, любая схема обмена превращается в постоянную борьбу с дублями. Второе по сложности — сопоставление записей двух систем и правила на случай конфликта.
Сколько это стоит и занимает?
Односторонний обмен по одной сущности с журналом и уведомлениями — от недели. Двусторонний обмен между двумя системами с сопоставлением и сверкой — 2–5 недель. Общий слой на несколько систем — 1,5–3 месяца. На стоимость влияют не объемы данных, а то, есть ли у второй системы нормальный интерфейс обмена и документация.
Что делать, если одна из систем самописная и без документации?
Разбираемся, какие способы обмена вообще доступны: интерфейс, выгрузка файлами, в крайнем случае чтение напрямую из базы. Последнее применяем только на чтение и только по согласованию с владельцем системы — обновление может сломать структуру. Это выясняется до оценки сроков, разница бывает в разы.
Как понять, что обмен работает правильно?
По сверке. Регулярный отчет: столько документов там, столько здесь, расхождение такое-то. Без сверки обмен может годами «работать», пока данные потихоньку расходятся, и это обнаруживается при закрытии периода, когда исправлять дорого.
Что произойдет, если вторая система недоступна?
То, что вы заранее решили: повторить, отложить, пропустить или позвать человека. Поведение при сбоях проектируется отдельно для каждого случая — недоступность, ошибка, медленный ответ, мусор в ответе. Интеграция без этого не ломается только до первого обновления на той стороне.
Нужно ли менять 1С?
Нет. 1С обычно остается источником правды по номенклатуре, контрагентам, остаткам и деньгам, а обмен строится вокруг этого. Важный практический момент: обмен не должен мешать работе бухгалтерии — тяжелые выгрузки ставятся на ночь, а нагрузка проверяется на боевых объемах.
Бывает, что интегрировать не нужно?
Да, и мы об этом говорим. Если данные нужны раз в месяц и их немного, ручная выгрузка дешевле и надежнее. Если одна из систем скоро меняется, интеграцию разумнее отложить. Хорошая интеграция экономит больше, чем стоит в поддержке, и это стоит посчитать до начала работ.