Ищем, где физически лежат данные информационной базы 1С
Содержание
Где находится база 1С на сервере, зависит от варианта работы. Файловая база — это папка с файлом 1Cv8.1CD, путь к ней виден внизу окна запуска при выделении базы. Клиент-серверная база
хранится не у 1С, а в СУБД (MS SQL Server или PostgreSQL): имя сервера СУБД и имя базы данных смотрят в свойствах информационной базы в консоли кластера.
Типичная ситуация: админ уволился, документации нет, а на сервере нужно переносить данные или настраивать резервное копирование . Пользователи открывают базу из списка, но где она физически лежит, не знает никто. Сначала определите вариант работы по строке подключения, затем идите в нужный раздел: для файловой базы хватит пяти минут, для серверной понадобятся права администратора кластера и доступ к СУБД.
Файловая база: как найти каталог и файл 1Cv8.1CD
В файловом варианте вся информационная база — это один файл 1Cv8.1CD в отдельной папке. Рядом могут лежать служебные файлы: 1Cv8.cfl (журнал транзакций файловой базы), 1Cv8tmp.1CD (временный файл при сжатии или тестировании) и каталог 1Cv8Log с журналом регистрации.
Способ 1. Окно запуска
- Откройте окно запуска 1С:Предприятие.
- Выделите нужную базу в списке, ничего не запуская.
- Посмотрите строку внизу окна: там написано
File="D:\Bases\Buh";. Путь в кавычках и есть каталог базы.
Если база сетевая, строка будет вида File="\\srv-1c\Bases\Buh"; — то есть папка лежит на сервере srv-1c в общем ресурсе Bases.
Способ 2. Изнутри открытой базы
Откройте базу, нажмите кнопку главного меню и выберите Справка → О программе. В окне есть строка с параметрами информационной базы: для файловой там указан каталог, для серверной — сервер и имя базы.
Программисту ещё быстрее: функция СтрокаСоединенияИнформационнойБазы() возвращает ту же строку. Её можно вычислить в режиме отладки или вывести сообщением из внешней обработки:
Сообщить(СтрокаСоединенияИнформационнойБазы());
Способ 3. Поиск по диску
Если списка баз нет вовсе, ищите по имени файла. В PowerShell на сервере:
Get-ChildItem -Path D:\ -Filter 1Cv8.1CD -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName, Length, LastWriteTime
Поле LastWriteTime сразу показывает, какая из найденных баз рабочая, а какая — забытая копия трёхлетней давности.
Файловая база, опубликованная на веб-сервере, указана в файле default.vrd в каталоге публикации: атрибут ib содержит строку вида File="D:\Bases\Buh";.
Клиент-серверная база: где на самом деле хранятся данные
В клиент-серверном варианте файла 1Cv8.1CD нет. Данные лежат в базе данных СУБД, а сервер 1С только знает, где её искать. Поэтому у такой базы два «адреса»:
| Что ищем | Как выглядит | Где смотреть |
|---|---|---|
| Адрес для пользователей | Srvr="srv-1c";Ref="buh"; | Окно запуска, ibases.v8i |
| Где лежат данные | Сервер СУБД + имя базы данных | Консоль кластера, свойства базы |
| Физические файлы | .mdf/.ldf или каталог PostgreSQL | Средства самой СУБД |
| Служебные данные кластера | Каталог srvinfo | Свойства службы агента |
Имя базы в кластере (Ref) и имя базы данных в СУБД не обязаны совпадать. Пользователи заходят в buh, а в SQL Server она может называться buh_2019_new. Отсюда частая путаница: админ находит на SQL-сервере базу «с похожим именем» и делает копию не той.
Не делайте выводов по похожему имени — сверяйте поле «База данных» в свойствах информационной базы.
Консоль администрирования серверов 1С: свойства информационной базы
Это главный способ для клиент-серверной базы.
- Запустите «Администрирование серверов 1С Предприятия» (оснастка устанавливается вместе с сервером 1С).
- Если центрального сервера нет в дереве, добавьте его: имя компьютера и порт агента, по умолчанию 1540.
- Раскройте
Кластеры → (ваш кластер) → Информационные базы. - Откройте свойства нужной базы. Если в базе заведены пользователи, консоль попросит имя и пароль администратора информационной базы.
- Посмотрите поля «Сервер баз данных», «Тип СУБД» и «База данных».
Поле «Сервер баз данных» может содержать имя экземпляра, например sql01\MSSQL1C, или порт для PostgreSQL. Это и есть ответ на вопрос, на какой машине лежат данные.
Если оснастка не открывается и пишет об ошибке при загрузке, обычно не зарегистрирована библиотека консоли. Её регистрируют от имени администратора командой regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll", подставив свою версию платформы.
Если пароль администратора базы неизвестен
Без пароля консоль не покажет поля СУБД. Выходы такие:
- 👤 спросите у ответственного за базу пользователя с ролью «Администратор» — достаточно ввести его учётные данные один раз;
- 📄 скопируйте файл реестра кластера
1CV8Clst.lst(о нём ниже) в отдельную папку и откройте копию блокнотом: имена серверов СУБД и баз данных записаны там обычным текстом рядом с именем информационной базы; - 🔎 на SQL-сервере посмотрите активные подключения от сервера 1С: в SQL Server это монитор активности в SSMS, в PostgreSQL — представление
pg_stat_activity. Имя базы данных, к которой обращается рабочий процесс 1С, видно сразу.
То же самое через rac
Когда графической консоли нет (сервер на Linux или доступ только по SSH), используйте утилиту rac вместе с запущенным сервером администрирования ras:
rac cluster list
rac infobase summary list --cluster=<uuid-кластера>
rac infobase info --cluster=<uuid-кластера> --infobase=<uuid-базы> \
--infobase-user=Админ --infobase-pwd=пароль
В выводе последней команды есть строки dbms, db-server и db-name. Для остальных параметров смотрите справку rac help infobase.
Каталог srvinfo, список баз и реестр Windows
Список баз у пользователя: ibases.v8i
Окно запуска хранит список баз не в реестре, а в текстовом файле %APPDATA%\1C\1CEStart\ibases.v8i. Откройте его блокнотом: у каждой базы есть строка Connect=, где видно File=... или Srvr=...;Ref=....
Если список баз раздаётся централизованно, ищите в файле %APPDATA%\1C\1CEStart\1cestart.cfg параметр CommonInfoBases= — он указывает на общий .v8i на сетевом ресурсе.
Каталог служебных данных кластера
Сервер 1С держит реестр кластера и служебные файлы в каталоге srvinfo. Расположение по умолчанию:
- 🪟 Windows:
C:\Program Files\1cv8\srvinfo; - 🐧 Linux:
/home/usr1cv8/.1cv8/1C/1cv8.
Внутри есть папка reg_1541, а в ней файл реестра кластера 1CV8Clst.lst со списком баз и их параметров подключения к СУБД. Там же папки с GUID в имени — это журналы регистрации и служебные данные отдельных баз, но не сами данные.
Не редактируйте 1CV8Clst.lst вручную и не удаляйте папки из reg_1541 на работающем сервере. Ошибка в этом файле может «потерять» все базы кластера разом.
Где путь к srvinfo указан на самом деле
Каталог мог быть изменён при установке. Точный путь задан в параметрах запуска службы агента:
- Откройте
services.msc. - Найдите службу агента сервера 1С:Предприятия 8.3.
- В свойствах посмотрите поле «Исполняемый файл»: после ключа
-dуказан каталог, после-portи-regport— порты агента и менеджера кластера.
Та же строка хранится в реестре, в параметре ImagePath раздела HKLM\SYSTEM\CurrentControlSet\Services\<имя службы агента>. Запрос из командной строки:
sc qc "<имя службы агента>"
Где лежат файлы базы в MS SQL Server и PostgreSQL
MS SQL Server
База 1С в SQL Server — обычная пользовательская база данных из двух файлов: данные .mdf и журнал .ldf. Путь проще всего получить запросом в SQL Server Management Studio:
SELECT DB_NAME(database_id) AS db, type_desc, physical_name, size*8/1024 AS size_mb
FROM sys.master_files
WHERE DB_NAME(database_id) = 'buh';
Без запросов: в SSMS откройте свойства базы данных, страница «Файлы» — там видны пути к обоим файлам.
Копировать .mdf на работающем сервере нельзя: получится несогласованный файл. Для копии используйте резервное копирование средствами SQL Server или выгрузку .dt из Конфигуратора.
PostgreSQL на Windows и Linux
PostgreSQL хранит все базы в одном каталоге данных кластера СУБД. Узнать его можно из самой СУБД:
SHOW data_directory;
SELECT oid, datname FROM pg_database WHERE datname = 'buh';
Каждая база лежит в подкаталоге base/<oid>, где oid — число из второго запроса. Внутри — сотни файлов с числовыми именами. Отдельного «файла базы» здесь нет, и копировать эти файлы по одному бессмысленно.
Типовые каталоги данных:
| Сборка и ОС | Каталог данных по умолчанию |
|---|---|
| PostgreSQL на Debian/Ubuntu | /var/lib/postgresql/<версия>/main |
| PostgreSQL на RHEL-подобных | /var/lib/pgsql/<версия>/data |
| PostgreSQL на Windows | C:\Program Files\PostgreSQL\<версия>\data |
Сборки PostgreSQL для 1С от разных поставщиков могут ставиться в свои каталоги, поэтому надёжнее всего SHOW data_directory. На Linux тот же путь виден в параметрах процесса: ps aux | grep postgres покажет ключ -D с каталогом данных.
Резервную копию базы
PostgreSQL снимают утилитой pg_dump, а не копированием каталога base.
Когда база «пропала»: переносы, сетевые диски, сбои
Чаще всего база никуда не делась, а сломался путь к ней. Разберите свой случай.
Пара правил, которые снимают большую часть проблем при миграции:
- 📁 файловые базы держите на локальном диске сервера и раздавайте по UNC-пути, а не по букве диска;
- 🔑 у учётной записи, под которой работают пользователи, должны быть права на чтение и запись в каталог базы, иначе 1С не сможет создать служебные файлы рядом с
1Cv8.1CD; - 🗂 после переноса серверной базы на другой SQL-сервер исправьте поле «Сервер баз данных» в консоли — сами пользователи ничего менять не должны;
- 📝 запишите в одном месте: имя базы в кластере, сервер СУБД, имя базы данных, каталог
srvinfo.
Если для переноса нужно остановить службу агента 1С или SQL Server, все сеансы пользователей оборвутся без сохранения. Делайте это вне рабочего времени и предупредите людей заранее.
Если не помогло
Когда базу не удаётся найти ни в списке, ни в консоли, ни поиском по диску, проверьте журналы СУБД. В SQL Server список всех баз даёт SELECT name FROM sys.databases, в PostgreSQL — \l в psql. Базы 1С узнают по набору таблиц с именами вида _Reference, _Document, _AccumRg. Сопоставить базу данных с информационной базой кластера можно, зарегистрировав её в консоли под временным именем и открыв в Конфигураторе.
Частые вопросы
Можно ли по строке Srvr и Ref узнать, на каком диске лежит база?
Где лежит кэш и настройки пользователей — это тоже база?
%LOCALAPPDATA%\1C\1cv8, настройки — в %APPDATA%\1C\1cv8. Их удаление не трогает данные учёта.Может ли файловая база лежать на сервере, а работать как серверная?
.dt и загрузкой в новую базу на сервере 1С.Как понять, файловая база или серверная, не открывая её?
File= — файловая, Srvr= и Ref= — клиент-серверная, ws= — подключение через веб-сервер.Почему в каталоге PostgreSQL нет файла с именем моей базы?
oid. Соответствие имени и номера показывает запрос к pg_database.