Переезд баз 1С: файловый вариант, .dt-выгрузка и SQL-бэкап без потерь

· 9 мин

Содержание

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

Типичная ситуация: старый сервер в бухгалтерии доживает последние месяцы, диск заполнен, а в каталоге баз лежат пять рабочих баз и десяток архивных за прошлые годы. Переносить их нужно так, чтобы в понедельник все зашли в 1С как обычно. Ниже порядок, который работает для админа, у которого есть одно окно обслуживания.

Какой способ миграции выбрать

Сначала определите, что вы переносите. «Архив» в 1С бывает трёх видов: каталог файловой базы с файлом 1Cv8.1CD, файл выгрузки .dt или база данных на SQL-сервере.

СпособКогда подходитПлюсыОграничения
Копия каталога файловой базыФайловая → файловая, другой диск или ПКБыстро, ничего не пересобираетсяПереносит и скрытые повреждения файла
Выгрузка .dtСмена типа базы, смена СУБД, «чистая» пересборкаУниверсально, файл компактныйДолго на больших базах, нужен монопольный доступ
Бэкап средствами СУБДСерверная → серверная на той же СУБДБыстро даже для 100+ ГБНужна та же СУБД и совместимая версия

Для баз от 30–50 ГБ выгрузка и загрузка .dt может занять часы. Если СУБД остаётся той же, бэкап SQL почти всегда быстрее.

Подготовка инфраструктуры к переносу

Перед переездом соберите сведения о старом месте и подготовьте новое.

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

  • 📌 Версия платформы. Посмотрите в Справка → О программе. На новом сервере ставьте платформу с номером не ниже текущего. Иначе база, обновлённая под новую платформу, не откроется.
  • 📌 Список баз и пути к ним. Для файловых — каталоги. Для серверных — имена баз в кластере и имена баз данных на SQL-сервере (они могут не совпадать).
  • 📌 Файлы вне базы. Присоединённые файлы, которые хранятся в томах на диске, внешние обработки на диске, каталоги обмена. Их надо переносить отдельно.
  • 📌 Регламентные задания и обмены. Запишите, какие базы обмениваются данными по расписанию: после переезда пути обмена придётся поправить.
  • 📌 Лицензии. Программная лицензия привязана к оборудованию и копированием не переносится. На новом компьютере её активируют заново пин-кодом. Файлы лицензий лежат в C:\ProgramData\1C\licenses.

Что подготовить на новом месте

  1. Установите ту же или более новую версию платформы 1С.
  2. Для серверного варианта установите сервер 1С и СУБД. Для MS SQL проверьте сортировку экземпляра: для баз 1С обычно используется Cyrillic_General_CI_AS.
  3. Создайте каталог для баз на отдельном диске, а не на системном.
  4. Договоритесь об окне: время, когда никто не работает в базе.

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

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

Файловая база — это каталог. Главное в нём — файл 1Cv8.1CD, там все данные. Рядом лежат служебные папки: журнал регистрации 1Cv8Log, индексы полнотекстового поиска 1Cv8FTxt.

Шаг 1. Закройте все сеансы

Попросите пользователей выйти из базы. Проверить, что база свободна, можно двумя способами:

  • в Конфигураторе: Администрирование → Активные пользователи — список должен быть пустым;
  • по файлам: если в каталоге базы есть файл 1Cv8tmp.1CD или файлы блокировки, значит, кто-то ещё в базе.

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

Шаг 2. Скопируйте каталог целиком

Копируйте весь каталог, а не только 1Cv8.1CD. Без 1Cv8Log вы потеряете журнал регистрации, а он нужен при разборе «кто и когда удалил документ».

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

robocopy "D:\Bases\Buh" "E:\1C_Bases\Buh" /E /COPY:DAT /R:2 /W:5 /LOG:E:\copy_buh.log

Шаг 3. Подключите базу на новом месте

  1. Запустите 1С, в окне выбора баз нажмите Добавить.
  2. Выберите Добавление в список существующей информационной базы.
  3. Укажите новый каталог (папку, в которой лежит 1Cv8.1CD).
  4. Старую запись в списке удалите, чтобы никто случайно не открыл прежнюю копию.

Если баз много и пользователей тоже много, правьте список централизованно. Список баз хранится в файле ibases.v8i в профиле пользователя (%APPDATA%\1C\1CEStart\ibases.v8i). В нём у каждой базы есть строка Connect=File="D:\Bases\Buh"; — меняете путь и раздаёте файл.

Перенос через выгрузку .dt

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

  1. Откройте базу в Конфигураторе.
  2. Администрирование → Выгрузить информационную базу, сохраните файл.
  3. На новом месте создайте пустую базу: Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  4. Откройте её в Конфигураторе и выполните Администрирование → Загрузить информационную базу.

Ту же операцию можно запускать без интерфейса, например ночью по расписанию:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "E:\Archive\buh.dt" /Out "E:\Archive\dump.log"

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" CREATEINFOBASE File="E:\1C_Bases\Buh"
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "E:\1C_Bases\Buh" /RestoreIB "E:\Archive\buh.dt" /Out "E:\Archive\restore.log"

Номер версии в пути замените на свой. Пароль в bat-файле храните только на защищённом сервере.

Миграция клиент-серверной базы на новый SQL-сервер

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

Шаг 1. Остановите работу с базой

В консоли администрирования серверов 1С откройте свойства базы и включите Блокировка начала сеансов включена и Блокировка регламентных заданий включена. Затем завершите оставшиеся сеансы.

Завершение сеансов обрывает работу пользователей без сохранения. Делайте это только в согласованное окно и после предупреждения.

Шаг 2. Сделайте бэкап базы данных

MS SQL Server — через SQL Server Management Studio или запросом:

BACKUP DATABASE [buh]
TO DISK = N'E:\Backup\buh.bak'
WITH COPY_ONLY, COMPRESSION, CHECKSUM, STATS = 10;

COPY_ONLY не ломает цепочку регулярных бэкапов на старом сервере. CHECKSUM проверяет страницы при чтении.

PostgreSQL — дамп в сжатом формате:

pg_dump -U postgres -Fc -f E:\Backup\buh.backup buh

Шаг 3. Восстановите базу на новом сервере

MS SQL, с переносом файлов на новые диски:

RESTORE DATABASE [buh]
FROM DISK = N'E:\Backup\buh.bak'
WITH MOVE N'buh' TO N'F:\SQLData\buh.mdf',
     MOVE N'buh_log' TO N'G:\SQLLog\buh_log.ldf',
     CHECKSUM, STATS = 10;

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

PostgreSQL — восстановление с созданием базы:

pg_restore -U postgres -C -d postgres E:\Backup\buh.backup

Используйте сборку PostgreSQL, совместимую с 1С, той же или более новой версии, что и на старом сервере.

Шаг 4. Зарегистрируйте базу в кластере 1С

  1. Откройте консоль администрирования серверов на новом сервере.
  2. В разделе Информационные базы создайте новую базу.
  3. Укажите сервер СУБД, тип СУБД, имя существующей базы данных и пользователя СУБД.
  4. На время проверки включите Блокировка регламентных заданий включена. Снимите её после переключения пользователей.

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

Права доступа и сетевые настройки после переноса

Половина звонков после переезда — не про данные, а про доступ.

Файловая база в общей папке

  • 🔐 Пользователям нужны права на изменение каталога базы: и на уровне общего ресурса, и в NTFS. Только чтение не подойдёт — 1С пишет в каталог блокировки и журнал.
  • 🔐 Подключайте базу по UNC-пути (\\SRV-FILES\1C_Bases\Buh), а не по букве сетевого диска. Буквы на разных компьютерах расходятся.
  • 🔐 Антивирус: добавьте каталог баз в исключения проверки при доступе. Иначе работа замедлится в разы.

Серверная база

  • 🔌 Откройте порты на брандмауэре нового сервера: 1540 (агент сервера), 1541 (менеджер кластера), диапазон рабочих процессов (по умолчанию 1560:1591, задаётся в свойствах рабочего сервера). Для СУБД — порт MS SQL (обычно 1433) или PostgreSQL (5432), если СУБД на отдельной машине.
  • 🔌 Учётная запись службы сервера 1С (по умолчанию USR1CV8) должна иметь полные права на каталог данных кластера.
  • 🔌 Пользователь СУБД. При восстановлении бэкапа MS SQL на другой сервер пользователь внутри базы «отрывается» от логина сервера. Если 1С подключается не под sa, а под отдельным логином, создайте логин и свяжите его:
USE [buh];
ALTER USER [user1c] WITH LOGIN = [user1c];

В строке подключения у клиентов поменяйте имя сервера: Srvr="SRV-1C-NEW";Ref="buh";. Если имя базы в кластере осталось прежним, больше ничего менять не нужно.

Проверка целостности перенесённой базы

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

Технические проверки

  1. Файловая база — утилита chdbfl.exe из каталога bin платформы. Она проверяет физическую целостность 1Cv8.1CD. Запускается при закрытой базе.
  2. Любая база — Конфигуратор, Администрирование → Тестирование и исправление. Для первой проверки отметьте только Проверка логической целостности информационной базы и режим «не изменять», чтобы ничего не исправлять вслепую.
  3. MS SQL — DBCC CHECKDB ('buh') WITH NO_INFOMSGS; покажет повреждения на уровне СУБД.

Тестирование и исправление требует монопольного доступа, а на больших базах идёт часами. Запускайте его в окне обслуживания и после свежей выгрузки .dt.

Проверки бухгалтера

Техническая проверка не скажет, что данные совпадают. Попросите бухгалтера сравнить в старой и новой базе:

Сверка после переноса
Выполнено: 0 / 6

Если ОСВ совпала, а файлы не открываются, значит, тома с файлами не перенесли или в настройках томов остался старый путь.

Ошибки при переносе и как их устранить

Здесь — ошибки, которые возникают именно на новом месте.

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

Частые вопросы о переносе баз 1С

Можно ли перенести базу 1С, просто скопировав файл 1Cv8.1CD?
Можно, если база закрыта. Но лучше копировать весь каталог, чтобы сохранить журнал регистрации.
Сохраняются ли пользователи и пароли при переносе?
Да. Список пользователей и их права хранятся внутри базы и переезжают вместе с ней при любом способе.
Попадают ли расширения конфигурации в выгрузку .dt?
Да, расширения входят в выгрузку и загружаются вместе с базой.
Как перевести файловую базу на SQL-сервер?
Выгрузите файловую базу в .dt, создайте новую базу в кластере 1С и загрузите в неё этот файл. Копирование каталога здесь не работает.
Нужно ли отключать старую базу после переноса?
Да. Переименуйте старый каталог или включите блокировку сеансов в кластере. Иначе кто-нибудь откроет старую базу по ярлыку и будет неделю вводить туда документы.