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