Куда 1С сохраняет резервную копию базы перед обновлением и как её найти

· 9 мин

Содержание

Копия 1С при обновлении хранится там, куда её указали в помощнике обновления: в окне «Обновление версии программы» есть блок резервного копирования с полем каталога. Если там стояло «не создавать» или «временная копия», постоянного файла может не быть вовсе. При обновлении через Конфигуратор программа сама копий не делает: файл .dt или .cf лежит только там, куда вы его выгрузили вручную.

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

Как 1С делает копию при обновлении из пользовательского режима

В типовых конфигурациях на 8.3 (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) обновление из режима Предприятия запускают так: Администрирование → Обслуживание → Обновление версии программы. Помощник скачивает или берёт из файла обновление, а затем показывает экран подтверждения. На нём есть ссылка на настройки резервного копирования.

Вариантов там три:

  • 🚫 Не создавать резервную копию. Никакого файла не будет. Если откат понадобится, рассчитывать придётся на собственные копии.
  • ⏳ Создать временную копию. Копия нужна, чтобы откатиться, если обновление упадёт. После успешного обновления на неё не рассчитывайте.
  • 💾 Создать копию и сохранить в каталоге. Это единственный вариант, при котором файл гарантированно остаётся на диске. Путь к каталогу виден в этом же окне.

Что важно знать о механизме:

  1. Помощник закрывает программу и запускает внешний скрипт обновления. Скрипт работает от имени того пользователя Windows, который нажал «Обновить».
  2. Копия создаётся до загрузки новой конфигурации. Если на этом шаге произошла ошибка, обновление обычно не продолжается.
  3. Скрипт и его журнал лежат во временной папке пользователя (%TEMP%). Журнал помогает понять, создалась ли копия и куда она записана.

Перед следующим обновлением откройте настройки копирования в помощнике и выберите сохранение в конкретный каталог. Тогда вопрос «где копия» больше не возникнет.

Копии клиент-серверной базы при обновлении

В серверном варианте данные лежат не в файле 1Cv8.1CD, а в СУБД: Microsoft SQL Server или PostgreSQL. Встроенная копия помощника обновления здесь работает иначе. Для клиент-серверной базы помощник предлагает сделать копию средствами СУБД, а не берёт это на себя.

Поэтому копия серверной базы, если её сделали, лежит в одном из трёх мест:

Чем делали копиюГде искатьФормат
Резервное копирование SQL Server (план обслуживания или вручную)Каталог из задания или каталог по умолчанию ...\MSSQL\Backup в папке установки экземпляра.bak
PostgreSQL, утилита pg_dumpПуть из параметра -f или куда перенаправили вывод в скрипте.backup, .sql, .dump (как назвали)
Выгрузка через КонфигураторКаталог, указанный при выгрузке.dt

У SQL Server путь по умолчанию задан в свойствах экземпляра. Откройте Management Studio, правой кнопкой по серверу → Properties → Database Settings, раздел путей по умолчанию. Там видно каталог для копий.

История копий тоже хранится в самом SQL Server, в базе msdb. Запрос покажет, куда записывались последние копии нужной базы:

SELECT TOP 20
    bs.database_name,
    bs.backup_finish_date,
    bmf.physical_device_name
FROM msdb.dbo.backupset bs
JOIN msdb.dbo.backupmediafamily bmf
    ON bs.media_set_id = bmf.media_set_id
WHERE bs.database_name = 'buh_base'
ORDER BY bs.backup_finish_date DESC;

Замените buh_base на имя базы в СУБД. Оно указано в свойствах информационной базы в консоли кластера и может не совпадать с названием в списке баз 1С.

Копии SQL Server пишутся на диск сервера СУБД, а не на компьютер пользователя. Искать .bak на рабочем месте бухгалтера бесполезно.

Где задаётся каталог для копий в настройках

Каталог можно задать в трёх местах, и это разные настройки.

Помощник обновления

Настройка копирования при обновлении задаётся прямо на экране подтверждения обновления. Выбираете вариант «сохранять в каталоге» и указываете папку. Программа запоминает выбор для следующих обновлений.

Пишите копии не на тот же диск, что и база, если есть другой. Отказ диска в этом случае уносит и базу, и копию.

Регулярное резервное копирование файловой базы

В типовых конфигурациях есть отдельная настройка: Администрирование → Обслуживание → Резервное копирование и восстановление. Там включают автоматическое копирование по расписанию, задают каталог и число хранимых копий. Работает это для файловых баз под Windows.

Эта настройка не связана с помощником обновления. Регулярные копии лежат в своём каталоге, даже если при обновлении вы выбрали «не создавать».

Каталог шаблонов конфигураций и обновлений

Это не копии базы, но их часто путают. Сюда платформа складывает дистрибутивы конфигураций и файлы обновлений .cfu. По умолчанию это %APPDATA%\1C\1cv8\tmplts. Сменить путь можно в окне запуска 1С: кнопка Настройка... → «Каталоги шаблонов конфигураций и обновлений».

Внутри папки разложены по поставщику, конфигурации и номеру релиза, например tmplts\1c\Accounting\3_0_xxx_yy. Данных организации там нет.

Какие файлы бывают и что в каждом

Найти файл мало, надо понять, что в нём. От формата зависит, восстановится ли вся база или только программа.

ФайлЧто внутриПодходит для отката после обновления
.dtВся информационная база: конфигурация, данные, пользователи✅ Да, полностью
.cfТолько конфигурация, без данных⚠️ Только программа, данные останутся новыми
.cfuФайл обновления от поставщика❌ Нет, это не копия
.zip с 1Cv8.1CDКопия файловой базы целиком✅ Да, после распаковки
.bakКопия базы SQL Server✅ Да, через СУБД
.cfeРасширение конфигурации❌ Только расширение

Чаще всего путают .cf и .dt. Файл .cf весит десятки мегабайт и выглядит как «копия», но документов в нём нет. Если после обновления пропали данные, .cf не поможет.

Сравните размер. Файл .dt рабочей базы обычно весит сотни мегабайт или гигабайты. Копия на 40–80 МБ почти наверняка .cf или пустая база.

Как найти копию на диске, если путь забыт

Начните с журнала. Скрипт обновления пишет протокол во временную папку. Откройте %TEMP% через Win+R, отсортируйте по дате изменения и посмотрите папки и файлы, созданные в момент обновления. В протоколе указано, создавалась ли копия.

Если журнала нет, ищите по диску. В PowerShell это делается одной командой:

Get-ChildItem -Path C:\, D:\ -Recurse -Include *.dt, *.bak, *.zip -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) -and $_.Length -gt 50MB } |
    Sort-Object LastWriteTime -Descending |
    Select-Object FullName, LastWriteTime, @{n='MB';e={[math]::Round($_.Length/1MB)}}

Команда показывает файлы нужных типов, изменённые за 14 дней и крупнее 50 МБ. Поменяйте диски и срок под свою ситуацию.

Где ещё проверить:

  • 📁 папку, где лежит сама база: многие указывают каталог копий рядом с 1Cv8.1CD;
  • 📁 «Документы» и «Рабочий стол» пользователя, который запускал обновление;
  • 📁 сетевую папку, если база на файловом сервере;
  • 📁 каталог из настроек регулярного копирования в разделе Администрирование → Обслуживание;
  • 🗑️ корзину: копии иногда удаляют при чистке диска.

Если обновление запускали на терминальном сервере, папки %TEMP% и «Документы» принадлежат профилю конкретного пользователя на этом сервере. Искать надо под его учётной записью или в C:\Users\<имя>.

Как делать копии автоматически скриптом

Самый надёжный вариант — не надеяться на помощник, а делать копию перед обновлением своим скриптом. Конфигуратор умеет выгружать базу из командной строки.

Пример .bat для файловой базы:

@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set BASE="D:\Bases\Buh"
set DEST=E:\Backup1C
set STAMP=%date:~6,4%-%date:~3,2%-%date:~0,2%

%V8% DESIGNER /F %BASE% /N "Администратор" /P "пароль" ^
  /DumpIB "%DEST%\buh_%STAMP%.dt" ^
  /Out "%DEST%\buh_%STAMP%.log" /DisableStartupMessages

Что поменять под себя:

  1. Путь к 1cv8.exe — по вашей версии платформы, папка bin внутри каталога установки.
  2. /F — путь к папке файловой базы. Для серверной базы вместо него /S "сервер\имя_базы".
  3. /N и /P — пользователь с правами администратора в базе.
  4. DEST — каталог для копий.

Формат даты в %date% зависит от региональных настроек Windows. Строка STAMP рассчитана на вид ДД.ММ.ГГГГ; проверьте, что имя файла получается правильным.

Для копии только конфигурации тот же вызов, но с ключом /DumpCfg "путь.cf" вместо /DumpIB.

Пароль в открытом виде в .bat виден всем, кто имеет доступ к файлу. Держите скрипт в папке с ограниченными правами.

Запускайте выгрузку, когда пользователи вышли из базы: так в копию не попадут недописанные данные. Для регулярного запуска подойдёт Планировщик заданий Windows. Добавьте в скрипт удаление копий старше N дней, иначе диск переполнится за пару месяцев.

Копии SQL Server автоматизируют планом обслуживания в Management Studio, PostgreSQL — заданием с pg_dump в планировщике.

Почему копия не создалась или её нельзя открыть

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

Ещё одна частая причина — антивирус. Он может блокировать скрипт обновления, запускаемый из %TEMP%, или файл 1Cv8.1CD в момент копирования. Если такое повторяется, добавьте каталог базы и каталог копий в исключения.

Как вернуть базу из найденной копии

Сначала решите, что именно откатываете. Вернуть только программу и вернуть всю базу — разные операции.

Восстановление из .dt

  1. Попросите всех пользователей выйти из базы. Загрузка .dt полностью заменяет все данные базы, документы после момента копии пропадут.
  2. Откройте базу в Конфигураторе.
  3. Выберите Администрирование → Загрузить информационную базу и укажите файл .dt.
  4. Дождитесь сообщения о завершении и перезапустите программу.

Надёжнее загрузить .dt в новую пустую базу и проверить её. Если всё в порядке, работайте с ней, а старую сохраните как есть.

Восстановление из архива файловой базы

  1. Создайте пустую папку и распакуйте архив туда. Внутри должен оказаться 1Cv8.1CD.
  2. В окне запуска 1С нажмите Добавить → «Добавление в список существующей информационной базы» и укажите эту папку.
  3. Откройте базу, проверьте последние документы и остатки.

Не распаковывайте архив поверх рабочей базы. Сначала проверьте копию отдельно.

Восстановление из .cf

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

Восстановление серверной базы

Копию .bak восстанавливают в SQL Server, а дамп pg_dump — утилитой pg_restore или psql, в зависимости от формата дампа. Восстановление поверх рабочей базы оборвёт сеансы пользователей. Делайте это вне рабочего времени и предупредите людей заранее.

Удобный приём: восстановить копию в новую базу СУБД, зарегистрировать её в кластере под другим именем и сверить данные. Рабочую базу заменяйте только после проверки.

Удаляет ли 1С старые копии сама?
Временную копию помощник обновления не сохраняет после успешного обновления. Копии в указанном каталоге сам не удаляет. Регулярное копирование хранит заданное в настройках число копий.
Можно ли хранить копии в облаке?
Да. Укажите каталог синхронизируемой облачной папки или копируйте файлы туда скриптом. Следите, чтобы синхронизация не начиналась, пока файл ещё пишется.
Нужна ли копия, если обновляет обслуживающая фирма?
Нужна. Спросите, куда они её сохранили, и держите свою отдельно. Без копии откат обновления невозможен.
Сколько копий хранить?
Обычно хватает последних 7–14 ежедневных копий и одной копии перед каждым обновлением. Копии перед обновлением храните, пока не закрыт ближайший отчётный период.