Делаем копию базы 1С 8.3: от файловой до клиент-серверной

· 9 мин

Содержание

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

Сначала определите, какая у вас база. Если в списке запуска в поле информационной базы указан путь к папке на диске (File="...") — база файловая, и её можно просто скопировать как набор файлов. Если указан сервер и имя базы (Srvr=...; Ref=...) — база клиент-серверная, данные лежат в MS SQL или PostgreSQL, и копировать папку бесполезно: там только служебные файлы.

Какой способ копирования выбрать?

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

Перед любым способом убедитесь, что копия будет целостной.

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

Если копия нужна для тестирования, а не для архива, после восстановления обязательно отключите в ней обмены данными, синхронизацию с банком и отправку в ЭДО. Иначе тестовая база отправит реальные документы контрагентам. Как это сделать — в разделе про настройку копии ниже.

Выгрузка базы в файл .dt через Конфигуратор

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

  1. Запустите 1С в режиме Конфигуратор (в окне запуска выберите базу и нажмите Конфигуратор).
  2. Откройте меню Администрирование → Выгрузить информационную базу….
  3. Укажите папку и имя файла — например baza_buh.dt — и нажмите Сохранить.
  4. Дождитесь завершения. Для крупной базы это может занять от нескольких минут до часа.

Готовый .dt — это и есть копия. Его можно положить в архив, передать по сети или загрузить в другую базу.

Чем удобна выгрузка в .dt: это один файл, который легко переносится между файловым и клиент-серверным вариантом в любую сторону — например, забрать базу с сервера в файловую копию для разработки и обратно. Платформа сама разложит данные под нужный вариант при загрузке.

Один нюанс: .dt не содержит журнал регистрации (историю действий пользователей). Если история важна, для файловой базы копируйте папку целиком, для клиент-серверной — журнал хранится в каталоге базы на сервере 1С и переносится отдельно.

Выгрузка требует монопольного доступа: другие сеансы должны быть завершены. Если Конфигуратор сообщит, что база занята, попросите пользователей выйти или завершите их сеансы (для клиент-серверной базы — через консоль администрирования либо rac session list и далее по справке rac help).

Чтобы развернуть .dt в новую базу:

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

Загрузка .dt полностью затирает содержимое базы-приёмника. Никогда не загружайте копию поверх рабочей базы — только в заведомо пустую или тестовую.

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

Для файловой базы выгрузка в .dt не обязательна — можно скопировать саму папку. Это быстрее, особенно для большой базы, и не требует Конфигуратора.

Файловая база — это папка, в которой лежит файл данных 1Cv8.1CD. Рядом обычно находятся служебные файлы журнала и блокировок. Чтобы скопировать базу, нужно скопировать папку целиком.

  1. Убедитесь, что из базы вышли все пользователи. Открытая база копируется с риском получить повреждённый файл.
  2. Найдите путь к папке: в окне запуска выделите базу — путь показан внизу, либо откройте Изменить и посмотрите поле каталога.
  3. Скопируйте папку обычными средствами Windows (Копировать → Вставить) в новое расположение.

Для больших баз удобнее robocopy — он не обрывается на длинных путях и показывает прогресс:

robocopy "C:\Bases\Buh" "D:\Copy\Buh" /E /R:1 /W:1

Здесь /E копирует вложенные папки, /R:1 и /W:1 ограничивают повторы при занятых файлах.

Достаточно скопировать файл 1Cv8.1CD — в нём и конфигурация, и данные. Файлы журнала регистрации (1Cv8Log или *.lgd/*.lgf) переносят только если нужна история действий пользователей; без них база откроется нормально, журнал просто будет пустым.

После копирования подключите новую папку как отдельную базу: в окне запуска Добавить → Добавление в список существующей информационной базы, укажите скопированную папку.

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

Копирование папки переносит базу, но не добавляет её автоматически в список запуска на другом компьютере. Список баз хранится в профиле пользователя (файл ibases.v8i); на новой машине базу нужно добавить в список вручную через Добавить.

Копирование клиент-серверной базы через СУБД

У клиент-серверной базы данные хранятся не в папке 1С, а в СУБД (MS SQL Server или PostgreSQL). Копировать каталог кластера бесполезно. Есть два пути.

Через .dt — универсально, но для базы в десятки гигабайт медленно: см. раздел про Конфигуратор выше.

Через средства СУБД — быстрее для крупных баз:

  1. Сделайте резервную копию базы данных средствами СУБД:
    • MS SQL — BACKUP DATABASE или мастер в SQL Server Management Studio;
    • PostgreSQL — pg_dump или pg_basebackup.
  2. Восстановите копию под новым именем базы данных (например, buh_copy), не затирая исходную. В MS SQL при восстановлении под новым именем на том же сервере укажите новые пути для файлов данных и журнала (опция WITH MOVE), иначе восстановление попытается перезаписать файлы рабочей базы. В PostgreSQL сначала создайте пустую базу (createdb buh_copy), затем загрузите в неё дамп (pg_restore).
  3. Зарегистрируйте новую информационную базу в кластере 1С. В консоли администрирования: правой кнопкой на Информационные базы → Новая → Информационная база, укажите тот же сервер СУБД и имя восстановленной базы данных (buh_copy), тип СУБД и учётные данные.
  4. При создании снимите флажок, предлагающий создать базу данных , — она уже восстановлена из бэкапа.

Имя базы данных в СУБД и имя информационной базы в кластере 1С — разные вещи. Если зарегистрировать новую инфобазу на то же имя базы СУБД, что и рабочая, обе будут работать с одними данными — это не копия. Копия появляется только когда в СУБД лежит отдельная база данных.

Посмотреть список уже зарегистрированных баз в кластере можно командой rac infobase summary list --cluster=<uuid>; остальные параметры создания смотрите в справке rac help — не угадывайте их.

Настройка копии как отдельной базы

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

Отличить визуально. Смените заголовок программы, чтобы в шапке было видно, что это копия. В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, Управление торговлей 11) это раздел Администрирование → Общие настройки, поле заголовка программы — впишите, например, «КОПИЯ — не рабочая база».

Отключить обмены и отправку данных. Если копия для тестов:

  • отключите синхронизацию данных и обмены (раздел Администрирование или НСИ и администрирование, настройки синхронизации);
  • отключите отправку в банк, ЭДО и загрузку выписок;
  • для клиент-серверной базы установите блокировку регламентных заданий в свойствах информационной базы через консоль администрирования — тогда в копии не запустятся фоновые обмены.

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

Для копии не нужна отдельная лицензия на конфигурацию, но платформа 1С по-прежнему требует лицензию для запуска (кроме учебной версии платформы). Если на тестовом компьютере нет ключа, база в режиме 1С:Предприятие не откроется.

Регулярные копии: как не делать это вручную

Разовую копию делают руками, но резервные копии нужны по расписанию — иначе про них забывают до первого сбоя.

Встроенное резервное копирование конфигурации. В типовых решениях (Бухгалтерия 3.0, ЗУП 3.1) есть настройка резервного копирования в разделе Администрирование → Обслуживание (или настройки программы) — она делает ту же выгрузку .dt по расписанию, когда работа в базе завершена. Подходит для файловых баз небольшого размера.

Средства СУБД для клиент-серверных баз. Для боевой клиент-серверной базы правильнее настраивать резервное копирование на уровне СУБД:

  • MS SQL — план обслуживания (Maintenance Plan) с полным бэкапом по ночам и бэкапом журнала транзакций в течение дня;
  • PostgreSQL — регулярный pg_dump по расписанию планировщика ОС либо потоковая репликация на резервный сервер.

Храните копии отдельно от оригинала. Копия на том же диске не спасёт при отказе этого диска. Держите хотя бы одну свежую копию на другом носителе или в другом расположении.

Проверяйте, что копия действительно разворачивается. Бэкап, который ни разу не восстанавливали, — это ещё не копия, а предположение. Раз в период разверните копию в тестовую базу и убедитесь, что она открывается.

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

Чаще всего проблемы возникают на загрузке .dt и при открытии скопированной файловой базы.

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

Если скопированная файловая база открывается с ошибками, запустите в Конфигураторе Администрирование → Тестирование и исправление, отметьте проверку логической и ссылочной целостности. Делайте это на копии, а не на оригинале.

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

Чем выгрузка `.dt` отличается от резервной копии СУБД?
.dt — внутренний формат 1С, переносится между файловым и клиент-серверным вариантом и между компьютерами. Резервная копия СУБД (MS SQL / PostgreSQL) привязана к своей СУБД, но снимается и восстанавливается в разы быстрее на больших базах.
Переносит ли `.dt` пользователей и их права?
Да. Файл .dt содержит полный снимок базы: конфигурацию, все данные, список пользователей и настройки прав. После загрузки входить нужно под теми же учётными записями.
Можно ли открыть копию и рабочую базу одновременно?
Да, если это разные информационные базы (разные папки или разные базы данных в СУБД). Они не мешают друг другу. Главное — не настроить между ними реальный обмен.
Можно ли загрузить `.dt` из новой версии платформы в старую?
Нет. .dt читается платформой того же номера или новее. Из более новой версии в старую загрузка завершится ошибкой формата потока. Сначала обновите платформу на приёмнике.
Достаточно ли скопировать один файл `1Cv8.1CD`?
Да. В этом файле хранятся и конфигурация, и данные файловой базы. Остальные файлы в папке — служебные: журнал регистрации и блокировки, без них база откроется.