Отключение базы от хранилища и удаление его файлов без потери доработок

· 9 мин

Содержание

Удалить хранилище конфигурации в 1С — это два разных действия, и их часто путают. Сначала каждую информационную базу отключают от хранилища в Конфигураторе: Конфигурация → Хранилище конфигурации → Отключиться от хранилища. Только потом, когда к хранилищу никто не подключён, удаляют его каталог с файлом 1cv8ddb.1CD на диске или на сервере хранилища.

Частая ошибка — сразу стереть папку хранилища. Конфигурация в базах от этого не пропадёт, но каждая подключённая база продолжит «помнить» удалённое хранилище, а объекты, которые были захвачены, останутся закрыты для правки, пока базу не отвяжут. Порядок ниже работает для платформы 8.3 и любой конфигурации: хранилище — механизм платформы, а не БП, ЗУП или УТ.

Что сделать до удаления хранилища

Хранилище — это не только текущая конфигурация, но и вся история версий: кто, когда и с каким комментарием менял каждый объект. После удаления каталога история пропадает безвозвратно. Поэтому сначала решите, что из неё нужно сохранить.

Подготовка занимает полчаса и состоит из пяти пунктов:

  1. 📋 Составьте список подключённых баз. Это рабочая база разработки, тестовые копии, базы на ноутбуках разработчиков. Каждую придётся отключать отдельно.
  2. 🔒 Найдите захваченные объекты. Откройте Конфигурация → Хранилище конфигурации → Захватить в хранилище: в открывшемся дереве видно, какие объекты и кем захвачены.
  3. 📤 Попросите разработчиков поместить изменения. Всё, что сделано и не помещено, существует только в их базах. Если доработки не нужны, достаточно отменить захват.
  4. 💾 Сохраните последнюю версию в файл. Откройте историю хранилища (Конфигурация → Хранилище конфигурации → История хранилища), выделите верхнюю версию и сохраните её в файл .cf командой сохранения в панели окна истории.
  5. 🗂 Скопируйте каталог хранилища целиком. Пока к нему никто не подключён, заархивируйте всю папку — это единственный способ сохранить историю версий.

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

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

Отключение базы от хранилища в Конфигураторе

Отключение снимает связь конкретной информационной базы с хранилищем. Конфигурация базы остаётся такой, какой была на момент отключения, все объекты становятся доступны для правки без захвата.

Пошагово

  1. Запустите базу в режиме Конфигуратора под пользователем, у которого есть права администратора информационной базы.
  2. Откройте конфигурацию: Конфигурация → Открыть конфигурацию.
  3. Выберите Конфигурация → Хранилище конфигурации → Отключиться от хранилища.
  4. Подтвердите действие. Если хранилище доступно, платформа может спросить логин и пароль пользователя хранилища.
  5. Если в базе остались захваченные или изменённые объекты, появится предупреждение. Решите, помещать их или нет, — после отключения поместить уже не получится.
  6. Убедитесь, что пункт меню теперь предлагает подключиться к хранилищу , а значки замков у объектов в дереве метаданных исчезли.

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

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

Отключение из командной строки

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

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F"D:\Bases\Dev" /N"Администратор" /P"пароль" /ConfigurationRepositoryUnbindCfg -force /Out"D:\Logs\unbind.log"

Для серверной базы вместо /F укажите /S"server\basename". Номер платформы в пути замените на свой. Результат смотрите в файле лога: при ошибке там будет её текст.

Как убедиться, что отключены все базы

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

  • 🧑‍💻 Пройдитесь по списку пользователей в администрировании хранилища и спросите каждого, из каких баз он подключался.
  • 🧪 Проверьте тестовые копии: их часто разворачивают из рабочей базы разработки вместе с привязкой.
  • 💻 Уточните у разработчиков, нет ли файловых копий на ноутбуках — их обычно забывают первыми.

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

Удаление файлов хранилища с диска или сервера

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

Вариант хранилищаСтрока подключенияЧто удалять
Файловоепуть к папке, например \\fs\repo\buhсаму папку
Через сервер хранилищаtcp://server/buhпапку на компьютере, где работает crserver
Через веб-публикациюhttp://server/repo/repo.1ccrпапку хранилища и публикацию на веб-сервере

Файловое хранилище

В каталоге лежит файл 1cv8ddb.1CD и служебные подкаталоги, которые создаёт платформа (в новых версиях формата это, например, data и cache). Удаляйте каталог целиком, а не один файл: оставшиеся папки без базы хранилища бесполезны.

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

Хранилище на сервере crserver

Сервер хранилища работает как служба Windows (или демон в Linux) и слушает порт 1542, если при установке не задан другой. Каталог хранилища лежит на диске этого компьютера — путь виден в строке подключения после имени сервера относительно корневого каталога, указанного в параметрах службы.

Порядок такой:

  1. Проверьте, что все базы отключены от хранилища.
  2. Удалите каталог нужного хранилища. Если служба держит файлы, остановите её.
  3. Если на сервере больше нет хранилищ, удалите службу и компонент сервера хранилища через установщик платформы.

Одна служба crserver обслуживает все хранилища в своём корневом каталоге. Остановка службы оборвёт работу всех разработчиков, подключённых к любому из них. Останавливайте её в согласованное время, предупредив команду.

Веб-публикация хранилища

Если хранилище было опубликовано через Apache или IIS, удалите и публикацию: каталог с файлом default.vrd и соответствующую секцию в настройках веб-сервера. Иначе адрес продолжит отвечать, а клиенты будут получать ошибку вместо понятного сообщения, что хранилища больше нет.

Очистка кэша хранилища и локальных настроек

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

Очистить его можно двумя способами.

Пакетным запуском Конфигуратора. Ключи работают с базой, к которой хранилище подключено:

1cv8.exe DESIGNER /F"D:\Bases\Dev" /N"Администратор" /P"пароль" /ConfigurationRepositoryClearCache /Out"D:\Logs\cache.log"

Есть и отдельные ключи /ConfigurationRepositoryClearLocalCache и /ConfigurationRepositoryClearGlobalCache — для локального и общего кэша версий.

Вручную, через пользовательские каталоги. Кэш платформы хранится в профиле пользователя Windows: %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Внутри — папки с именами-идентификаторами, по одной на базу. Удалять их можно при закрытых окнах 1С: платформа создаст кэш заново при следующем запуске.

Чистить кэш вручную нужно при полностью закрытой 1С у этого пользователя. Если открыты сеансы, файлы заняты, а частично удалённый кэш даёт странные ошибки до перезапуска.

Отдельно проверьте список баз в окне запуска. Если тестовую базу заводили только для работы с хранилищем, удалите её из списка кнопкой Удалить — сама база на диске при этом не удаляется, только строка в списке.

Когда хватит убрать пользователя, а не всё хранилище

Нередко задача звучит как «удалить хранилище», а на деле нужно закрыть доступ уволившемуся подрядчику или убрать лишнего участника. Хранилище при этом удалять не нужно.

Права настраивает администратор хранилища: Конфигурация → Хранилище конфигурации → Администрирование, вкладка со списком пользователей. Там можно:

Перед удалением пользователя убедитесь, что за ним не числится захваченных объектов. Иначе эти объекты останутся заблокированными, пока администратор не разберётся с захватом.

Учётные записи хранилища не связаны с пользователями информационной базы. Удаление сотрудника из базы 1С не закрывает ему доступ к хранилищу — это делается отдельно.

Чем заменить хранилище для версий конфигурации

Хранилище удаляют не только за ненадобностью. Часто команда переходит на другой способ учёта версий. Выбор зависит от размера команды и инструментов.

СпособКому подходитОграничения
Новое хранилище с чистой историейкоманде, у которой старое хранилище разрослось или повредилосьистория старых версий остаётся только в архиве
Разработка в 1С:EDT с Gitкомандам от 3 человек, ведущим параллельные задачинужно переучиваться, EDT требовательна к памяти
Выгрузка конфигурации в файлы XML + Gitтем, кто остаётся в Конфигураторе, но хочет ветки и код-ревьювыгрузку и загрузку нужно автоматизировать
Расширения конфигурацииодиночке с типовой конфигурациейдоработки отделены от основной конфигурации, но истории версий нет
Файлы .cf в архиве по датамодному разработчику с редкими правкаминет истории по объектам, только снимки

Для выгрузки в файлы в Конфигураторе есть Конфигурация → Выгрузить конфигурацию в файлы. Если нужно перенести в Git всю историю хранилища, используют сторонние утилиты конвертации — они проходят по версиям хранилища и делают коммит на каждую. Запускайте такой перенос до удаления хранилища, а не после.

Если хранилище «тормозит» или раздулось до десятков гигабайт, удалять его необязательно. Сначала попробуйте режим оптимизации данных в администрировании хранилища и проверку базы 1cv8ddb.1CD утилитой chdbfl.exe из каталога платформы — при закрытом хранилище.

Ошибки при удалении хранилища и что с ними делать

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

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

Ещё одна ловушка — отключить базу с изменёнными объектами, не сохранив их. Платформа предупреждает об этом, но предупреждение легко «прощёлкать». Восстановить такие правки после отключения можно только из файла .cf, если его успели сохранить.

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

Пропадёт ли конфигурация базы после удаления хранилища?
Нет. Конфигурация хранится в самой информационной базе. Удаление хранилища стирает только историю версий и механизм захвата объектов.
Можно ли отключить от хранилища только одну базу, а остальным оставить работу?
Да. Отключение касается одной базы. Хранилище и другие подключённые базы продолжают работать как раньше.
Нужно ли быть администратором хранилища, чтобы отключить базу?
Нет, отключение выполняется в Конфигураторе базы. Нужны права администратора информационной базы. Администратор хранилища нужен для работы с пользователями и захватами других разработчиков.
Как вернуть удалённое хранилище?
Только из копии каталога. Распакуйте архив в новую папку и подключитесь к ней из базы. Если копии нет, остаётся последняя конфигурация в базах и файлах .cf, без истории.
Можно ли перенести хранилище в другую папку вместо удаления?
Да. Отключите базы, перенесите каталог целиком, затем подключите базы по новому пути. Захваты при отключении теряются, поэтому сначала поместите изменения.