Как исправить ошибку «В информационную базу загружены не все данные» при загрузке файла dt в 1С?

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

При попытке развернуть информационную базу из файла выгрузки .dt в файловом режиме разработчики и администраторы нередко сталкиваются с ошибкой: «Ошибка загрузки информационной базы. В информационную базу загружены не все данные». В результате процесс прерывается, а полученная база оказывается неработоспособной или пустой.

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

Причины возникновения ошибки

Проанализируем основные факторы, которые приводят к сбою при загрузке выгрузки .dt:

  1. Превышение лимита на размер одной таблицы в файловой базе (формат 1CD). Стандартный формат файловой базы (версия формата 8.2.14 с размером страницы 4 КБ) имеет строгое ограничение: размер любой отдельной внутренней таблицы не может превышать 4 ГБ. Если в исходной клиент-серверной (SQL) базе накопились большие объемы данных (например, регистры версионирования объектов, журнал регистрации, прикрепленные файлы в таблицах с типом ХранилищеЗначений или крупные регистры накопления), то при распаковке в файловую базу этот порог превышается, и загрузка падает с ошибкой.
  2. Ограничение виртуальной памяти 32-разрядного клиента. При выполнении загрузки через 32-битный толстый клиент 1cv8.exe процесс ограничен адресным пространством в 2–3 ГБ. В момент распаковки архива и перестроения индексов память переполняется.
  3. Повреждение файла выгрузки при передаче. Если файл .dt передавался через сеть, облачные диски или выгрузка на стороне сервера была прервана пользователем до завершения процесса, архив оказывается битым.
  4. Логические ошибки и повреждения структуры в исходной базе. Наличие битых ссылок, дублей внутренних идентификаторов метаданных или сбоев в системных таблицах позволяет платформе выгрузить данные, но препятствует их обратной загрузке.

Способ 1. Проверка целостности файла DT

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

  1. Попросим выгрузить базу повторно и поместить полученный файл в архив (RAR или ZIP) перед отправкой. Если файл повредится при пересылке, архиватор при распаковке выдаст сообщение о нарушении контрольной суммы CRC.
  2. Попробуем выполнить тестовую загрузку этого файла на том же компьютере или сервере, где производилась выгрузка. Если на исходном сервере загрузка также завершается ошибкой, значит исходная информационная база содержит логические ошибки или выгрузка была прервана.

Способ 2. Увеличение размера страницы файловой базы утилитой cnvdbfl

Если файл выгрузки получен из рабочей клиент-серверной базы, его размер в сжатом виде может составлять 600–900 МБ, а после распаковки таблицы превысят 4 ГБ. Начиная с платформы 8.3.8, в 1С появился расширенный формат файловых баз, поддерживающий размер страницы до 64 КБ.

Посмотрим на соответствие размера страницы и максимального объема внутренних файлов:

  1. При размере страницы 4096 байт (4 КБ) максимальный размер таблицы составляет 4 ГБ.
  2. При размере страницы 8192 байт (8 КБ) и выше максимальный размер таблицы расширяется до 6 ГБ, а общий объем адресуемого пространства существенно увеличивается.

Разберем по шагам, как подготовить базу нового формата для загрузки:

  1. Создадим новую пустую информационную базу через список баз 1С (по умолчанию она создается в формате 8.2.14 с размером страницы 4 КБ).
  2. Закроем конфигуратор и все сеансы работы с этой базой.
  3. Найдем системную утилиту конвертации cnvdbfl.exe, которая расположена в каталоге установки платформы (например, C:\Program Files\1cv8\8.3.X.XXXX\bin\cnvdbfl.exe).
  4. Запустим командную строку от имени администратора и выполним конвертацию формата базы и размера страницы (установим размер страницы 8 КБ или 64 КБ): cnvdbfl.exe -c -f 8.3.8 -p 65536 "C:\Bases\MyNewBase\1cv8.1cd"
  5. Проверим результат конвертации командой: cnvdbfl.exe -i "C:\Bases\MyNewBase\1cv8.1cd" Утилита должна вернуть параметры: Версия формата: 8.3.8 и Размер страницы: 65536.
  6. Откроем сконвертированную пустую базу в режиме «Конфигуратор» и повторно запустим операцию «Администрирование» → «Загрузить информационную базу...».

Способ 3. Развертывание информационной базы на SQL-сервере

Если таблицы базы содержат большие массивы данных типа ХранилищеЗначений (файлы, картинки, сканы документов) или объем отдельных таблиц превышает даже расширенные лимиты формата 1CD, развернуть такую базу в файловом варианте технически невозможно. В этом случае загрузку необходимо выполнять исключительно в клиент-серверном варианте.

Разберем порядок действий для загрузки на СУБД (например, Microsoft SQL Server или PostgreSQL):

  1. Установим СУБД (для целей разработки и тестирования подойдет бесплатная редакция MS SQL Server Express или адаптированный дистрибутив PostgreSQL для 1С).
  2. Установим серверную часть платформы «1С:Предприятие» и запустим службу Агент сервера 1С:Предприятия.
  3. Запустим утилиту «Администрирование серверов 1С Предприятия».
  4. В ветке рабочего кластера создадим новую информационную базу, указав параметры подключения к серверу СУБД (имя сервера, имя базы данных, учетную запись администратора СУБД и пароль).
  5. Добавим созданную серверную базу в список запуска 1С.
  6. Запустим базу в режиме «Конфигуратор» и выполним загрузку файла .dt. В клиент-серверном режиме ограничения на 4 ГБ на таблицу отсутствуют, поэтому данные загрузятся полностью.

Способ 4. Очистка и оптимизация базы на стороне источника

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

  1. Перенос файлов в тома на диске: если в конфигурации включено хранение файлов в базе, настроим перенос файлов в тома на сетевом или локальном диске через панель администрирования. Это моментально разгрузит таблицу двоичных данных.
  2. Очистка версионирования: выполним удаление устаревших версий объектов в регистре сведений ВерсииОбъектов.
  3. Сжатие таблиц и реструктуризация: запустим процедуру «Администрирование» → «Тестирование и исправление...» с установленными флагами Реиндексация таблиц информационной базы и Сжатие таблиц информационной базы.
  4. После выполнения регламентных процедур повторно сформируем файл выгрузки .dt и выполним его загрузку.
← На главную