При переходе на современные версии платформы или при получении архивных копий старых баз у разработчиков часто возникает вопрос: можно ли загрузить резервную копию базы 1С:Предприятие 7.7 напрямую в 1С:Предприятие 8.x через Конфигуратор? Разберем технические причины, почему это невозможно сделать стандартной загрузкой, и рассмотрим рабочие способы переноса данных в новую систему.
Короткий ответ: Напрямую развернуть архив базы 7.7 на платформе 8.x нельзя. Механизм совместимости в платформе 8.3 предназначен только для запуска конфигураций более ранних релизов восьмой версии (например, 8.1 или 8.2), но не поддерживает платформу 7.7. Для работы с данными потребуется развернуть саму платформу 7.7 либо воспользоваться инструментами миграции.
Проанализируем основные архитектурные различия, которые делают невозможным прямой запуск:
DBF (таблицы данных), CDX (индексные файлы) и словарем метаданных 1Cv7.MD. В платформе 8.x вся файловая информационная база упакована в единый бинарный файл 1Cv8.1CD.1Cv7.DAT вместе со словарем структуры, в то время как платформа 8.x формирует выгрузку в формате .dt с совершенно иной внутренней разметкой.Выясним, какими способами можно перенести данные из информационной базы 7.7 в конфигурацию на платформе 8.x.
Это универсальный и наиболее гибкий инструмент для переноса как типовых, так и полностью самописных конфигураций. Разберем порядок действий по шагам:
MD77Exp.ert выгрузим описание структуры метаданных конфигурации 7.7 в файл XML.MD80Exp.epf.V77Exp.ert, выберем сформированный файл правил и выгрузим данные в файл XML.УниверсальныйОбменДаннымиXML.epf и выполним загрузку данных.Если нет возможности установить саму платформу 7.7, но есть распакованный каталог с файлами базы (файловая версия DBF), данные можно прочитать программно из 8.x:
XBase либо прямое подключение через ADODB.Connection.SC***.DBF, шапки документов — DH***.DBF, табличные части документов — DT***.DBF, а константы и периодические реквизиты — 1SCONST.DBF.Посмотрим на пример чтения файлов справочника с помощью объекта XBase:
ТаблицаДБФ = Новый XBase;
ТаблицаДБФ.ОткрытьФайл("C:\Base77\SC123.DBF");
Если ТаблицаДБФ.Открыта() Тогда
ТаблицаДБФ.Первая();
Пока Не ТаблицаДБФ.ВКонце() Цикл
// Считываем значения полей таблицы
КодЭлемента = СокрЛП(ТаблицаДБФ.CODE);
НаименованиеЭлемента = СокрЛП(ТаблицаДБФ.DESCR);
// Создаем соответствующий элемент в базе 8.x
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Код = КодЭлемента;
НовыйЭлемент.Наименование = НаименованиеЭлемента;
НовыйЭлемент.Записать();
ТаблицаДБФ.Следующая();
КонецЦикла;
ТаблицаДБФ.ЗакрытьФайл();
КонецЕсли;
Если база 7.7 работала под управлением Microsoft SQL Server, таблицы данных можно прочитать напрямую через внешние источники данных платформы 8.x или запросами через COM-соединение ADODB.Recordset.
Если на компьютере установлены обе платформы, можно организовать программный перенос данных напрямую из базы 8.x, подключившись к 7.7 как к COM-серверу.
Посмотрим, как выглядит инициализация подключения и чтение данных:
Попытка
База77 = Новый COMОбъект("V77.Application");
КаталогБазы = "C:\Base77\";
Пользователь = "Администратор";
Пароль = "";
ПараметрыПодключения = "/D" + КаталогБазы + " /N" + Пользователь + " /P" + Пароль;
Если Не База77.Initialize(База77.RMTrade, ПараметрыПодключения, "NO_SPLASH_SHOW") Тогда
ВызватьИсключение "Не удалось инициализировать подключение к базе 7.7";
КонецЕсли;
Исключение
Сообщить("Ошибка подключения к 7.7: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Выборка элементов справочника из 7.7
Спр77 = База77.CreateObject("Справочник.Контрагенты");
Если Спр77.ВыбратьЭлементы() = 1 Тогда
Пока Спр77.ПолучитьЭлемент() = 1 Цикл
Если Спр77.ЭтоГруппа() = 0 Тогда
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = Спр77.Наименование;
НовыйКонтрагент.ИНН = Спр77.ИНН;
НовыйКонтрагент.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если конфигурация 7.7 сильно доработана или является полностью оригинальной, часто самым простым способом оказывается написание внешней обработки для 7.7 (в формате .ert), которая формирует файлы обмена в формате CSV, TXT, XML или JSON. В базе 8.x полученные файлы загружаются стандартными методами ЧтениеТекста, ЧтениеXML или ЧтениеJSON.
При переносе данных важно помнить о ключевых технических различиях между платформами:
ID. Рекомендуется сохранять этот код в дополнительный реквизит в базе 8.x для исключения дублирования при повторных переносах.1SCONST. В платформе 8.x такие данные переносятся в регистры сведений с соответствующей периодичностью.1SJOURN, что требует дополнительного сопоставления при прямом чтении DBF.