Резервная копия .bak от базы 1С: восстановление в СУБД, перевод в .dt и ошибки
Содержание
Файл .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 Server | TAPE | Восстановить в SQL Server той же или более новой версии |
| 🐘 Дамп PostgreSQL в формате custom | PGDMP | pg_restore в пустую базу |
📄 Переименованный файл 1Cv8.1CD | 1CDBMSV8 | Вернуть имя 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
- Скопируйте .bak на диск сервера, лучше в папку резервных копий экземпляра (по умолчанию
...\MSSQL\Backup) — у службы SQL Server там точно есть права. - В SSMS щёлкните правой кнопкой по узлу
Databasesи выберитеRestore Database.... - В блоке
SourceотметьтеDevice, нажмите..., добавьте файл .bak. - В поле
Databaseукажите новое имя, напримерbuh_copy. Так вы не затрёте рабочую базу. - На странице
Filesотметьте перенос файлов в папки данных и проверьте имена.mdfи.ldf— они не должны совпадать с файлами существующей базы. - Нажмите
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С, раскройте кластер, правой кнопкой по узлу
Информационные базы→Создать→Информационная база. - Заполните поля: имя базы в кластере, сервер баз данных, тип СУБД
MS SQL Server, имя базы данных (buh_copy), пользователя и пароль СУБД. - Флажок «Создать базу данных в случае её отсутствия» не нужен: база уже есть.
- Включите «Установить блокировку регламентных заданий». Для копии это обязательно — иначе она начнёт загружать банковские выписки, отправлять почту и запускать обмены от имени рабочей базы.
- В окне запуска 1С нажмите
Добавить→ добавление существующей базы → вариант «На сервере 1С:Предприятия», укажите кластер и имя базы в кластере.
При первом входе типовая конфигурация может сообщить, что база перемещена или является копией. Выберите вариант про копию — тогда работа с внешними ресурсами останется заблокированной.
Если восстанавливаете рабочую базу, а не копию
Бывает, что .bak нужен как раз для отката: после неудачного обновления или ошибочной групповой обработки. Порядок другой.
- Предупредите пользователей: все сеансы будут оборваны, несохранённые документы пропадут. Делайте это вне рабочего времени.
- В консоли кластера в свойствах базы включите блокировку начала сеансов и блокировку регламентных заданий, затем завершите оставшиеся сеансы.
- Сделайте свежую копию текущего состояния — на случай, если восстановили не тот файл.
- Переведите базу в однопользовательский режим и восстановите с заменой:
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;
- Снимите блокировку сеансов в консоли кластера.
Всё, что пользователи ввели после момента копии, пропадёт. Если копия от понедельника, а откат в четверг — документы за три дня придётся вносить заново или переносить выгрузкой из сохранённой в шаге 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С.
- Восстановите .bak в SQL Server или PostgreSQL и зарегистрируйте в кластере, как описано выше.
- Откройте базу в Конфигураторе:
Администрирование → Выгрузить информационную базу, укажите путь к файлу .dt. - Создайте пустую файловую базу: в окне запуска
Добавить→ создание новой базы → «Создание информационной базы без конфигурации». - Откройте пустую базу в Конфигураторе:
Администрирование → Загрузить информационную базу, выберите .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 экранируется обратной косой чертой, иначе строка обрежется.
Что проверить в настройке
Про модель восстановления: при модели FULL без регулярных копий журнала транзакций файл .ldf растёт без ограничений. Для большинства баз 1С без требований к восстановлению на минуту достаточно модели SIMPLE и ежедневной полной копии.
Целостность копии проверяйте командой:
RESTORE VERIFYONLY FROM DISK = N'D:\Backup\buh.bak' WITH CHECKSUM;
Она подтверждает, что файл читается, но не заменяет пробное восстановление.