Цифры не сходятся не потому, что обмен сломан, а потому, что он исправен. В учётной системе позиция называется «Труба ПП 25», в CRM менеджер завёл её как «труба пп-25», и для обмена это две разные строки. Он честно возит их как два разных товара, ошибок не выдаёт, индикаторы зелёные. Проблема не в интеграции, а в том, что ей дали два разных описания одной и той же вещи.

Момент, в который эту ошибку совершают, всегда один и тот же и занимает секунд двадцать. На старте интеграции инженер спрашивает: «По какому полю сопоставляем номенклатуру?» Ответ: «По названию, они же одинаковые». Дальше все расходятся довольные, потому что на выборке из десяти позиций, которую посмотрели вместе, названия действительно совпадали.

Ранний признак появляется на второй-третий месяц эксплуатации и звучит совершенно безобидно: «мы каждый месяц руками правим десятка три позиций». Никто не считает это проблемой, потому что правка занимает пятнадцать минут и делается между делом. Ниже — сколько это стоит на самом деле и как из этого выбираться.

Четыре справочника, которые обязаны совпадать

Справочников в системах десятки, но совпадать обязаны четыре. Остальные живут внутри одной системы и на обмен не влияют. У каждого из четырёх должна быть своя мастер-система и свой ключ сопоставления — и это разные ключи, а не один универсальный.

СправочникМастер-система обычноКлюч сопоставленияЧто ломается без совпадения
НоменклатураУчётная система: там позиция появляется вместе с приходомВнутренний код или артикул поставщикаПересорт на отгрузке, неверная себестоимость, отчёт по марже собирается руками
КонтрагентыCRM: там клиент появляется раньше, чем в учётеИНН и КПП для юрлиц, нормализованный телефон для физлицЗадвоенные отгрузки, дебиторка размазана по двум карточкам, скидка считается не от того оборота
Склады и места храненияУчётная системаКод склада, не названиеРезерв встаёт не на тот склад, менеджер обещает наличие, которого нет в его городе
Статусы заказовCRM: статус ведёт менеджер, а не кладовщикФиксированный список кодов, а не свободный текстОтчёт по воронке не собирается, автоматические уведомления клиенту уходят не на том шаге
Что это значитМастер-система

Система, в которой позиция справочника создаётся и изменяется, — единственная. Во все остальные системы она приезжает обменом и там только читается. Мастер-система назначается на каждый справочник отдельно: номенклатура может вестись в учёте, а контрагенты — в CRM, и это нормально. Ненормально, когда одну и ту же сущность можно завести в двух местах.

Проверка занимает минуту и не требует ничего, кроме прав. Попробуйте завести новую номенклатурную позицию в CRM. Если получилось — мастер-системы у вас нет, независимо от того, что записано в регламенте и в договоре с подрядчиком. Регламент, который не поддержан правами доступа, не работает: через квартал в системе оказывается двести позиций, заведённых «временно, чтобы выставить счёт сегодня».

карта связейnesoglasovannye-spravochniki--01
Карта четырёх справочников с указанием мастер-системы и ключа сопоставления для каждого

Карта связей из двух больших узлов — «Учётная система» слева и «CRM» справа. Между ними четыре горизонтальные линии, по одной на справочник: «Номенклатура — 6 200 позиций», «Контрагенты — 3 400», «Склады», «Статусы заказов». На каждой линии стрелка направлена от мастер-системы к читающей: номенклатура и склады идут слева направо, контрагенты и статусы — справа налево. На каждой линии подписан ключ сопоставления: «код/артикул», «ИНН+КПП или телефон», «код склада», «код статуса». Под картой пометка: «в обратную сторону справочник только читается».

Мастер-система назначается на каждый справочник отдельно, а не одна на все

Сопоставлять по коду, а не по названию

Название — плохой ключ по двум противоположным причинам сразу, и обе одинаково дорогие. Первая очевидна: одна позиция пишется по-разному. «Труба ПП 25», «труба пп-25», «Труба полипропиленовая Ø25» — три записи, которые никакой алгоритм не склеит без риска, потому что человек их пишет по вдохновению.

Вторая причина опаснее и её обычно не замечают: похожие названия принадлежат разным товарам. «Кабель ВВГ 3х2,5» и «Кабель ВВГнг 3х2,5» отличаются двумя буквами, стоят по-разному и имеют разный допуск к применению. Умное сопоставление по похожести названий склеит их с высокой уверенностью — и вы получите не расхождение, а тихую подмену товара в отгрузках, которую заметит уже клиент.

  1. 1
    Шаг 1. Выбрать ключ и записать его в одном месте

    Для номенклатуры это внутренний код мастер-системы или артикул поставщика. Ключ не должен нести смысла: «говорящий» артикул с зашитым поставщиком или цветом рвёт историю продаж при каждой смене поставщика — это разбирали отдельно применительно к отчётности. Название остаётся атрибутом, который можно править сколько угодно.

  2. 2
    Шаг 2. Прогнать автоматическое сопоставление по точному совпадению кода

    Только точное совпадение, никакой похожести. В модельной базе на 6 200 позиций так склеивается 82 % — 5 084 позиции. Это дёшево и безошибочно: расхождений после такого прогона не бывает.

  3. 3
    Шаг 3. Разобрать остаток руками, парами

    Оставшиеся 1 116 позиций разбирает человек, который знает товар, — по полторы минуты на позицию, около 28 часов работы. Инженер здесь не помощник: решить, одна это позиция или две, может только тот, кто её продаёт или отгружает.

  4. 4
    Шаг 4. Завести таблицу соответствий для того, что не сводится

    Часть позиций объединить нельзя: они существуют в двух системах по разным причинам и обе нужны. Для них ведётся таблица соответствий — отдельный список пар «код там — код здесь», по которому обмен и сверяется. Это не костыль, а нормальное решение, когда системы принадлежат разным подразделениям.

  5. 5
    Шаг 5. Закрыть заведение позиций мимо мастер-системы правами

    Без этого шага четыре предыдущих обнуляются за квартал. Право заводить номенклатуру остаётся у одного-двух названных человек, у остальных поле просто недоступно.

Контрагенты: ИНН, телефон и один случай, когда склеивать нельзя

Для юридических лиц ключ — ИНН вместе с КПП. Один ИНН склеивает организацию, КПП разделяет её обособленные подразделения. Дубли по такому ключу находятся выгрузкой за час, и большинство из них схлопывается автоматически: карточки с одинаковым ИНН и КПП и без противоречий в реквизитах — это один контрагент.

Один ИНН и разные КПП — это не дубль

Два филиала одного юридического лица имеют общий ИНН и разные КПП. У них разные адреса доставки, разные договоры и часто разные условия оплаты. Склейка таких карточек «по ИНН» — самая дорогая ошибка чистки: документы начинают уходить не в тот филиал, а разделить карточки обратно после того, как на них повисли отгрузки, уже нельзя. Ключ должен быть составным, и это надо проверить до запуска скрипта, а не после.

Физические лица ИНН обычно не дают, и здесь ключом становится нормализованный телефон — последние десять цифр без плюсов, скобок и восьмёрок. ФИО ключом быть не может: однофамильцы встречаются чаще, чем кажется, а один и тот же человек в трёх карточках записан как «Иванов А.», «Иванов Алексей» и «Иванов Алексей Петрович». Отдельно проверяются самозанятые и индивидуальные предприниматели: ИНН у них есть, а КПП нет, и это не брак данных, а норма. Про то, сколько стоит чистка базы от дублей и пустых полей и кто в компании должен ею заниматься, у нас есть отдельный разбор с цифрами.

Что расхождение стоит в месяц

Модельная компания: оптовая торговля стройматериалами, 6 200 позиций номенклатуры в учётной системе и 6 850 в CRM, 3 400 контрагентов, 420 отгрузок в месяц. Обмен настроен по названию и работает второй год.

Цена расхождения справочников: один месяц
34 позиции в месяц не находятся при обмене, менеджер сопоставляет руками по 15 минут при ставке 900 ₽/час7 650 ₽
6 отгрузок ушли не тем товаром: возврат и повторная отправка по 2 400 ₽ логистики14 400 ₽
Приёмка и переборка возвратов: 6 × 40 минут кладовщика по 550 ₽/час2 200 ₽
2 задвоенные отгрузки по разным карточкам одного клиента, невозвращённая часть5 800 ₽
Пересборка отчёта по марже вручную: 4 часа руководителя подразделения по 1 800 ₽/час7 200 ₽
Итого37 250 ₽ в месяц, или 447 000 ₽ в год — при том, что обмен ни разу не выдал ошибки

Самая заметная строка — не самая крупная. Пятнадцать минут ручной правки видит менеджер и считает это мелочью; пересорт и возвраты видит склад и считает это своей проблемой; неверную маржу видит руководитель и считает, что «в отчётах вечно бардак». Никто из троих не связывает своё наблюдение с двумя остальными, поэтому причина не всплывает годами.

графикnesoglasovannye-spravochniki--02
Разбивка ежемесячных потерь 37 250 рублей по четырём причинам расхождения справочников

Столбчатая диаграмма из пяти столбцов с подписанными значениями в рублях в месяц: «Ручная правка 34 позиций — 7 650 ₽», «Возвраты и повторная отправка — 14 400 ₽», «Приёмка возвратов на складе — 2 200 ₽», «Задвоенные отгрузки — 5 800 ₽», «Пересборка отчёта по марже — 7 200 ₽». Над диаграммой итог «37 250 ₽ в месяц». Под каждым столбцом подписано, кто в компании это видит: менеджер, склад, склад, бухгалтерия, руководитель. Ось Y — рубли в месяц.

Самая заметная строка — ручная правка — оказывается наименьшей из четырёх
Сведение справочников: 6 200 позиций номенклатуры
Правила сопоставления, выгрузка и загрузка таблицы соответствий: 10 часов инженера по 3 000 ₽30 000 ₽
Ручной разбор 1 116 несовпавших позиций: 28 часов по 900 ₽/час25 200 ₽
Регламент заведения позиции и проверка на вводе в мастер-системе: 8 часов инженера24 000 ₽
Итого79 200 ₽ разово при потерях 37 250 ₽ в месяц — окупается на третьем месяце

Регламент заведения позиции: пять строк, которые держат порядок

Сведение справочников без регламента — деньги на ветер: через квартал расхождение возвращается, потому что причина никуда не делась. Регламент помещается на одну страницу, и в нём важны не формулировки, а один параметр — срок.

  1. 1Право заводить позицию есть у одного-двух названных сотрудников. Не у отдела, не у роли — у людей с фамилиями, и это же прописано в правах доступа.
  2. 2Заводится позиция только в мастер-системе. В остальных системах поле создания закрыто технически, а не просьбой.
  3. 3Срок исполнения заявки — не больше 4 рабочих часов. Это самый важный пункт: если новую позицию ждут два дня, менеджер найдёт способ выставить счёт в обход, и регламент умрёт в первую же неделю.
  4. 4Перед созданием обязателен поиск: по коду и по двум первым словам названия. Половина заявок на новую позицию закрывается тем, что она уже есть.
  5. 5Спорная позиция заводится с пометкой «на проверке», в отчёты и в обмен не попадает и живёт так не дольше недели. Дальше её либо утверждают, либо удаляют.
схема процессаnesoglasovannye-spravochniki--03
Схема заведения новой позиции: заявка, поиск дубля, создание в мастер-системе, обмен

Схема из шести блоков со стрелками: «Заявка менеджера» → «Поиск по коду и двум первым словам» → развилка: «нашлось — вернуть код» либо «не нашлось» → «Создание в мастер-системе, срок 4 рабочих часа» → «Обмен разносит позицию в остальные системы» → «Позиция доступна во всех системах только для чтения». Сбоку отдельная ветка: «Спорная позиция — пометка “на проверке”, не уходит в обмен и в отчёты, срок жизни 7 дней». На блоке создания подпись «право у 1–2 названных сотрудников».

Четыре часа на заявку — тот параметр, от которого зависит, будет ли регламент жить

Когда сводить справочники не надо

Полное сведение оправдано не всегда, и есть четыре случая, когда мы советуем ограничиться таблицей соответствий или вообще ничем.

  • Меньше 300 позиций номенклатуры. Ручное сопоставление такого списка — три часа работы, и его проще пересматривать раз в квартал, чем строить регламент и права.
  • Системы принадлежат разным юридическим лицам или разным подразделениям с несовпадающими правилами учёта. Здесь единая номенклатура невозможна по существу, и правильный ответ — таблица соответствий, которую ведёт один назначенный человек.
  • Обмен идёт в одну сторону и не касается денег: выгрузка каталога на витрину, обновление остатков. Расхождение названий тут не создаёт пересорта, а лечится фильтром на выгрузке.
  • Одну из систем меняют в ближайшие полгода. Сводить справочники под систему, которую выключат, — это оплатить работу дважды: сведение всё равно придётся повторять на новой платформе.

И одна оговорка про порядок работ. Сводить справочники имеет смысл до того, как чинить надёжность самого обмена, а не после: обвязка из очереди и повторных попыток добросовестно доставит несопоставленную позицию столько раз, сколько нужно, и вы получите те же расхождения, только гарантированно. Порядок один: сначала договориться, что чем является, потом строить надёжную доставку.

Интеграция не может знать, что «Труба ПП 25» и «труба пп-25» — один товар. Это знание есть только у вас, и его надо записать кодом.