Ищем, где физически лежат данные информационной базы 1С

· 9 мин

Содержание

Где находится база 1С на сервере, зависит от варианта работы. Файловая база — это папка с файлом 1Cv8.1CD, путь к ней виден внизу окна запуска при выделении базы. Клиент-серверная база хранится не у 1С, а в СУБД (MS SQL Server или PostgreSQL): имя сервера СУБД и имя базы данных смотрят в свойствах информационной базы в консоли кластера.

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

Файловая база: как найти каталог и файл 1Cv8.1CD

В файловом варианте вся информационная база — это один файл 1Cv8.1CD в отдельной папке. Рядом могут лежать служебные файлы: 1Cv8.cfl (журнал транзакций файловой базы), 1Cv8tmp.1CD (временный файл при сжатии или тестировании) и каталог 1Cv8Log с журналом регистрации.

Способ 1. Окно запуска

  1. Откройте окно запуска 1С:Предприятие.
  2. Выделите нужную базу в списке, ничего не запуская.
  3. Посмотрите строку внизу окна: там написано 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С Предприятия» (оснастка устанавливается вместе с сервером 1С).
  2. Если центрального сервера нет в дереве, добавьте его: имя компьютера и порт агента, по умолчанию 1540.
  3. Раскройте Кластеры → (ваш кластер) → Информационные базы.
  4. Откройте свойства нужной базы. Если в базе заведены пользователи, консоль попросит имя и пароль администратора информационной базы.
  5. Посмотрите поля «Сервер баз данных», «Тип СУБД» и «База данных».

Поле «Сервер баз данных» может содержать имя экземпляра, например 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 указан на самом деле

Каталог мог быть изменён при установке. Точный путь задан в параметрах запуска службы агента:

  1. Откройте services.msc.
  2. Найдите службу агента сервера 1С:Предприятия 8.3.
  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 на WindowsC:\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 узнать, на каком диске лежит база?
Нет. Эта строка ведёт к серверу 1С, а не к данным. Диск определяют по свойствам базы в консоли кластера и затем средствами СУБД.
Где лежит кэш и настройки пользователей — это тоже база?
Нет. Кэш конфигурации хранится в %LOCALAPPDATA%\1C\1cv8, настройки — в %APPDATA%\1C\1cv8. Их удаление не трогает данные учёта.
Может ли файловая база лежать на сервере, а работать как серверная?
Нет. Файловая база на сервере остаётся файловой: пользователи открывают её по сети как папку. Перевести её в клиент-серверный вариант можно выгрузкой в .dt и загрузкой в новую базу на сервере 1С.
Как понять, файловая база или серверная, не открывая её?
По строке подключения в окне запуска: File= — файловая, Srvr= и Ref= — клиент-серверная, ws= — подключение через веб-сервер.
Почему в каталоге PostgreSQL нет файла с именем моей базы?
PostgreSQL называет каталоги баз по числовому идентификатору oid. Соответствие имени и номера показывает запрос к pg_database.