Удаляем базу 1С правильно: из списка, с диска и в кластере

· 9 мин

Содержание

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

Порядок зависит от типа базы. Файловую удаляют в два приёма: сначала строку из списка, потом каталог с диска. Клиент-серверную — через консоль администрирования или утилиту rac, а затем, если место нужно освободить, удаляют саму базу в SQL Server или PostgreSQL.

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

Чем «убрать из списка» отличается от удаления данных

В окне запуска «1С:Предприятие» вы видите список баз. Кнопка Удалить справа убирает выделенную строку из списка — и всё. Данные она не трогает.

Сам список хранится в файле ibases.v8i по пути %APPDATA%\1C\1CEStart\ibases.v8i. В строке файловой базы записан путь к каталогу, в строке клиент-серверной — адрес сервера и имя базы. Удаление строки правит только этот файл.

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

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

Резервная копия перед удалением

Копию делают всегда, даже если база «точно не нужна». Способы зависят от типа.

Файловая база:

  • Конфигуратор → меню Администрирование → Выгрузить информационную базу → сохраняете файл .dt.
  • Либо закрываете 1С и копируете весь каталог с 1Cv8.1CD в другое место.

Клиент-серверная база :

  • Та же выгрузка .dt из Конфигуратора, либо
  • резервная копия средствами СУБД: backup в SQL Server или pg_dump в PostgreSQL.

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

Перед удалением базы
Выполнено: 0 / 5

Как удалить файловую базу из списка и с диска

Файловую базу удаляют в два шага: строку из списка и затем каталог на диске.

  1. Закройте все сеансы 1С с этой базой, включая Конфигуратор.
  2. В окне запуска выделите базу и нажмите Удалить справа. 1С предупредит, что базы убираются только из списка, файлы на диске остаются — подтвердите.
  3. Теперь удаляете данные. Путь к каталогу виден в окне запуска внизу, в строке с адресом базы (или по кнопке Изменить в поле каталога).
  4. Откройте этот каталог и удалите его целиком. Внутри лежат 1Cv8.1CD (сами данные), служебные файлы вроде 1Cv8tmp.1CD и каталог журнала регистрации 1Cv8Log.

Если 1Cv8.1CD не удаляется с сообщением «файл занят» — база ещё открыта в 1С, Конфигураторе или другом сеансе. Закройте программу; если процесс завис, снимите 1cv8.exe в диспетчере задач и повторите.

Удалять отдельные файлы внутри каталога, оставляя 1Cv8.1CD, смысла нет — данные лежат именно в нём. Либо удаляете весь каталог, либо не трогаете ничего.

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

Отдельно стоит решить, точно ли нужно именно удаление. Если база больше не ведётся, но может пригодиться для справки (посмотреть прошлые документы, поднять акт сверки за старый период), её разумнее перенести в архив — скопировать каталог на отдельный диск и убрать из рабочего списка. Удаление освобождает место, но закрывает дорогу назад.

Удаление информационной базы в кластере серверов

Клиент-серверная база зарегистрирована в кластере 1С. Убирают её через оснастку «Администрирование серверов 1С Предприятия» (консоль MMC) или утилитой rac.

Сначала выгоните пользователей. В консоли откройте ветку Сеансы, завершите активные сеансы нужной базы, а в свойствах базы включите блокировку начала сеансов, чтобы никто не переподключился обратно. Заодно имеет смысл заблокировать регламентные задания в свойствах базы — иначе фоновое задание может удерживать базу занятой в момент удаления.

Удаление базы с активными сеансами оборвёт работу пользователей и может повредить незаписанные данные. Завершайте сеансы заранее и предупредите людей.

Дальше в консоли раскройте Информационные базы, правый клик по нужной базе → Удалить. Появится окно выбора, что сделать с базой данных в СУБД:

  • оставить базу данных на сервере нетронутой — убрать только регистрацию в кластере;
  • очистить базу данных — оставить пустую;
  • удалить базу данных вместе с информационной базой.

Если выбрали «оставить» — данные останутся в СУБД и продолжат занимать место; удалите их отдельно (следующий раздел).

Через rac порядок такой же. Сначала узнаёте идентификаторы, затем удаляете:

rac cluster list
rac infobase summary list --cluster=<идентификатор-кластера>
rac infobase drop --cluster=<ид-кластера> --infobase=<ид-базы> --infobase-user= --infobase-pwd=

Ключи, которые управляют судьбой базы СУБД (оставить / очистить / удалить), у команды drop задаются отдельно. Точные их имена смотрите в rac help infobase — это тот случай, когда лучше свериться со справкой, чем удалить данные не тем параметром.

Завершить сеансы из командной строки тоже можно: список — rac session list --cluster=<ид>, завершение конкретного — rac session terminate.

Как удалить базу СУБД на SQL Server и PostgreSQL

Если при удалении из кластера вы выбрали «оставить базу данных», в СУБД остаётся полноценная база. Удаляют её средствами самой СУБД.

Сначала узнайте точное имя базы в СУБД. Оно указано в свойствах информационной базы в кластере — поле «База данных» (не путайте с именем, под которым база видна пользователям в списке 1С: это разные вещи). Там же видно имя сервера СУБД и тип (MS SQL Server или PostgreSQL). Удаляйте строго базу с этим именем — на одном сервере СУБД могут жить десятки баз от разных информационных баз 1С.

Microsoft SQL Server (через SSMS):

Раскройте Databases, правый клик по базе → Delete, в окне отметьте Close existing connections → OK.

То же через T-SQL:

ALTER DATABASE [ИмяБазы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [ИмяБазы];

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

PostgreSQL:

-- при необходимости оборвать активные подключения к базе
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'имя_базы';
DROP DATABASE "имя_базы";

В PostgreSQL 13 и новее то же делается короче — одной командой:

DROP DATABASE "имя_базы" WITH (FORCE);

DROP DATABASE необратим. После него базу можно вернуть только из резервной копии СУБД — не из списка 1С и не из кэша.

Есть промежуточный вариант — не удалять, а отсоединить базу. В SQL Server это Tasks → Detach в контекстном меню базы. База исчезает из списка SSMS, но её файлы .mdf и .ldf остаются в каталоге данных сервера. Это удобно, когда базу нужно временно убрать с возможностью вернуть (Attach), но место при этом не освобождается. Чтобы освободить диск, после отсоединения файлы .mdf и .ldf удаляют вручную — проверив, что база действительно больше не нужна.

Чистка кэша и временных файлов (и почему реестр ни при чём)

После удаления базы на клиентских машинах остаётся её кэш. 1С держит его в каталогах пользователя, названных по GUID базы:

  • %LOCALAPPDATA%\1C\1cv8\<guid>
  • %APPDATA%\1C\1cv8\<guid>

Для удалённой базы эти каталоги — просто мусор, их можно удалить. Для существующих баз 1С пересоздаст кэш при следующем запуске, так что ошибиться сложно; если сомневаетесь, какой GUID к какой базе относится — удаляйте только после того, как база точно убрана.

Отдельно про реестр Windows. Список баз 1С в реестре не хранит — он лежит в файлах .v8i (личный список — ibases.v8i). Поэтому чистить реестр ради удаления базы не нужно и не стоит: пользы нет, а риск есть.

На сервере остаётся рабочий каталог кластера (srvinfo, по умолчанию в каталоге установки сервера 1С). При штатном удалении через консоль подкаталог базы очищается сам. Если базу удаляли «грязно», подкаталог по её GUID можно убрать вручную — но только при остановленной службе сервера, что оборвёт сразу все базы кластера.

Если список баз общий для отдела и база «возвращается» после удаления — она прописана в общем списке (см. раздел ниже про терминальный сервер).

Удаление базы из общего списка на терминальном сервере

На терминальных (RDP) серверах и в офисах со многими рабочими местами список баз нередко раздаётся централизованно — общим списком. Тогда удаление строки «у себя» не помогает: при следующем запуске 1С снова подтягивает базу из общего списка.

Общий список задаётся в файле 1CEStart.cfg параметром CommonInfoBases — он указывает путь к общему файлу .v8i (обычно на сетевом ресурсе). Личный 1CEStart.cfg лежит у пользователя в %APPDATA%\1C\1CEStart\, общий для всех — в %ALLUSERSPROFILE%\1C\1CEStart\.

Порядок, если база приходит из общего списка:

  1. Найдите общий файл .v8i, на который ссылается CommonInfoBases.
  2. Удалите из него строку с нужной базой (это обычный текстовый файл, секция [Имя базы]).
  3. Разошлите или дайте пользователям перезапустить 1С — база исчезнет у всех.

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

Если же база только у вас в личном списке, достаточно кнопки Удалить в окне запуска — общий файл при этом не затрагивается.

Типичные ошибки при удалении базы

Разберём случаи, на которых чаще всего застревают.

СимптомПричинаЧто делать
«Не удаётся удалить файл 1Cv8.1CD»База открыта в сеансе или КонфигуратореЗакрыть 1С, при зависании снять процесс 1cv8.exe, повторить
Cannot drop database ... currently in use (SQL Server)Остались активные подключенияSET SINGLE_USER WITH ROLLBACK IMMEDIATE или галка Close existing connections
database ... is being accessed by other users (PostgreSQL)Активные сессииpg_terminate_backend(...) или DROP DATABASE ... WITH (FORCE)
База удалена из списка, но появляется сноваЗапись в общем списке базУбрать из общего .v8i или у администратора (см. раздел про терминальный сервер)
Удалили не ту базуПоспешили, не проверилиВосстановить из резервной копии: файл .dt, копия каталога или бэкап СУБД
Базу убрали из кластера, а место не освободилосьПри удалении выбрали «оставить базу данных»Удалить базу средствами СУБД (раздел выше)

Главная ошибка — не техническая, а организационная: удаление без свежей копии. Второе по частоте — путаница «убрал из списка = удалил», когда диск так и остаётся занятым.

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

Удалится ли база с диска, если нажать «Удалить» в окне запуска?
Нет. Кнопка убирает базу только из списка. Файл 1Cv8.1CD у файловой базы и база в СУБД у клиент-серверной остаются на месте. Данные удаляют отдельным действием.
Можно ли восстановить удалённую базу?
Только из резервной копии — файла .dt, копии каталога с 1Cv8.1CD или бэкапа СУБД. Если копии нет, вернуть данные нечем. Поэтому копия делается до удаления, а не после.
Как удалить базу, если забыли пароль входа?
Пароль пользователя удалению не мешает. Строку из списка убирают без входа в базу, а базу в СУБД удаляет администратор кластера или СУБД — это уровень сервера, а не окна авторизации 1С.
Нужно ли останавливать службу сервера 1С, чтобы удалить базу?
Нет. Удаление идёт через консоль администрирования или rac на работающем кластере. Остановка службы нужна только для ручной чистки каталога srvinfo, и она оборвёт работу всех баз кластера, не только удаляемой.
Чем отличается «очистить» и «удалить» базу данных в окне удаления?
«Очистить» оставляет в СУБД пустую базу (структура сохраняется), «удалить» — убирает базу из СУБД целиком. Чтобы окончательно освободить место, выбирайте удаление.