Как перенести данные из файловой базы 1С 8.2 в клиент-серверную базу на платформе 8.3

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Перенос информационной базы с устаревшей платформы 1С 8.2 на современную 8.3, да еще и с одновременным переходом с файлового варианта на клиент-серверный — это задача, требующая четкого понимания механизмов хранения данных. Часто пользователи сталкиваются с тем, что стандартная выгрузка и загрузка через файл .dt завершается фатальной ошибкой «Разрушена структура базы данных». В этой статье мы подробно разберем, почему это происходит и как правильно выполнить перенос данных, сохранив их целостность.

Выясним причину ошибки «Разрушена структура базы данных»

Проанализируем ситуацию: почему файл выгрузки .dt, который прекрасно загружается обратно в файловую версию 8.2, выдает ошибку при попытке развернуть его на сервере (например, под управлением PostgreSQL)? Основная причина кроется в том, что SQL-серверы предъявляют гораздо более жесткие требования к типам данных и структуре таблиц, чем файловая СУБД 1С. Рассмотрим основные факторы:

  1. Некорректные значения дат. В файловых базах 8.2 часто встречаются даты типа 01.01.0001 или значения из далекого будущего/прошлого, которые СУБД (особенно PostgreSQL) просто не может записать в свои таблицы.
  2. Символы с нулевым кодом. Строковые поля могут содержать невидимые спецсимволы, которые допустимы в файле 1Cv8.1cd, но вызывают ошибку при попытке вставки в SQL-таблицу.
  3. Физические повреждения файла. Даже если база открывается, в ней могут быть микроповреждения индексов или таблиц, которые «всплывают» только при полной реструктуризации во время загрузки на сервер.
  4. Разница в длине имен объектов. В самописных конфигурациях иногда используются крайне длинные имена табличных частей или реквизитов, что при конвертации в имена колонок SQL может вызывать конфликты.

Шаг 1. Физическое исправление базы утилитой chdbfl.exe

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

Найдем в папке с установленной платформой 1С (обычно это C:\Program Files\1cv8\номер_версии\bin) утилиту chdbfl.exe. Запустим её и укажем путь к файлу нашей базы 1Cv8.1cd. Обязательно установим флаг «Исправлять обнаруженные ошибки». Эта утилита проверяет базу на уровне файловой структуры, восстанавливая заголовки таблиц и индексы, которые могли быть повреждены при некорректном завершении работы программы.

Шаг 2. Логическое восстановление через Тестирование и Исправление (ТиИ)

После физической проверки перейдем к логической. Откроем базу в режиме Конфигуратора на платформе 8.2 или 8.3 (в файловом варианте). Проанализируем настройки в меню «Администрирование» — «Тестирование и исправление».

Важно: Перед этой процедурой обязательно сделайте резервную копию!

При настройке ТиИ рекомендуется выбрать следующие пункты:

  1. Реиндексация таблиц информационной базы.
  2. Проверка целостности логической структуры.
  3. Проверка ссылочной целостности.
  4. Пересчет итогов.
  5. Сжатие таблиц.

В полях «При наличии ссылок на несуществующие объекты» выберем «Очищать объекты» или «Создавать объекты» (в зависимости от вашей политики учета). После выполнения ТиИ база может уменьшиться в размере, так как удалятся временные таблицы и «мусор».

Шаг 3. Переход на платформу 8.3 через промежуточный файловый вариант

Рассмотрим метод «плавной» миграции. Вместо того чтобы сразу пытаться загрузить .dt из 8.2 на сервер 8.3, выполним следующие действия:

  1. Установим платформу 1С 8.3 на локальном компьютере.
  2. Создадим новую пустую папку и пропишем к ней путь в списке баз.
  3. Запустим Конфигуратор 8.3 для этой новой базы и выполним «Администрирование» — «Загрузить информационную базу», выбрав ваш .dt из 8.2.
  4. Если загрузка прошла успешно, база откроется в режиме 8.3, но в режиме совместимости с 8.2.

После этого можно попробовать изменить формат базы данных. В Конфигураторе 8.3 перейдем в меню «Администрирование» — «Параметры информационной базы» и проверим размер страницы данных. Для современных баз рекомендуется использовать 8192 или выше. Это может помочь при последующей выгрузке на SQL.

Шаг 4. Правильный перенос данных через «Конвертацию данных» (XML)

Если метод с .dt все равно выдает ошибку структуры, разберем более надежный, хоть и более медленный способ — перенос через XML. Пользователи часто ошибаются, просто выгружая конфигурацию (файл .cf), что дает «пустую» базу весом в несколько сотен килобайт. Нам же нужно перенести именно записи таблиц.

Воспользуемся встроенной обработкой «Универсальный обмен данными в формате XML». Проанализируем алгоритм:

  1. В базе-источнике (8.2) открываем обработку ВыгрузкаЗагрузкаДанныхXML.epf.
  2. Выбираем все объекты (справочники, документы, регистры), которые необходимо перенести.
  3. Выгружаем данные в большой XML-файл (в вашем случае он может быть около 2-4 Гб).
  4. В новой пустой базе на сервере 8.3 (куда вы уже предварительно загрузили конфигурацию .cf) открываем ту же обработку и выполняем загрузку этого файла.

Этот метод хорош тем, что 1С при записи каждого объекта в новую базу заново проверяет его на соответствие типам данных. Если какой-то документ содержит «битую» дату, загрузка выдаст конкретную ошибку, и вы сможете исправить этот объект в источнике.

Шаг 5. Особенности работы с PostgreSQL

Если вы используете PostgreSQL, выясним несколько критических моментов. Стандартная версия Postgres с официального сайта не оптимизирована для работы с 1С. Мы рекомендуем использовать только специализированные сборки от компании «1С» или «Postgres Professional».

При создании базы в консоли администрирования серверов 1С обратите внимание на параметры:

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

Почему интерфейс остался прежним?

Разберем типичное заблуждение: многие ожидают, что после перехода на 8.3 самописная база сразу станет выглядеть как «1С:Бухгалтерия 3.0» с управляемыми формами и желтым интерфейсом «Такси». Это не так.

Посмотрим на свойства конфигурации (корневой узел в дереве метаданных). Там есть свойство Режим совместимости. Если там стоит «Версия 8.2», то платформа 8.3 будет полностью имитировать поведение старой версии. Чтобы перейти на новый интерфейс, вам потребуется:

  1. Отключить режим совместимости (что потребует исправления многих кусков кода).
  2. Установить свойство «Основной запуск» в значение «Управляемое приложение».
  3. Самое трудоемкое: Переписать все формы документов и справочников с «Обычных» на «Управляемые». Автоматически это сделать невозможно, так как архитектура построения интерфейса изменилась в корне.

Однако для простого перехода на сервер и повышения производительности достаточно просто запустить базу на платформе 8.3 в режиме обычного приложения. Это уже позволит вам использовать преимущества 64-битного сервера и избежать ограничений файлового формата в 4 Гб на одну таблицу.

Резюме действий для успешного переноса

Подведем итог нашей совместной работы. Если база 1С 8.2 не «лезет» на сервер 8.3:

  1. Лечим файл 1Cv8.1cd через chdbfl.exe.
  2. Делаем полное ТиИ в Конфигураторе.
  3. Проверяем даты через консоль запросов (ищем даты менее 1900 года).
  4. Пробуем загрузить .dt сначала в файловую 8.3, а уже из неё выгрузить новый .dt для сервера.
  5. В крайнем случае используем перенос через XML, что гарантированно очистит данные от структурного «мусора».

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

← На главную