Копирование информационной базы 1С 8.3: от папки до серверной СУБД

· 9 мин

Содержание

Самый частый промах при копировании — скопировать папку базы, пока в ней ещё кто-то работает. Файл 1Cv8.1CD в этот момент открыт и меняется, и копия приедет битой: откроется с ошибкой или потеряет часть данных. Поэтому первое правило — все выходят из базы, и только потом копируем.

Способ копирования зависит от того, какая у вас база. Файловую можно просто скопировать как папку. Серверную (клиент-серверную) так скопировать нельзя — она лежит не в папке, а в СУБД, и для копии нужен либо механизм 1С (выгрузка *.dt), либо средства самой СУБД (бэкап). Ниже — все четыре рабочих варианта: копирование папки, выгрузка и загрузка через конфигуратор, копия серверной базы и перенос готовой копии на другой компьютер.

Как понять, файловая у вас база или серверная

От типа базы зависит выбор способа, поэтому определите его до начала.

Откройте окно запуска 1С (ярлык «1С:Предприятие»). Выделите нужную базу в списке — внизу окна появится строка с её расположением:

  • строка вида File="C:\Bases\Buh" — файловая база, данные в папке C:\Bases\Buh;
  • строка вида Srvr="server-1c";Ref="buh" — серверная база, данные в СУБД на сервере server-1c, имя базы в кластере — buh.

Эта же строка видна по кнопке Изменить в окне запуска — поле «Строка соединения».

Какой способ копирования вам подходит?

Что сделать перед копированием

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

Перед копированием базы
Выполнено: 0 / 5

Пока хоть один сеанс открыт, файл базы заблокирован. Копирование папки «на живую» даёт повреждённую копию. Как выгнать всех из базы — в разделе про типичные ошибки ниже.

Короткое сравнение способов, чтобы выбрать свой:

СпособДля каких базСкоростьЧто нужно
Копирование папкитолько файловаяочень быстрозакрыть базу у всех
Выгрузка/загрузка *.dtфайловая и сервернаямедленно на большихмонопольный доступ
Бэкап средствами СУБДтолько сервернаябыстро даже на большихдоступ к SQL-серверу
Перенос + переименованиелюбаязависит от способа копиипуть/имя на новом месте

Способ 1. Скопировать папку файловой базы

Файловая база — это обычная папка, внутри которой лежит файл данных 1Cv8.1CD и служебные файлы (1Cv8.lgf — журнал регистрации, папка 1Cv8Log и т. п.). Скопировать базу = скопировать эту папку.

  1. Убедитесь, что база закрыта у всех пользователей.
  2. Откройте расположение базы (путь вы посмотрели выше, строка File=...).
  3. Скопируйте всю папку целиком в новое место — например, C:\Bases\Buh → C:\Bases\Buh_copy. Проводником, Total Commander, командой xcopy — чем удобнее.
  4. Откройте окно запуска 1С, нажмите Добавить → «Добавление в список существующей информационной базы».
  5. Задайте понятное имя копии (например, «Бухгалтерия — копия от 07.10») и укажите путь к новой папке C:\Bases\Buh_copy.

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

Для быстрой «точки отката» перед обновлением или рискованной операцией этот способ — самый удобный: минута на копирование папки, и есть куда вернуться.

Не копируйте только файл 1Cv8.1CD без остальной папки — без журнала регистрации и служебных файлов часть функций копии может работать некорректно. Копируйте папку целиком.

Способ 2. Выгрузить и загрузить базу через конфигуратор (.dt)

Выгрузка в файл *.dt — это «слепок» всей базы в одном файле. Способ работает и для файловых, и для серверных баз, поэтому он универсальный: им переносят базу на другой компьютер, из файлового варианта в серверный и обратно.

Выгрузка (создание .dt):

  1. Откройте базу в режиме Конфигуратор.
  2. Меню Администрирование → Выгрузить информационную базу….
  3. Укажите имя и папку для файла, например Buh_2026-10-07.dt. Нажмите Сохранить.

Дождитесь окончания — на больших базах это десятки минут.

Загрузка (восстановление из .dt):

  1. Создайте, куда загружать. В окне запуска Добавить → «Создание новой информационной базы» → «Создание информационной базы без конфигурации…». Назовите её и укажите папку.
  2. Откройте новую базу в Конфигураторе.
  3. Меню Администрирование → Загрузить информационную базу…, выберите ваш *.dt.
  4. Платформа предупредит, что все данные в базе-приёмнике будут заменены. Подтвердите.

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

Минус способа — скорость. Файл *.dt пакует данные, и на базе в несколько десятков гигабайт выгрузка и особенно загрузка идут долго. Для крупных серверных баз способ 3 обычно быстрее.

Способ 3. Скопировать серверную базу через СУБД

Серверную базу нельзя скопировать как папку — её данные лежат в базе данных MS SQL Server или PostgreSQL. Вариантов два.

Вариант А — через *.dt (способ 2 выше). Работает всегда, не требует прав на SQL-сервере, но медленный на больших объёмах.

Вариант Б — бэкап средствами СУБД. Быстрее для больших баз, но нужен доступ к SQL-серверу. Общая логика одинакова для MS SQL и PostgreSQL:

  1. Средствами СУБД сделайте резервную копию базы данных (в MS SQL — BACKUP DATABASE, в PostgreSQL — pg_dump). Бэкап можно снимать без остановки работы пользователей.
  2. Восстановите эту копию в новую базу данных с другим именем на том же или другом SQL-сервере (в MS SQL — RESTORE DATABASE с новым именем, в PostgreSQL — pg_restore в созданную заранее БД).
  3. Зарегистрируйте восстановленную базу как новую информационную базу кластера 1С. В консоли администрирования серверов: правой кнопкой на «Информационные базы» → Создать → Информационная база. Укажите имя новой базы, SQL-сервер и имя восстановленной базы данных.

Для MS SQL Server шаги 1–2 на языке запросов выглядят так (buh — рабочая база данных, buh_copy — копия):

-- 1. снять бэкап рабочей базы
BACKUP DATABASE buh TO DISK = N'D:\Backup\buh.bak' WITH INIT;

-- 2. восстановить его в новую базу buh_copy с переназначением файлов
RESTORE DATABASE buh_copy FROM DISK = N'D:\Backup\buh.bak'
WITH MOVE 'buh'     TO N'D:\MSSQL\DATA\buh_copy.mdf',
     MOVE 'buh_log' TO N'D:\MSSQL\DATA\buh_copy_log.ldf';

Логические имена файлов (buh, buh_log) и пути подставьте свои — посмотреть их можно командой RESTORE FILELISTONLY FROM DISK = N'D:\Backup\buh.bak'.

Для PostgreSQL та же логика через pg_dump и pg_restore:

# 1. выгрузить рабочую базу в архив
pg_dump -U postgres -F c -f buh.dump buh

# 2. создать пустую базу-копию и восстановить в неё
createdb -U postgres buh_copy
pg_restore -U postgres -d buh_copy buh.dump

На шаге 3 снимите флажок «Создать базу данных в случае её отсутствия». Иначе кластер создаст поверх восстановленных данных пустую базу и копия окажется чистой. Флажок нужен только при создании базы с нуля.

Если точных пунктов консоли администрирования под рукой нет, их названия стабильны между релизами платформы: регистрация базы всегда идёт через контекстное меню узла «Информационные базы» в кластере.

Размер базы данных в СУБД и имя 1С-базы в кластере — разные вещи. В кластере можно дать копии любое имя, оно не обязано совпадать с именем базы данных на SQL-сервере.

Способ 4. Перенести копию на другой компьютер и переименовать

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

Перенос файловой базы на другой компьютер:

  1. Либо скопируйте папку базы (способ 1) на флешку/в сеть и разверните на новом ПК, либо выгрузите *.dt (способ 2) и загрузите на новом ПК.
  2. На новом компьютере добавьте базу в окно запуска: Добавить → «Добавление в список существующей…» и укажите путь к перенесённой папке.

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

Переименование базы в списке:

Имя базы в окне запуска — это просто подпись в списке, а не имя файла. Чтобы его поменять: выделите базу → Изменить → поле «Наименование информационной базы» → новое имя → Готово. На данные это никак не влияет.

Переименование серверной базы: имя базы в кластере меняется в консоли администрирования в свойствах информационной базы. Переименование не затрагивает имя базы данных в самой СУБД.

Сам файл данных у файловой базы всегда называется 1Cv8.1CD — его переименовывать не нужно и не нужно бояться, что у копии «то же имя файла». Базы различаются папками, а не именем файла внутри.

Типичные ошибки при копировании и как их обойти

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

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

Чем копирование базы отличается от резервной копии?
Технически это одно и то же действие — вы получаете независимый дубликат данных. Разница в цели: «копию» обычно разворачивают рядом как рабочую базу, а «резервную копию» хранят как *.dt или бэкап СУБД на случай сбоя. Для бэкапа удобнее *.dt или средства СУБД, для быстрого дубля файловой базы — копирование папки.
Можно ли скопировать базу, не выгоняя пользователей?
Копирование папки и выгрузку *.dt — нет, нужен монопольный доступ или хотя бы закрытая база. Исключение — бэкап серверной базы средствами СУБД (способ 3): он снимается без остановки работы, потому что этим занимается сам SQL-сервер, а не платформа 1С.
Копия будет связана с оригиналом? Изменения перенесутся?
Нет. Любая из описанных копий полностью независима. Данные, внесённые в копию, в оригинал не попадают, и наоборот. Это и есть смысл копии.
Как перенести файловую базу в серверную (и наоборот)?
Через *.dt (способ 2): выгрузите из файловой базы и загрузите в заранее созданную серверную базу кластера — или в обратную сторону. Это штатный способ смены варианта хранения.
Копия занимает столько же места, сколько оригинал?
Папка файловой базы — да, примерно столько же. Файл *.dt заметно меньше, так как данные в нём сжаты, но при загрузке база снова развернётся до исходного размера.