Отключение базы от хранилища и удаление его файлов без потери доработок
Содержание
Удалить хранилище конфигурации в 1С — это два разных действия, и их часто путают. Сначала каждую информационную базу отключают от хранилища в Конфигураторе: Конфигурация → Хранилище конфигурации → Отключиться от хранилища. Только потом, когда к хранилищу никто не подключён, удаляют его каталог с файлом 1cv8ddb.1CD на диске или на сервере хранилища.
Частая ошибка — сразу стереть папку хранилища. Конфигурация в базах от этого не пропадёт, но каждая подключённая база продолжит «помнить» удалённое хранилище, а объекты, которые были захвачены, останутся закрыты для правки, пока базу не отвяжут. Порядок ниже работает для платформы 8.3 и любой конфигурации: хранилище — механизм платформы, а не БП, ЗУП или УТ.
Что сделать до удаления хранилища
Хранилище — это не только текущая конфигурация, но и вся история версий: кто, когда и с каким комментарием менял каждый объект. После удаления каталога история пропадает безвозвратно. Поэтому сначала решите, что из неё нужно сохранить.
Подготовка занимает полчаса и состоит из пяти пунктов:
- 📋 Составьте список подключённых баз. Это рабочая база разработки, тестовые копии, базы на ноутбуках разработчиков. Каждую придётся отключать отдельно.
- 🔒 Найдите захваченные объекты. Откройте
Конфигурация → Хранилище конфигурации → Захватить в хранилище: в открывшемся дереве видно, какие объекты и кем захвачены. - 📤 Попросите разработчиков поместить изменения. Всё, что сделано и не помещено, существует только в их базах. Если доработки не нужны, достаточно отменить захват.
- 💾 Сохраните последнюю версию в файл. Откройте историю хранилища (
Конфигурация → Хранилище конфигурации → История хранилища), выделите верхнюю версию и сохраните её в файл.cfкомандой сохранения в панели окна истории. - 🗂 Скопируйте каталог хранилища целиком. Пока к нему никто не подключён, заархивируйте всю папку — это единственный способ сохранить историю версий.
Копию каталога делайте, когда с хранилищем никто не работает. Архив, снятый во время помещения изменений, может оказаться несогласованным.
Если история нужна только «на всякий случай», архива достаточно. Развернуть его можно в любой момент: распакуйте папку и подключитесь к ней из пустой базы.
Отключение базы от хранилища в Конфигураторе
Отключение снимает связь конкретной информационной базы с хранилищем. Конфигурация базы остаётся такой, какой была на момент отключения, все объекты становятся доступны для правки без захвата.
Пошагово
- Запустите базу в режиме Конфигуратора под пользователем, у которого есть права администратора информационной базы.
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Выберите
Конфигурация → Хранилище конфигурации → Отключиться от хранилища. - Подтвердите действие. Если хранилище доступно, платформа может спросить логин и пароль пользователя хранилища.
- Если в базе остались захваченные или изменённые объекты, появится предупреждение. Решите, помещать их или нет, — после отключения поместить уже не получится.
- Убедитесь, что пункт меню теперь предлагает подключиться к хранилищу , а значки замков у объектов в дереве метаданных исчезли.
Повторите это в каждой базе из списка. Структуру базы данных обновлять не нужно: отключение не меняет конфигурацию, только убирает привязку.
Если у разработчика в базе остались изменённые, но не помещённые объекты, сначала сохраните его конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл. Тогда доработки можно будет перенести сравнением и объединением.
Отключение из командной строки
Когда баз много или Конфигуратор не открывается из-за ошибки подключения к хранилищу, отвязку делают пакетным запуском. Ключ -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, если при установке не задан другой. Каталог хранилища лежит на диске этого компьютера — путь виден в строке подключения после имени сервера относительно корневого каталога, указанного в параметрах службы.
Порядок такой:
- Проверьте, что все базы отключены от хранилища.
- Удалите каталог нужного хранилища. Если служба держит файлы, остановите её.
- Если на сервере больше нет хранилищ, удалите службу и компонент сервера хранилища через установщик платформы.
Одна служба 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, если его успели сохранить.