Миграция данных при внедрении — это шесть шагов: инвентаризация источников, правила сопоставления, чистка, пробный прогон, сверка по контрольным суммам, финальный перенос в фиксированном окне. Занимает она 3–5 недель календарного времени, из которых собственно перенос — несколько часов, а всё остальное уходит на то, чтобы понять, что именно вы переносите и что из этого переносить не надо.
Срывается этот этап чаще других по одной причине: его планируют как техническую операцию, а он оказывается ревизией всего, что компания накопила за десять лет. Один контрагент записан четырьмя способами, у номенклатуры три параллельных кодировки, половина сделок закрыта датой «01.01.2019», потому что так было удобно закрыть период. Пока эти данные лежат в старой системе, они никому не мешают. В момент переноса каждое такое место требует решения — и решения принимает заказчик, а не подрядчик.
Ниже — план, который можно взять в свой проект: шесть шагов с результатами, таблица «что переносим, что оставляем в архиве», правила склейки дублей, правило трёх прогонов, набор контрольных сумм для приёмки и схема окна выходного дня с планом отката. Модельный пример — тот же, что в разборе технического задания и приёмки: оптовая компания на 70 человек переезжает со старой самописной базы, 1С:УНФ и трёх файлов отдела продаж в связку 1С:УТ и amoCRM. Бюджет внедрения 1 200 000 ₽.
Шесть шагов переноса
Порядок здесь важнее скорости. Самая дорогая ошибка — начать писать перенос до того, как согласованы правила сопоставления: код пишется быстро, а переписывается под каждое новое решение по справочникам, и к третьей итерации на него уходит больше времени, чем на всё остальное вместе.
- 1Шаг 1. Инвентаризация источников, 3–5 рабочих дней
Составляется реестр: какие системы и файлы содержат нужные данные, кто их владелец, как выгружаются, сколько строк, за какой период. В модельном примере получилось четыре источника и одиннадцать таблиц. Отдельная строка реестра — данные, которые существуют только в голове менеджеров и в переписке: их либо оцифровывают руками, либо честно признают потерянными до старта, а не в день переноса.
- 2Шаг 2. Правила сопоставления полей и справочников, 5–7 рабочих дней
Каждое поле источника получает адрес в приёмнике: 68 полей и 6 справочников в нашем примере. Здесь же решается судьба пустых значений, значений «по умолчанию» и полей, которых в новой системе нет вовсе. Документ с правилами согласуется письменно — именно он потом служит основанием для приёмки, а не устная договорённость «ну там всё понятно».
- 3Шаг 3. Чистка и склейка на стороне заказчика, 1–2 недели
Дубли контрагентов, разные написания одного и того же, номенклатура без единицы измерения, договоры без дат. Эту работу нельзя целиком отдать подрядчику: решение «Ромашка ООО и ООО "Ромашка+" — это одна компания или две» принимает тот, кто с ними работает. Роль подрядчика — подготовить списки кандидатов на склейку и посчитать объём, роль заказчика — принять решения.
- 4Шаг 4. Тестовый прогон на копии, 2–3 рабочих дня
Первый прогон делается не ради результата, а ради реестра ошибок: сколько строк не проходит и почему. В модельном проекте не прошли 18 % строк — пустые ИНН, номенклатура без группы, заказы со ссылкой на удалённого контрагента. Каждая причина превращается либо в правку правил, либо в задачу на чистку.
- 5Шаг 5. Контрольный прогон и сверка, 3–4 рабочих дня
Полный объём на свежей копии, с замером времени переноса и полной сверкой контрольных сумм. Здесь же первый раз проводится ручная сверка 50 карточек. Критерий перехода к боевому прогону: расхождений по количеству и суммам нет, доля строк с ошибками ниже 0,5 %, время переноса укладывается в окно с двукратным запасом.
- 6Шаг 6. Боевой перенос в фиксированном окне, 1 выходной
Выполняется строго по протоколу контрольного прогона, без правок по ходу. Ввод в старой системе заморожен, каждая операция переноса журналируется, результат принимается по тем же контрольным суммам. Решение «работаем в новой» принимается по итогам сверки, а не по факту окончания скрипта.
Схема слева направо. Слева четыре узла-источника с подписями объёмов: старая самописная база (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 ₽ за срез, и за первый год воспользовались один раз.
Три пары горизонтальных полос с подписанными числами. Контрагенты: всего 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 часов, окно пришлось бы либо расширять, либо делить перенос на части — и узнать об этом лучше за неделю, чем в субботу вечером.
Горизонтальная лента времени на 5 недель. Неделя 1: инвентаризация 4 источников и 11 таблиц. Неделя 2: правила сопоставления, 68 полей и 6 справочников. Неделя 3: тестовый прогон, отметка «не прошло 18 % строк», далее полоса «чистка и склейка 980 групп». Неделя 4: контрольный прогон, отметки «6 ч 40 мин», «ошибок 0,3 %», «ручная сверка 50 карточек». Неделя 5: окно выходного дня — пятница 18:00 заморозка, суббота перенос, воскресенье 16:00 решение по контрольным суммам, понедельник 9:00 работа в новой системе. Под лентой отдельная ветка «план отката» со стрелкой обратно к старой системе. Подписи по-русски.
Сколько стоит перенос
Стоимость переноса определяется не объёмом данных, а количеством источников и состоянием справочников. Миллион строк из одной аккуратной таблицы переносится дешевле, чем двенадцать тысяч карточек, собранных из четырёх мест с разными правилами заполнения. Ниже — расчёт для модельного проекта; он ближе к верхней границе именно из-за четырёх источников.
Сократить смету можно в двух местах и нельзя в двух других. Безопасно сокращаются глубина среза — перенести 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 срезов, который составляется за один день до боевого прогона.
Сравнение в две колонки. Левая «Приёмка на глаз»: открыли десяток карточек, посмотрели список контрагентов, «вроде всё на месте», подписали. Внизу колонки итог: «расхождение дебиторки 380 000 ₽ и 640 заказов найдены через квартал; повторный перенос втрое дороже». Правая «Приёмка по срезам»: количество контрагентов — 0 расхождений, заказы по 24 месяцам — 0, дебиторка — 0 ₽, остатки — 0 штук, вложения — 0 файлов, нормализация названий — до 2 %, плюс 50 карточек вручную. Внизу итог: «протокол сверки составляется за один день». Подписи по-русски.
Точка невозврата: окно переноса и план отката
Между заморозкой ввода в старой системе и началом работы в новой всегда есть промежуток, в который бизнес не останавливается: звонят клиенты, приезжают машины, приходят заявки. Задача окна — сделать этот промежуток коротким, предсказуемым и обратимым. Стандартная схема для оптовой компании укладывается в выходные.
- 1Пятница, 18:00. Ввод в старой системе заморожен. Дальше она доступна только на чтение — это техническая мера, а не просьба к сотрудникам: доступ на запись снимается правами.
- 2Пятница, 18:00 — воскресенье. Всё, что происходит в эти часы, фиксируется в едином журнале ожидания: заявки, звонки, отгрузки. В модельном проекте за выходные набирается 40–60 записей, и вводятся они руками в понедельник, до открытия обычной работы.
- 3Суббота. Боевой прогон строго по протоколу контрольного, без правок по ходу. Любая обнаруженная проблема не чинится на месте, а записывается: правка вслепую в боевом окне — источник половины неудачных миграций.
- 4Воскресенье, до 16:00. Сверка контрольных срезов и ручная проверка 50 карточек. Решение принимается по числам: срезы сошлись — работаем в новой; не сошлись — план отката.
- 5Воскресенье, 16:00 — точка невозврата. После неё старая система больше не открывается на запись даже как временная мера. Двойной ввод «на всякий случай» — самая дорогая из возможных концовок: люди возвращаются к привычному, а расхождение между базами растёт каждый день.
- 6Понедельник, 9:00. Ввод отложенных операций из журнала ожидания, дежурство инженера на связи весь первый рабочий день, ежедневный разбор вопросов первую неделю.
План отката должен быть написан и проверен до окна, а не сочиняться в воскресенье вечером. Минимальный набор: снятая резервная копия старой системы с проверенным восстановлением, снятые права на запись в новой, письменное решение о возврате с указанием того, кто его принимает, и уведомление сотрудников. Возврат к старой системе — это потерянные выходные и сдвиг запуска на две-три недели, но не потерянные данные. Продолжение работы на несошедшихся срезах — это несколько месяцев разбора и та самая тройная стоимость.
Когда переносить не надо
Не всякая миграция окупается, и в трёх ситуациях мы сами советуем сократить объём переноса или отказаться от него.
- Данных мало, а источников много. Три файла по 300 строк дешевле ввести руками за два дня, чем описывать правила сопоставления и писать перенос. Порог, ниже которого программный перенос обычно не оправдан, — примерно 2 000 строк на источник.
- Старая система остаётся живой. Если учётная система никуда не девается, а новая работает рядом, переносить историю не нужно вовсе: достаточно связки по идентификатору и ссылки на карточку в старой системе. Как устроены такие обмены и во что они обходятся, мы разбираем на странице интеграций.
- Качество данных ниже порога полезности. Если в справочнике контрагентов заполнено 30 % ИНН, а половина заказов не привязана к клиенту, перенос закрепит этот беспорядок в новой системе. Здесь честнее сначала навести порядок в старой базе или начать новую с чистого листа, перенеся только активных клиентов и остатки.
И общая оговорка про персональные данные, которую легко упустить в технической суете. Клиентская база — это имена, телефоны и адреса, то есть персональные данные по 152-ФЗ. При переносе это означает три вещи: тестовые контуры работают на обезличенных данных либо на тех же основаниях, что и боевые; выгрузки не уезжают в личную почту и мессенджеры инженеров; если данные обрабатывает подрядчик, оформляется поручение обработки с перечнем действий и сроком. Всё это делается за час на этапе инвентаризации и не делается вовсе, если о нём вспомнить в субботу боевого прогона.
Перенос заканчивается не тогда, когда скрипт отработал, а тогда, когда сошлись шесть чисел.

