Резервная копия .bak от базы 1С: восстановление в СУБД, перевод в .dt и ошибки

· 10 мин

Содержание

Файл .bak в 1С напрямую не открыть: это не формат платформы, а чаще всего резервная копия базы данных Microsoft SQL Server. Чтобы попасть в данные, файл восстанавливают в SQL Server (через SSMS или командой RESTORE DATABASE), затем регистрируют полученную базу в кластере серверов 1С и добавляют в список баз. Если нужна файловая база, из восстановленной копии выгружают .dt и загружают его в пустую базу.

Типичная ситуация: администратор уволился, на диске осталась папка Backup с файлами buh_2026_10_01.bak, а главбуху нужно посмотреть данные за прошлый квартал. Пункта «Открыть .bak» в 1С нет, и двойной щелчок ничего не даёт. Порядок зависит от того, какая программа создала файл.

Что лежит внутри .bak и чем он отличается от .dt

Расширение .bak ничего не говорит о содержимом: его ставят разные программы. Для базы 1С вариантов обычно четыре.

Что внутриПервые байты файлаКак открыть
💾 Копия базы MS SQL ServerTAPEВосстановить в SQL Server той же или более новой версии
🐘 Дамп PostgreSQL в формате customPGDMPpg_restore в пустую базу
📄 Переименованный файл 1Cv8.1CD1CDBMSV8Вернуть имя 1Cv8.1CD и подключить папку как файловую базу
🗜 Архив резервной копииPKРаспаковать архиватором, внутри обычно .1CD или .dt

Проверить сигнатуру можно без сторонних программ. В PowerShell:

Format-Hex -Path "D:\Backup\buh.bak" | Select-Object -First 1

В Linux:

head -c 16 /backup/buh.bak | xxd

Чем .bak отличается от .dt:

  • .dt — выгрузка информационной базы средствами самой 1С (Администрирование → Выгрузить информационную базу в Конфигураторе). Он не зависит от СУБД: его можно загрузить и в файловую базу , и в серверную на любой поддерживаемой СУБД.
  • .bak от SQL Server — копия базы данных целиком на уровне СУБД. Ни Конфигуратор, ни режим «Предприятие» его не читают. Восстановить его можно только в SQL Server.
  • Скорость. На больших базах копия СУБД снимается и восстанавливается в разы быстрее .dt, поэтому администраторы серверных баз почти всегда делают именно .bak.

Размер подскажет, что перед вами. Копия SQL Server обычно близка к объёму базы, архив и дамп PostgreSQL в формате custom — заметно меньше.

Восстановление .bak в Microsoft SQL Server и подключение к 1С

Нужен экземпляр SQL Server с версией не ниже той, на которой сделана копия. Восстановить копию с SQL Server 2019 на 2016 нельзя — только на 2019 и новее.

Через SQL Server Management Studio

  1. Скопируйте .bak на диск сервера, лучше в папку резервных копий экземпляра (по умолчанию ...\MSSQL\Backup) — у службы SQL Server там точно есть права.
  2. В SSMS щёлкните правой кнопкой по узлу Databases и выберите Restore Database....
  3. В блоке Source отметьте Device, нажмите ..., добавьте файл .bak.
  4. В поле Database укажите новое имя, например buh_copy. Так вы не затрёте рабочую базу.
  5. На странице Files отметьте перенос файлов в папки данных и проверьте имена .mdf и .ldf — они не должны совпадать с файлами существующей базы.
  6. Нажмите OK и дождитесь сообщения об успешном восстановлении.

Командой T-SQL

Сначала узнайте логические имена файлов внутри копии:

RESTORE FILELISTONLY FROM DISK = N'D:\Backup\buh.bak';

Затем восстановите под новым именем, переложив файлы:

RESTORE DATABASE [buh_copy]
FROM DISK = N'D:\Backup\buh.bak'
WITH MOVE N'buh'     TO N'D:\SQLData\buh_copy.mdf',
     MOVE N'buh_log' TO N'D:\SQLData\buh_copy_log.ldf',
     RECOVERY, STATS = 10;

Вместо buh и buh_log подставьте значения из колонки LogicalName первого запроса.

Регистрация базы в кластере 1С

После восстановления в SQL Server есть база данных, но 1С о ней не знает.

  1. Откройте консоль администрирования серверов 1С, раскройте кластер, правой кнопкой по узлу Информационные базы → Создать → Информационная база.
  2. Заполните поля: имя базы в кластере, сервер баз данных, тип СУБД MS SQL Server, имя базы данных (buh_copy), пользователя и пароль СУБД.
  3. Флажок «Создать базу данных в случае её отсутствия» не нужен: база уже есть.
  4. Включите «Установить блокировку регламентных заданий». Для копии это обязательно — иначе она начнёт загружать банковские выписки, отправлять почту и запускать обмены от имени рабочей базы.
  5. В окне запуска 1С нажмите Добавить → добавление существующей базы → вариант «На сервере 1С:Предприятия», укажите кластер и имя базы в кластере.

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

Если восстанавливаете рабочую базу, а не копию

Бывает, что .bak нужен как раз для отката: после неудачного обновления или ошибочной групповой обработки. Порядок другой.

  1. Предупредите пользователей: все сеансы будут оборваны, несохранённые документы пропадут. Делайте это вне рабочего времени.
  2. В консоли кластера в свойствах базы включите блокировку начала сеансов и блокировку регламентных заданий, затем завершите оставшиеся сеансы.
  3. Сделайте свежую копию текущего состояния — на случай, если восстановили не тот файл.
  4. Переведите базу в однопользовательский режим и восстановите с заменой:
ALTER DATABASE [buh] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE [buh] FROM DISK = N'D:\Backup\buh.bak' WITH REPLACE, RECOVERY;
ALTER DATABASE [buh] SET MULTI_USER;
  1. Снимите блокировку сеансов в консоли кластера.

Всё, что пользователи ввели после момента копии, пропадёт. Если копия от понедельника, а откат в четверг — документы за три дня придётся вносить заново или переносить выгрузкой из сохранённой в шаге 3 копии.

Копия базы 1С на PostgreSQL: как восстановить дамп

У PostgreSQL нет «родного» .bak. Под этим расширением админы сохраняют вывод pg_dump. Сначала определите формат: если файл начинается с PGDMP — это custom-формат для pg_restore, если внутри читаемый текст с командами CREATE TABLE — обычный SQL-скрипт.

Сервер PostgreSQL для 1С должен быть сборкой с патчами для 1С (например, Postgres Pro или дистрибутив, который поставляет фирма 1С), версия — не ниже той, где сделан дамп.

Восстановление custom-дампа:

createdb -U postgres -T template0 buh_copy
pg_restore -U postgres -d buh_copy -j 4 /backup/buh.bak

Ключ -j 4 запускает восстановление в 4 потока — на больших базах это экономит часы. Посмотреть содержимое дампа без восстановления можно командой pg_restore -l /backup/buh.bak.

Восстановление SQL-скрипта:

createdb -U postgres -T template0 buh_copy
psql -U postgres -d buh_copy -f /backup/buh.bak

Дальше всё как для SQL Server: регистрация в консоли кластера, только тип СУБД — PostgreSQL, и тот же флажок блокировки регламентных заданий.

Как перевести .bak в .dt или в файловую базу

Готового конвертера .bak → .dt нет. Путь один: восстановить копию в СУБД и выгрузить базу средствами 1С.

  1. Восстановите .bak в SQL Server или PostgreSQL и зарегистрируйте в кластере, как описано выше.
  2. Откройте базу в Конфигураторе: Администрирование → Выгрузить информационную базу, укажите путь к файлу .dt.
  3. Создайте пустую файловую базу: в окне запуска Добавить → создание новой базы → «Создание информационной базы без конфигурации».
  4. Откройте пустую базу в Конфигураторе: Администрирование → Загрузить информационную базу, выберите .dt. Загрузка требует монопольного доступа — в базе не должно быть других пользователей.

Выгрузку можно запустить без интерфейса, например в скрипте:

"C:\Program Files\1cv8\8.3.25.1394\bin\1cv8.exe" DESIGNER /S "srv1c\buh_copy" /N "Администратор" /P "пароль" /DumpIB "D:\dt\buh.dt" /Out "D:\dt\dump.log"

Номер платформы в пути замените на свой. Результат и ошибки окажутся в dump.log.

Если SQL Server под рукой нет, для разовой задачи подойдёт бесплатный SQL Server Express. Ограничение — 10 ГБ на одну базу: копию крупнее восстановить в нём не получится, понадобится Developer Edition (тоже бесплатна, но только для тестов и разработки) или рабочий сервер.

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

Ошибки при открытии и восстановлении .bak

Большинство сбоев видно по тексту сообщения SQL Server. Выберите свой случай:

Диагностика: выберите симптом

Ещё две проблемы возникают уже на стороне 1С:

  • 🔑 База не открывается после регистрации в кластере — проверьте, что в свойствах базы указаны верный сервер СУБД и учётная запись с правами на восстановленную базу.
  • 🧩 Платформа требует более новую версию — копия снята с базы, которую обслуживала платформа с бо́льшим номером. Установите платформу с номером не ниже исходной.

Резервное копирование по расписанию

Чтобы .bak в нужный момент оказался свежим и рабочим, копирование настраивают один раз.

SQL Server Standard и выше

Используйте план обслуживания (Management → Maintenance Plans) с задачей резервного копирования и очисткой старых копий. Задание выполнит SQL Server Agent.

SQL Server Express

Агента в Express нет, поэтому копию запускает Планировщик заданий Windows с командой sqlcmd:

sqlcmd -S localhost -E -Q "BACKUP DATABASE [buh] TO DISK = N'D:\Backup\buh.bak' WITH INIT, CHECKSUM"
forfiles /p "D:\Backup" /m *.bak /d -14 /c "cmd /c del @path"

Вторая строка удаляет копии старше 14 дней. Если нужно хранить несколько дней, формируйте имя файла с датой в PowerShell-скрипте и вызывайте sqlcmd из него.

PostgreSQL

Задание cron на Linux:

0 2 * * * pg_dump -U postgres -Fc -f /backup/buh_$(date +\%F).backup buh

Знак % в crontab экранируется обратной косой чертой, иначе строка обрежется.

Что проверить в настройке

Проверка резервного копирования базы 1С
Выполнено: 0 / 5

Про модель восстановления: при модели FULL без регулярных копий журнала транзакций файл .ldf растёт без ограничений. Для большинства баз 1С без требований к восстановлению на минуту достаточно модели SIMPLE и ежедневной полной копии.

Целостность копии проверяйте командой:

RESTORE VERIFYONLY FROM DISK = N'D:\Backup\buh.bak' WITH CHECKSUM;

Она подтверждает, что файл читается, но не заменяет пробное восстановление.

Частые вопросы

Можно ли открыть .bak в 1С без SQL Server?
Если внутри копия SQL Server — нет. Нужен экземпляр SQL Server, хотя бы бесплатный Express или Developer. Если это переименованный 1Cv8.1CD или архив, SQL Server не нужен.
Можно ли достать из .bak только один документ или справочник?
Напрямую из файла — нет. Восстановите копию как отдельную базу, найдите нужные данные и перенесите их выгрузкой-загрузкой или вручную.
Сколько места нужно для восстановления?
Примерно столько, сколько занимала исходная база с журналом транзакций, плюс сам .bak. Размер файлов можно оценить по колонке Size в результате RESTORE FILELISTONLY.
Подойдёт ли .bak от SQL Server для переноса на PostgreSQL?
Нет. Между разными СУБД базу 1С переносят только через .dt: восстановить в SQL Server, выгрузить .dt, загрузить в базу на PostgreSQL.
Нужна ли отдельная лицензия для восстановленной копии?
Сама копия лицензию не занимает. Лицензию берёт каждый сеанс пользователя, поэтому вход в копию расходует лицензии так же, как вход в рабочую базу.