Разберем типичную техническую проблему, с которой часто сталкиваются администраторы и разработчики при переносе архивных баз данных. При попытке загрузить выгрузку информационной базы с расширением .dt, созданную в старых версиях (например, конфигурации «Бухгалтерия предприятия 1.6» на платформе 8.2), в чистую базу на современной платформе линейки 8.3 возникает критический сбой: Ошибка SDBL: Разрушена структура базы данных 1С:Предприятия.
Проанализируем техническую природу этой неполадки, рассмотрим быстрое решение через корректировку метаданных конфигурации, а также разберем более надежные производственные альтернативы загрузки тяжелых баз.
Выясним причину такого поведения платформы. Файл .dt не представляет собой физический дамп таблиц СУБД (такой как бэкап MS SQL или PostgreSQL). Это аппаратно-независимый сериализованный архив логической структуры и данных конфигурации. В момент выполнения команды «Загрузить информационную базу» платформа 1С заново генерирует таблицы в СУБД с помощью внутреннего языка описания схем данных — SDBL (Simple Data Base Language).
В конфигурациях эпохи 8.2 (и тем более 8.1, под которую изначально проектировалась БП 1.6) свойство конфигурации РежимСовместимости установлено в значение Версия 8.1 или Версия 8.2.13. Современные сборки платформы 8.3.x содержат существенно переработанные механизмы генерации низкоуровневых служебных таблиц (Config, Params, Files, таблицы итогов регистров). При попытке воссоздать физическую схему базы с устаревшими правилами транслятора SDBL процесс загрузки прерывается, сообщая о нарушении внутренней структуры.
Дополнительным отягчающим фактором выступает размер базы. Если объем базы составляет десятки гигабайт (например, 30 ГБ), механизм загрузки .dt испытывает предельные нагрузки по оперативной памяти рабочих процессов кластера, блокировкам и размеру базы tempdb, что еще больше увеличивает вероятность сбоя реструктуризации.
Самый прямой способ заставить транслятор SDBL корректно сгенерировать структуры данных под управлением платформы 8.3 — обновить режим совместимости конфигурации в исходной среде. Разберем этот процесс по шагам:
.dt на тестовом сервере или локальной файловой базе под управлением той платформы, на которой она гарантированно открывается (1С:Предприятие 8.2).Конфигуратор.Режим совместимости. Как правило, в старых типовых решениях там выставлено значение Версия 8.1.Режим совместимости на требуемую версию (например, Версия 8.3... или отключим режим совместимости, выбрав Не использовать).DBSchema) по правилам современной платформы.Администрирование -> Выгрузить информационную базу....Обратите внимание на скрытые риски: переключение режима совместимости для конфигураций класса «Бухгалтерия предприятия 1.6» решает проблему загрузки файла, но может вызвать ошибки во время работы пользователей (run-time). В платформе 8.3 значительно строже проверяется синтаксис запросов, запрещены устаревшие модальные вызовы (Вопрос(), ОткрытьФормуМодально()), а также проверяется уникальность идентификаторов метаданных. Кроме того, старые конфигурации могут запускаться исключительно в режиме «Толстый клиент (обычное приложение)».
Рассмотрим лучший подход для переноса баз значительного объема (от 10 ГБ и выше). Профессиональное правило администрирования 1С гласит: выгрузка в .dt не является полноценным бэкапом и не предназначена для переноса тяжелых промышленных баз. Использование штатных средств СУБД позволяет полностью обойти ограничения парсера SDBL и сохранить исходный режим совместимости без риска сломать программный код конфигурации.
.bak в Microsoft SQL Server либо снимем дамп утилитой pg_dump для PostgreSQL на старом сервере.Если требуется сохранить формат .dt и оставить исходный режим совместимости Версия 8.1, прямой переход на современные релизы (например, 8.3.25–8.3.27) может быть невозможен из-за прекращения поддержки старых форматов сериализации. В таком случае применим ступенчатую схему:
8.2.19.130).Администрирование -> Тестирование и исправление). Включим проверки: Реиндексация таблиц информационной базы, Реструктуризация таблиц информационной базы и Проверка логической целостности..dt и загрузим его на промежуточную платформу линейки 8.3 (например, 8.3.8 или 8.3.14), где сохранялась обратная совместимость со старыми схемами SDBL..dt, который будет корректно воспринят актуальными релизами 1С:Предприятия.Если цель переноса — архивное хранение справочников и проведенных документов, а не сохранение низкоуровневой структуры старой платформы, целесообразно перенести чистые данные. Для этого создадим пустую конфигурацию на целевой платформе 8.3 и применим внешнюю обработку Выгрузка и загрузка данных XML. Данный метод переносит непосредственно прикладные объекты базы, полностью исключая зависимость от системных таблиц конфигурации и различий трансляторов SDBL.