Миграция данных при внедрении — это шесть шагов: инвентаризация источников, правила сопоставления, чистка, пробный прогон, сверка по контрольным суммам, финальный перенос в фиксированном окне. Занимает она 3–5 недель календарного времени, из которых собственно перенос — несколько часов, а всё остальное уходит на то, чтобы понять, что именно вы переносите и что из этого переносить не надо.

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

Ниже — план, который можно взять в свой проект: шесть шагов с результатами, таблица «что переносим, что оставляем в архиве», правила склейки дублей, правило трёх прогонов, набор контрольных сумм для приёмки и схема окна выходного дня с планом отката. Модельный пример — тот же, что в разборе технического задания и приёмки: оптовая компания на 70 человек переезжает со старой самописной базы, 1С:УНФ и трёх файлов отдела продаж в связку 1С:УТ и amoCRM. Бюджет внедрения 1 200 000 ₽.

Шесть шагов переноса

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

  1. 1
    Шаг 1. Инвентаризация источников, 3–5 рабочих дней

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

  2. 2
    Шаг 2. Правила сопоставления полей и справочников, 5–7 рабочих дней

    Каждое поле источника получает адрес в приёмнике: 68 полей и 6 справочников в нашем примере. Здесь же решается судьба пустых значений, значений «по умолчанию» и полей, которых в новой системе нет вовсе. Документ с правилами согласуется письменно — именно он потом служит основанием для приёмки, а не устная договорённость «ну там всё понятно».

  3. 3
    Шаг 3. Чистка и склейка на стороне заказчика, 1–2 недели

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

  4. 4
    Шаг 4. Тестовый прогон на копии, 2–3 рабочих дня

    Первый прогон делается не ради результата, а ради реестра ошибок: сколько строк не проходит и почему. В модельном проекте не прошли 18 % строк — пустые ИНН, номенклатура без группы, заказы со ссылкой на удалённого контрагента. Каждая причина превращается либо в правку правил, либо в задачу на чистку.

  5. 5
    Шаг 5. Контрольный прогон и сверка, 3–4 рабочих дня

    Полный объём на свежей копии, с замером времени переноса и полной сверкой контрольных сумм. Здесь же первый раз проводится ручная сверка 50 карточек. Критерий перехода к боевому прогону: расхождений по количеству и суммам нет, доля строк с ошибками ниже 0,5 %, время переноса укладывается в окно с двукратным запасом.

  6. 6
    Шаг 6. Боевой перенос в фиксированном окне, 1 выходной

    Выполняется строго по протоколу контрольного прогона, без правок по ходу. Ввод в старой системе заморожен, каждая операция переноса журналируется, результат принимается по тем же контрольным суммам. Решение «работаем в новой» принимается по итогам сверки, а не по факту окончания скрипта.

схема процессаmigratsiya-dannykh-pri-vnedrenii--01
Схема переноса: четыре источника через правила сопоставления и журнал в 1С:УТ и amoCRM

Схема слева направо. Слева четыре узла-источника с подписями объёмов: старая самописная база (12 400 контрагентов), 1С:УНФ (26 000 документов), три файла отдела продаж, почтовый архив. Все стрелки сходятся в широкий центральный блок «Правила сопоставления: 68 полей, 6 справочников» с пометкой «согласовано письменно». Из него две стрелки вправо: «1С:УТ» и «amoCRM», и одна вниз — «Архив с поиском: 24 400 позиций номенклатуры, 16 200 старых документов». Под центральным блоком узкая полоса «журнал переноса: каждая строка, причина отказа, возможность повтора». Подписи по-русски.

Между источниками и приёмником всегда стоит согласованный документ с правилами

Что переносить, а что оставить в архиве

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

ОбъектПереносимОставляем в архивеПочему так
Контрагенты7 590: с операциями за 3 года плюс действующие договоры и незакрытые обязательства4 300 карточек без единой операции за 3 годаМёртвые карточки замедляют поиск и порождают новые дубли при вводе
Дубли контрагентов470 итоговых карточек после склейки510 карточек-дублей, ссылки на них сохраняются в архивеСклейка после переноса вдесятеро дороже: к дублям уже привязаны новые документы
Номенклатура13 600: продавалось за 24 месяца плюс позиции с остатками24 400 позиций без движения и без остаткаКаталог, где четыре пятых позиций мёртвые, делает подбор в заказе бесполезным
Заказы и сделки9 800 документов за 24 месяца16 200 документов старше 24 месяцевАналитика строится на двух годах; более старое нужно как справка, а не как рабочий документ
Взаиморасчёты и остаткиОстатками на дату среза, а не документамиИстория проводок остаётся в старой системе и в архивеПеренос десятилетней истории проводок обычно не сходится ни по одной сумме и не нужен для работы
Вложения и сканыФайлы по перенесённым документам за 24 месяцаОстальные файлы — ссылками из архиваВложения дают основной объём: без отсечения окно переноса вырастает в разы

Границу «что не переносим» согласуют письменно до начала работ и обязательно с владельцем процесса, а не только с ИТ. Практика показывает, что спорных объектов почти всегда два: закрытые сделки и мёртвая номенклатура. По ним полезно заранее договориться о правиле возврата — сколько стоит донести отдельный срез из архива, если через месяц он всё-таки понадобится. В модельном проекте это оценили в 15 000 ₽ за срез, и за первый год воспользовались один раз.

графикmigratsiya-dannykh-pri-vnedrenii--02
Диаграмма: сколько записей каждого типа переносится в новую систему, а сколько уходит в архив

Три пары горизонтальных полос с подписанными числами. Контрагенты: всего 12 400, переносится 7 590, в архив 4 810 (из них 4 300 без операций и 510 дублей). Номенклатура: всего 38 000, переносится 13 600, в архив 24 400. Заказы: всего 26 000, переносится 9 800, в архив 16 200. Каждая полоса разделена на закрашенную часть «в рабочую базу» и штрихованную «в архив с поиском». Внизу подпись: «архив — отдельное хранилище с поиском, а не справочник, который открывают сто раз в день». Подписи по-русски.

В рабочую базу уезжает меньше половины того, что накоплено

Дубли и разные написания одного контрагента

Дубли — самая трудоёмкая часть чистки и единственная, где решения не автоматизируются полностью. Машина находит кандидатов, человек подтверждает. В модельной базе алгоритм предложил 980 групп кандидатов, после разбора склеилось 470, остальные оказались разными юридическими лицами одной группы компаний или однофамильцами-предпринимателями.

  • Первый ключ склейки — ИНН. Совпал ИНН — почти наверняка один контрагент; расхождение в названии при совпавшем ИНН решается в пользу свежей записи из учётной системы.
  • Второй ключ — нормализованное название плюс телефон или адрес. Нормализация убирает кавычки, организационно-правовую форму, лишние пробелы и регистр: «ООО "Ромашка"» и «Ромашка ООО» становятся одной строкой.
  • Третий ключ — совпадение по банковским реквизитам. Работает там, где ИНН не заполнен, а платежи есть: расчётный счёт у одного юридического лица.
  • Всё, что не прошло по трём ключам, идёт в ручной разбор списком. Список должен быть ограниченным: если кандидатов больше 1 500, значит, правила нормализации слишком мягкие и их надо ужесточить, а не героически разбирать вручную.
  • Каждая склейка журналируется: какие карточки объединены, кто принял решение, когда. Без журнала первая же спорная склейка через месяц превращается в детектив без развязки.
Спорные склейки принимает один названный человек

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

Правило трёх прогонов

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

ПрогонКогдаЧто проверяемКритерий перехода дальше
ТестовыйЗа 3 недели до запуска, на копииЧто вообще не переносится и почему; собирается реестр причин отказаРеестр составлен, каждая причина превращена в правку правил или задачу на чистку
КонтрольныйЗа 1 неделю до запуска, на свежей копии полного объёмаКонтрольные суммы по срезам, время переноса, ручная сверка 50 карточекРасхождений по количеству и суммам нет, доля строк с ошибками ниже 0,5 %, время укладывается в окно с двукратным запасом
БоевойВ окне выходного дняТо же, что на контрольном, плюс полнота операций за период заморозкиСрезы сошлись — работаем в новой системе; не сошлись — план отката

Между прогонами нужны 5–10 рабочих дней: это время на чистку и правки правил, а не пауза. В модельном проекте после тестового прогона доля непроходящих строк упала с 18 % до 1,2 %, после контрольного — до 0,3 %. Замер времени тоже важен: контрольный прогон занял 6 часов 40 минут, что дало запас в окне выходного дня. Если бы он занял 20 часов, окно пришлось бы либо расширять, либо делить перенос на части — и узнать об этом лучше за неделю, чем в субботу вечером.

этапыmigratsiya-dannykh-pri-vnedrenii--03
Лента на пять недель: тестовый, контрольный и боевой прогоны с окном выходного дня

Горизонтальная лента времени на 5 недель. Неделя 1: инвентаризация 4 источников и 11 таблиц. Неделя 2: правила сопоставления, 68 полей и 6 справочников. Неделя 3: тестовый прогон, отметка «не прошло 18 % строк», далее полоса «чистка и склейка 980 групп». Неделя 4: контрольный прогон, отметки «6 ч 40 мин», «ошибок 0,3 %», «ручная сверка 50 карточек». Неделя 5: окно выходного дня — пятница 18:00 заморозка, суббота перенос, воскресенье 16:00 решение по контрольным суммам, понедельник 9:00 работа в новой системе. Под лентой отдельная ветка «план отката» со стрелкой обратно к старой системе. Подписи по-русски.

Между прогонами не пауза, а чистка: доля ошибок падает с 18 % до 0,3 %

Сколько стоит перенос

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

Перенос базы: 4 источника, 11 таблиц, 12 400 контрагентов
Инвентаризация источников и профилирование полей16 ч
Правила сопоставления: 68 полей, 6 справочников, обработка пустых значений24 ч
Разработка переноса с журналом по каждой строке и возможностью повтора32 ч
Три прогона с протоколами сверки и реестром причин отказа20 ч
Боевое окно выходного дня и дежурство в первый рабочий день8 ч
Итого работа инженера: 100 ч × 2 800 ₽280 000 ₽
Чистка и разбор 980 групп дублей силами заказчика: 40 ч × 900 ₽36 000 ₽
Ручная сверка 50 карточек тремя сотрудниками на двух прогонах: 12 ч × 900 ₽10 800 ₽
Итого326 800 ₽ — 27 % бюджета внедрения в 1 200 000 ₽. По рынку перенос занимает 15–30 % проекта; дешевле 150 000 ₽ полноценная миграция с тремя прогонами и сверкой практически не бывает

Сократить смету можно в двух местах и нельзя в двух других. Безопасно сокращаются глубина среза — перенести 12 месяцев вместо 24 и снять примерно 30 000 ₽ — и количество источников: три файла отдела продаж можно не переносить программно, а ввести руками, если там 300 строк, а не 30 000. Нельзя экономить на правилах сопоставления, потому что без согласованного документа приёмка превращается в спор о том, что имелось в виду, и на прогонах: перенос без контрольного прогона — это боевой прогон, поставленный на живых людях.

Как принимать результат: контрольные суммы и 50 карточек

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

Контрольный срезКак считаетсяДопустимое расхождение
Количество контрагентов, попадающих под правило переносаСчётчик в источнике по согласованному условию и счётчик в приёмнике0 записей
Количество заказов по месяцам за 24 месяцаПомесячный срез в источнике и в приёмнике, 24 пары чисел0 записей в каждом месяце
Сумма дебиторской задолженности на дату срезаИтог по взаиморасчётам в старой системе и в новой на ту же дату0 ₽
Остатки по складам в штуках и в суммеСрез по каждому складу и по каждой группе номенклатуры0 штук и 0 ₽
Количество вложений и их суммарный объёмПодсчёт файлов и байтов до и после0 файлов
Текстовые поля после нормализацииДоля карточек, где название изменилось при нормализацииДо 2 %, каждый случай виден в журнале

Поверх срезов делается ручная сверка ровно 50 карточек, и выборка формируется заказчиком: 20 крупнейших контрагентов по обороту, 20 случайных и 10 из списка спорных склеек. Пятьдесят карточек проверяются тремя сотрудниками за четыре часа и ловят то, чего не видят суммы: перепутанные местами телефон и контактное лицо, ушедшие в другое поле комментарии, потерянную привязку к менеджеру. Комбинация «срезы плюс 50 карточек» — это и есть приёмка переноса, и её результат оформляется протоколом с номерами сценариев, как любая другая приёмка этапа.

Перенос без сверки контрольных сумм обнаруживается через квартал и стоит втрое

Типичный сценарий: перенос сделали за выходные, карточки в новой системе открылись, все выдохнули. Через три месяца при закрытии квартала обнаруживается расхождение дебиторки на 380 000 ₽ и 640 недостающих заказов за позапрошлый год. К этому моменту в новой системе уже созданы тысячи документов поверх неполных данных, старая база остановлена и частично разобрана, а сотрудники, которые помнили детали, ушли в отпуск. Повторный перенос в такой ситуации стоит примерно втрое дороже первого, потому что теперь нужно не переносить, а сращивать две реальности. Всё это снимается протоколом сверки на 6 срезов, который составляется за один день до боевого прогона.

сравнениеmigratsiya-dannykh-pri-vnedrenii--04
Сравнение приёмки переноса на глаз и приёмки по контрольным срезам с числами

Сравнение в две колонки. Левая «Приёмка на глаз»: открыли десяток карточек, посмотрели список контрагентов, «вроде всё на месте», подписали. Внизу колонки итог: «расхождение дебиторки 380 000 ₽ и 640 заказов найдены через квартал; повторный перенос втрое дороже». Правая «Приёмка по срезам»: количество контрагентов — 0 расхождений, заказы по 24 месяцам — 0, дебиторка — 0 ₽, остатки — 0 штук, вложения — 0 файлов, нормализация названий — до 2 %, плюс 50 карточек вручную. Внизу итог: «протокол сверки составляется за один день». Подписи по-русски.

Слева приёмка, которая ничего не проверяет; справа — та, что закрывает вопрос

Точка невозврата: окно переноса и план отката

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

  1. 1Пятница, 18:00. Ввод в старой системе заморожен. Дальше она доступна только на чтение — это техническая мера, а не просьба к сотрудникам: доступ на запись снимается правами.
  2. 2Пятница, 18:00 — воскресенье. Всё, что происходит в эти часы, фиксируется в едином журнале ожидания: заявки, звонки, отгрузки. В модельном проекте за выходные набирается 40–60 записей, и вводятся они руками в понедельник, до открытия обычной работы.
  3. 3Суббота. Боевой прогон строго по протоколу контрольного, без правок по ходу. Любая обнаруженная проблема не чинится на месте, а записывается: правка вслепую в боевом окне — источник половины неудачных миграций.
  4. 4Воскресенье, до 16:00. Сверка контрольных срезов и ручная проверка 50 карточек. Решение принимается по числам: срезы сошлись — работаем в новой; не сошлись — план отката.
  5. 5Воскресенье, 16:00 — точка невозврата. После неё старая система больше не открывается на запись даже как временная мера. Двойной ввод «на всякий случай» — самая дорогая из возможных концовок: люди возвращаются к привычному, а расхождение между базами растёт каждый день.
  6. 6Понедельник, 9:00. Ввод отложенных операций из журнала ожидания, дежурство инженера на связи весь первый рабочий день, ежедневный разбор вопросов первую неделю.

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

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

Не всякая миграция окупается, и в трёх ситуациях мы сами советуем сократить объём переноса или отказаться от него.

  • Данных мало, а источников много. Три файла по 300 строк дешевле ввести руками за два дня, чем описывать правила сопоставления и писать перенос. Порог, ниже которого программный перенос обычно не оправдан, — примерно 2 000 строк на источник.
  • Старая система остаётся живой. Если учётная система никуда не девается, а новая работает рядом, переносить историю не нужно вовсе: достаточно связки по идентификатору и ссылки на карточку в старой системе. Как устроены такие обмены и во что они обходятся, мы разбираем на странице интеграций.
  • Качество данных ниже порога полезности. Если в справочнике контрагентов заполнено 30 % ИНН, а половина заказов не привязана к клиенту, перенос закрепит этот беспорядок в новой системе. Здесь честнее сначала навести порядок в старой базе или начать новую с чистого листа, перенеся только активных клиентов и остатки.

И общая оговорка про персональные данные, которую легко упустить в технической суете. Клиентская база — это имена, телефоны и адреса, то есть персональные данные по 152-ФЗ. При переносе это означает три вещи: тестовые контуры работают на обезличенных данных либо на тех же основаниях, что и боевые; выгрузки не уезжают в личную почту и мессенджеры инженеров; если данные обрабатывает подрядчик, оформляется поручение обработки с перечнем действий и сроком. Всё это делается за час на этапе инвентаризации и не делается вовсе, если о нём вспомнить в субботу боевого прогона.

Перенос заканчивается не тогда, когда скрипт отработал, а тогда, когда сошлись шесть чисел.