Перенос информационной базы с устаревшей платформы 1С 8.2 на современную 8.3, да еще и с одновременным переходом с файлового варианта на клиент-серверный — это задача, требующая четкого понимания механизмов хранения данных. Часто пользователи сталкиваются с тем, что стандартная выгрузка и загрузка через файл .dt завершается фатальной ошибкой «Разрушена структура базы данных». В этой статье мы подробно разберем, почему это происходит и как правильно выполнить перенос данных, сохранив их целостность.
Проанализируем ситуацию: почему файл выгрузки .dt, который прекрасно загружается обратно в файловую версию 8.2, выдает ошибку при попытке развернуть его на сервере (например, под управлением PostgreSQL)? Основная причина кроется в том, что SQL-серверы предъявляют гораздо более жесткие требования к типам данных и структуре таблиц, чем файловая СУБД 1С. Рассмотрим основные факторы:
01.01.0001 или значения из далекого будущего/прошлого, которые СУБД (особенно PostgreSQL) просто не может записать в свои таблицы.1Cv8.1cd, но вызывают ошибку при попытке вставки в SQL-таблицу.Прежде чем делать какие-либо выгрузки, нам необходимо убедиться в физической целостности файла базы данных. Разберем по шагам, как это сделать:
Найдем в папке с установленной платформой 1С (обычно это C:\Program Files\1cv8\номер_версии\bin) утилиту chdbfl.exe. Запустим её и укажем путь к файлу нашей базы 1Cv8.1cd. Обязательно установим флаг «Исправлять обнаруженные ошибки». Эта утилита проверяет базу на уровне файловой структуры, восстанавливая заголовки таблиц и индексы, которые могли быть повреждены при некорректном завершении работы программы.
После физической проверки перейдем к логической. Откроем базу в режиме Конфигуратора на платформе 8.2 или 8.3 (в файловом варианте). Проанализируем настройки в меню «Администрирование» — «Тестирование и исправление».
Важно: Перед этой процедурой обязательно сделайте резервную копию!
При настройке ТиИ рекомендуется выбрать следующие пункты:
В полях «При наличии ссылок на несуществующие объекты» выберем «Очищать объекты» или «Создавать объекты» (в зависимости от вашей политики учета). После выполнения ТиИ база может уменьшиться в размере, так как удалятся временные таблицы и «мусор».
Рассмотрим метод «плавной» миграции. Вместо того чтобы сразу пытаться загрузить .dt из 8.2 на сервер 8.3, выполним следующие действия:
.dt из 8.2.После этого можно попробовать изменить формат базы данных. В Конфигураторе 8.3 перейдем в меню «Администрирование» — «Параметры информационной базы» и проверим размер страницы данных. Для современных баз рекомендуется использовать 8192 или выше. Это может помочь при последующей выгрузке на SQL.
Если метод с .dt все равно выдает ошибку структуры, разберем более надежный, хоть и более медленный способ — перенос через XML. Пользователи часто ошибаются, просто выгружая конфигурацию (файл .cf), что дает «пустую» базу весом в несколько сотен килобайт. Нам же нужно перенести именно записи таблиц.
Воспользуемся встроенной обработкой «Универсальный обмен данными в формате XML». Проанализируем алгоритм:
ВыгрузкаЗагрузкаДанныхXML.epf..cf) открываем ту же обработку и выполняем загрузку этого файла.Этот метод хорош тем, что 1С при записи каждого объекта в новую базу заново проверяет его на соответствие типам данных. Если какой-то документ содержит «битую» дату, загрузка выдаст конкретную ошибку, и вы сможете исправить этот объект в источнике.
Если вы используете PostgreSQL, выясним несколько критических моментов. Стандартная версия Postgres с официального сайта не оптимизирована для работы с 1С. Мы рекомендуем использовать только специализированные сборки от компании «1С» или «Postgres Professional».
При создании базы в консоли администрирования серверов 1С обратите внимание на параметры:
Russian_Russia.UTF-8.Если локаль сервера не совпадает с локалью базы, 1С не сможет правильно построить индексы, что приведет к ошибке структуры базы при первой же попытке загрузки данных.
Разберем типичное заблуждение: многие ожидают, что после перехода на 8.3 самописная база сразу станет выглядеть как «1С:Бухгалтерия 3.0» с управляемыми формами и желтым интерфейсом «Такси». Это не так.
Посмотрим на свойства конфигурации (корневой узел в дереве метаданных). Там есть свойство Режим совместимости. Если там стоит «Версия 8.2», то платформа 8.3 будет полностью имитировать поведение старой версии. Чтобы перейти на новый интерфейс, вам потребуется:
Однако для простого перехода на сервер и повышения производительности достаточно просто запустить базу на платформе 8.3 в режиме обычного приложения. Это уже позволит вам использовать преимущества 64-битного сервера и избежать ограничений файлового формата в 4 Гб на одну таблицу.
Подведем итог нашей совместной работы. Если база 1С 8.2 не «лезет» на сервер 8.3:
1Cv8.1cd через chdbfl.exe..dt сначала в файловую 8.3, а уже из неё выгрузить новый .dt для сервера.Следуя этим инструкциям, вы сможете успешно перевести вашу систему на современную платформу и подготовить её к дальнейшему развитию.