Как правильно перенести хранилище конфигурации 1С на другой сервер?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Архитектура файлового хранилища конфигурации

Проанализируем структуру хранения данных. Если хранилище создавалось стандартным путем через Конфигуратор (меню Конфигурация — Хранилище конфигурации — Создать хранилище) с указанием локальной или сетевой папки, оно представляет собой файловую базу. Вся история разработки, список пользователей, их роли и права содержатся внутри единого каталога в файле с расширением .1CD (обычно это 1cv8ddb.1CD или 1cv8bbd.1CD).

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

Подготовительный этап перед переносом

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

  1. Освободим захваченные объекты. Попросим всех программистов поместить изменения в хранилище или отменить захват объектов. Если перенести каталог в момент, когда объекты кем-то заблокированы, на клиентских рабочих местах могут остаться фантомные блокировки, которые впоследствии потребуют ручной отмены прав администратором хранилища.
  2. Завершим все сеансы работы. Закроем все сеансы Конфигуратора, подключенные к хранилищу. В каталоге с файлами не должно оставаться временных файлов блокировок с расширением *.lck.
  3. Создадим резервную копию. Обязательно скопируем папку хранилища в надежный локальный или архивный каталог перед любыми дальнейшими действиями.
  4. Сократим историю (опционально). Если хранилище существует много лет и его размер превышает десятки гигабайт, перед переездом имеет смысл открыть меню Конфигурация — Хранилище конфигурации — Администрирование хранилища и выполнить команду Сократить историю, удалив неактуальные промежуточные версии до определенного номера или даты. Это ускорит копирование файлов по сети.

Перенос каталога и решение проблемы «Ошибка режима доступа к файлу базы данных»

Рассмотрим основной этап миграции и разберем распространенную проблему, которая возникает сразу после копирования.

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

Ошибка режима доступа к файлу базы данных 'D:\ConfStorage\1cv8bbd.1CD'

Выясним причину этой неполадки. Операционная система Windows при копировании файлов на другой диск или сервер часто наследует права доступа родительской папки назначения или оставляет права только за той учетной записью администратора, которая выполняла копирование. Если пользователь, запускающий Конфигуратор, не обладает полными правами файловой системы NTFS на данный каталог, платформа блокирует операцию открытия базы.

Разберем по шагам, как исправить эту ошибку:

  1. Откроем свойства перенесенной папки хранилища в проводнике на новом сервере.
  2. Перейдем на вкладку Безопасность (Security).
  3. Нажмем кнопку Изменить и предоставим права Полный доступ (или как минимум «Изменение», «Чтение и выполнение», «Запись») учетным записям, от имени которых будет осуществляться работа с хранилищем.
  4. Если хранилище будет использоваться как общая сетевая папка, откроем вкладку Доступ (Sharing), настроим сетевой общий доступ и во вкладке прав сетевого ресурса также выдадим права на чтение и запись соответствующей группе пользователей или доменным учетным записям разработчиков.

Переподключение баз разработчиков на клиентах

После того как файлы перенесены и права настроены, настроим рабочие места программистов. Из-за особенностей кэширования Конфигуратора простая замена сетевого адреса в свойствах может вызывать ошибки. Рекомендуем выполнить переподключение по следующей схеме:

  1. Откроем рабочую информационную базу разработчика в режиме «Конфигуратор».
  2. Перейдем в главное меню: Конфигурация — Хранилище конфигурации — Отключиться от хранилища.
  3. Подтвердим отключение базы. Конфигурация при этом останется в актуальном состоянии.
  4. Снова перейдем в меню: Конфигурация — Хранилище конфигурации — Подключиться к хранилищу.
  5. Укажем новый сетевой путь к каталогу хранилища (например, \\NewServer\ConfStorage) или локальный путь, если работа ведется через терминальный сервер.
  6. Введем логин и пароль пользователя хранилища. Все учетные записи, созданные ранее, будут сохранены.

В случае возникновения системных ошибок структуры данных после смены адреса хранилища очистим локальный кэш 1С на компьютере разработчика, удалив пользовательские каталоги по путям AppData\Local\1C\1cv8 и AppData\Roaming\1C\1cv8, либо подключим чистую информационную базу к новому хранилищу «с нуля».

Проверка целостности и альтернативные варианты размещения

Если во время копирования по нестабильному сетевому каналу произошел сбой, файл базы хранилища может повредиться. В такой ситуации восстановим структуру файла при помощи стандартной утилиты тестирования chdbfl.exe, которая располагается в системном каталоге платформы (обычно C:\Program Files\1cv8\версия_платформы\bin\chdbfl.exe). Запустим утилиту, укажем файл 1cv8bbd.1CD и отметим флаг исправления обнаруженных ошибок.

Также стоит помнить об архитектурных ограничениях файлового доступа по протоколу SMB (через сетевую папку). При работе команды из более чем 3–5 человек или при подключении через VPN сетевой доступ к файлам работает медленно и подвержен рискам разрушения базы при малейшем обрыве связи. В качестве альтернативы для высоконагруженной разработки развернем выделенный сервер хранилища с помощью службы crserver.exe (подключение по протоколу TCP) либо выполним публикацию хранилища на веб-сервере (IIS или Apache) по протоколу HTTP/HTTPS, что обеспечит максимальную стабильность и скорость обмена данными.

← На главную