Разработка 5 мин чтения

Перенос данных из старой программы: самописный софт, Access, DBF и старые базы

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

перенос данныхмиграциястарые базыразовые задачи

Коротко (TL;DR)

  • Многие компании годами живут в старой программе, которую когда-то написал знакомый программист. Его давно нет, а данные нужны в новой системе или хотя бы в таблице.
  • Данные почти всегда можно достать: через встроенную выгрузку, прямым чтением файлов базы или через экспорт отчётов. Главные трудности — кодировки, кривые даты и связи между таблицами.
  • Перенос идёт через пробный запуск и сверку итогов со старой программой. Старую базу после переноса не удаляют.

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

Что внутри старой программы

Снаружи старая программа выглядит как окна и кнопки. Внутри у неё всегда есть база данных. Чаще всего это файл Access, набор файлов DBF, файл какой-нибудь небольшой встроенной базы или папка с собственными файлами программы.

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

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

Как достать данные

Способов три, и я выбираю по ситуации. Первый — встроенная выгрузка. Если в программе есть экспорт в Excel или текстовый файл, начинаю с него. Это самый безопасный путь, но выгрузка часто неполная: только часть полей или только текущий год.

Второй — прямое чтение файлов базы. Я делаю копию файлов и читаю их напрямую, минуя программу. Так видны все таблицы и все поля, включая те, что программа не показывает на экране. Это основной способ для Access и DBF.

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

ОткудаКак достаёмНа что смотреть
Самописная программа со встроенным экспортомВыгрузка в Excel или текстВсе ли поля и годы попадают в выгрузку
AccessПрямое чтение файла базы с копииПароль на файл, связи между таблицами
DBFЧтение каждой таблицы отдельноКодировка текста, удалённые, но не стёртые записи
Встроенная небольшая базаЧтение через подходящий драйверВерсия формата, служебные таблицы
Неизвестный или закрытый форматЭкспорт отчётов в файлПолнота отчётов, разбивка по страницам
Старая версия 1СВыгрузка средствами самой 1ССоответствие справочников в новой версии

Кодировки и кривые даты

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

Второе — даты. Их хранили как текст, как число дней от какой-то точки или в двух разных форматах. Бывают даты вроде 1900 года или 2099 года — так раньше обозначали пустое значение. Я разбираю каждый случай и договариваюсь с вами, что с ним делать.

Третье — суммы и количества. Точка или запятая, копейки отдельным полем, отрицательные числа для возвратов. Всё это нужно понять до переноса, иначе итоги не сойдутся.

Восстановление связей между таблицами

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

Я смотрю, какие поля похожи на коды, и проверяю, сходятся ли они. Бывают осиротевшие записи: строки заказа без заказа, заказы удалённых клиентов. Их не выбрасываю, а собираю в отдельный список. Может оказаться, что это важная история.

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

Пробный перенос и сверка итогов

Сначала перенос идёт в тестовую копию новой системы или в таблицу. После этого я сверяю итоги. Число клиентов, число заказов, сумма продаж за каждый год, остатки на дату. Эти цифры должны совпасть с тем, что показывает старая программа.

Если где-то не сходится, ищу причину и повторяю перенос. Только когда итоги совпали и вы проверили несколько знакомых клиентов вручную, делаю боевой перенос.

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

Как это выглядит, когда настроено

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

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

Как заказать такую задачу

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

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

Перенос почти всегда разовая задача. Абонентка нужна, если старая и новая система какое-то время работают параллельно и данные надо синхронизировать. Подробнее на странице разовые задачи: скрипты, парсеры, выгрузки. Если речь о переходе между версиями 1С, почитайте статью переход с УТ 10.3 на УТ 11.

Частые вопросы

Программа уже не запускается. Данные ещё можно достать?

Часто да. Для прямого чтения файлов программа не нужна, нужны сами файлы базы.

На базе стоит пароль, а его никто не помнит.

Если база ваша, это обсуждаем отдельно. Иногда доступ удаётся восстановить, иногда остаётся путь через отчёты.

Можно ли перенести только последние годы?

Да. Старые годы можно выгрузить в архивную таблицу, чтобы не нагружать новую систему.

Сколько времени занимает перенос?

Зависит от формата и связей. Оценку называю после того, как посмотрю файлы.

Будет ли простой в работе?

Обычно на один день боевого переноса. Всё остальное делается на копии.

Коротко о главном

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

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

Если у вас есть старая программа, из которой страшно уходить, пришлите список файлов из её папки. Скажу, как достать данные. Напишите в Telegram, MAX или VK.

Услуги по теме

Небольшие задачи без большого проекта

  • Парсеры, сверки и выгрузки в таблицы
  • Скрипты, генераторы документов, обработка файлов
  • Простые боты и напоминания в мессенджер
  • Абонентка: мониторинг, поддержка, отчёты

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх