Файловая база, MS SQL или PostgreSQL: определяем, на чём работает 1С

· 9 мин

Содержание

Быстрее всего тип СУБД виден в окне запуска 1С: выделите базу в списке, и внизу появится строка подключения. File="C:\Bases\Buh" означает файловую базу со встроенным движком. Srvr="srv1c";Ref="buh" означает клиент-серверную базу , и тогда конкретная СУБД (Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle) указана в свойствах информационной базы в консоли кластера 1С.

Вопрос обычно встаёт в неудобный момент. Пришли на новую работу, а документации нет. Подрядчик спрашивает, под какую СУБД собирать обработку с прямыми запросами. Или нужно настроить резервное копирование , а непонятно, что копировать: папку или базу на SQL-сервере. Ниже способы от самого простого до самого надёжного, каждый со своей областью применения.

С чего начать: два варианта работы 1С

У 1С:Предприятия 8.3 два варианта хранения данных, и от этого зависит, где искать ответ.

  • 📁 Файловый вариант. Вся база лежит в одном файле 1Cv8.1CD в папке на диске или в сетевой шаре. Отдельной СУБД нет, данные обслуживает движок, встроенный в платформу.
  • 🖥️ Клиент-серверный вариант. Клиенты подключаются к серверу 1С:Предприятия, а тот хранит данные во внешней СУБД. Поддерживаются Microsoft SQL Server, PostgreSQL (включая сборки, адаптированные для 1С), IBM DB2 и Oracle Database.

Поэтому определение идёт в два шага. Сначала выясняете вариант: файловый или серверный. Если серверный — ищете конкретную СУБД, её сервер и имя базы данных.

Что видитеВариантЧто дальше
File="..."ФайловыйОтвет получен, СУБД встроенная
Srvr="...";Ref="..."Клиент-серверныйСмотреть свойства базы в кластере
ws="http://..."Подключение через веб-серверВыяснять у администратора публикации

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

Окно запуска и список баз: первая проверка

Окно со списком информационных баз — самый быстрый способ. Права администратора не нужны.

  1. Запустите 1С через ярлык, откроется список баз.
  2. Щёлкните по нужной базе один раз, не открывая её.
  3. Посмотрите на нижнюю часть окна: там выводится строка подключения.

Если строка не видна целиком, нажмите Изменить и пройдите мастер. На втором шаге будет выбран один из вариантов расположения: «На данном компьютере или на компьютере в локальной сети» (файловая база) или «На сервере 1С:Предприятия» (серверная). Для серверной там же указаны кластер серверов и имя базы в кластере.

Имя базы в кластере (Ref) и имя базы данных на SQL-сервере могут не совпадать. В кластере база называется buh, а на сервере PostgreSQL та же база может называться buh_2024 или bp30_prod. Это частая причина путаницы при восстановлении из бэкапа.

Когда ярлыка нет: файл ibases.v8i

Список баз пользователя хранится в текстовом файле %APPDATA%\1C\1CEStart\ibases.v8i. Откройте его Блокнотом. Каждая база — это блок с именем в квадратных скобках и строкой Connect=:

[Бухгалтерия предприятия]
Connect=Srvr="srv1c";Ref="buh";
ID=...

[Учебная ЗУП]
Connect=File="D:\Bases\ZUP_demo";
ID=...

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

Конфигуратор и режим Предприятия: «О программе»

Если база уже открыта, вариант виден в окне «О программе». Оно есть и в Конфигураторе, и в пользовательском режиме.

  • Конфигуратор: меню Справка → О программе.
  • Режим Предприятия (интерфейс «Такси»): кнопка с вопросительным знаком или меню-«бутерброд» в заголовке окна, далее О программе.

В окне ищите строку «Информационная база». Для файловой базы там будет путь к каталогу, для серверной — Srvr=...;Ref=.... Рядом указана версия платформы и режим работы клиента.

Этот способ закрывает задачу «файловая или серверная», когда у пользователя нет доступа к списку баз, например при запуске через RemoteApp или с ярлыка с параметрами. Конкретную внешнюю СУБД окно «О программе» в явном виде не называет, за ней нужно идти на сервер.

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

Строка подключения из кода

Тот же результат даёт встроенный язык. Функция СтрокаСоединенияИнформационнойБазы() возвращает строку подключения текущей базы:

Строка = СтрокаСоединенияИнформационнойБазы();
Если СтрНайти(ВРег(Строка), "FILE=") > 0 Тогда
    Сообщить("Файловая база: " + Строка);
Иначе
    Сообщить("Серверная база: " + Строка);
КонецЕсли;

Код пригодится во внешней обработке, когда проверку нужно встроить в регламент или выполнить у пользователя без доступа к Конфигуратору.

Консоль администрирования серверов 1С: точный ответ для серверной базы

Для клиент-серверной базы самый надёжный источник — свойства информационной базы в кластере. Именно отсюда сервер 1С берёт параметры подключения к СУБД.

  1. На сервере 1С откройте оснастку «Администрирование серверов 1С Предприятия».
  2. Разверните Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы.
  3. Щёлкните правой кнопкой по базе и выберите Свойства.
  4. Если база защищена, введите логин и пароль администратора этой информационной базы.

В карточке базы смотрите четыре поля:

ПолеЧто означаетПример
Тип СУБДКакая СУБД хранит данныеMSSQLServer, PostgreSQL, IBMDB2, OracleDatabase
Сервер баз данныхГде работает СУБДsql01\MSSQL2019, localhost port=5433
База данныхИмя базы на сервере СУБДbp30_prod
Пользователь сервера БДПод кем 1С подключается к СУБДsa, postgres, usr1c

Обратите внимание на формат сервера. Обратная косая черта после имени машины указывает на именованный экземпляр MS SQL. Запись вида localhost port=5433 характерна для PostgreSQL на нестандартном порту.

Если консоль не открывается

Оснастка часто перестаёт работать после обновления платформы: в консоли MMC появляется ошибка вместо дерева серверов. Причина обычно в том, что библиотека консоли зарегистрирована от старой версии. Помогает повторная регистрация radmin.dll от текущей версии в командной строке от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Номер версии в пути подставьте свой: он совпадает с именем папки в C:\Program Files\1cv8\. Для 64-разрядного сервера берите библиотеку из 64-разрядной платформы, для 32-разрядного — из Program Files (x86).

Без графической консоли: утилита rac

На Linux-сервере или при удалённом доступе без MMC используют утилиту rac. Она работает через сервер администрирования ras, который по умолчанию слушает порт 1545. Если ras не запущен как служба, его стартуют командой ras cluster из каталога bin платформы.

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid кластера>
rac localhost:1545 infobase info --cluster=<uuid кластера> --infobase=<uuid базы> --infobase-user=Администратор --infobase-pwd=***

В выводе последней команды ищите строки dbms, db-server и db-name. Если на кластер назначен администратор, добавьте параметры --cluster-user и --cluster-pwd. Полный список ключей выдаёт rac help infobase.

Список баз в каталоге кластера

Есть и способ без входа в консоль. Реестр кластера хранится в каталоге служебных данных сервера, по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541. Файл 1CV8Clst.lst содержит описания всех баз кластера, и в нём встречаются названия типов СУБД вроде MSSQLServer или PostgreSQL.

Открывайте 1CV8Clst.lst только на чтение, лучше его копию. Повреждённый реестр кластера ломает работу всех баз на сервере. Для просмотра скопируйте файл в другую папку и откройте копию.

Где вы можете посмотреть?

SQL-запросы: проверка на стороне СУБД

Иногда доступа к кластеру 1С нет, а к серверу СУБД есть. Тогда задача обратная: найти, какие базы на сервере принадлежат 1С и какая версия СУБД установлена.

Microsoft SQL Server

Подключитесь через SQL Server Management Studio и выполните:

SELECT @@VERSION;

-- базы, в которых есть служебная таблица 1С Config
EXEC sp_MSforeachdb 'IF OBJECT_ID(''[?].dbo.Config'') IS NOT NULL PRINT ''?''';

Первый запрос вернёт версию и редакцию SQL Server. Второй перечислит базы, где есть таблица Config: в ней 1С хранит конфигурацию. Процедура sp_MSforeachdb недокументированная, но есть во всех распространённых версиях. Если её нет, просмотрите базы вручную: у базы 1С сотни таблиц с именами вида _Reference123, _Document45, _AccumRg678.

PostgreSQL

В psql или pgAdmin:

SELECT version();

-- список баз на сервере
SELECT datname FROM pg_database WHERE NOT datistemplate;

Затем подключитесь к нужной базе и проверьте служебные таблицы:

SELECT tablename FROM pg_tables
WHERE tablename IN ('config', 'params', 'files');

В PostgreSQL 1С создаёт таблицы с именами в нижнем регистре: config, params, _reference123. Если все три таблицы нашлись, база принадлежит 1С. Строка version() заодно покажет сборку: у адаптированных для 1С дистрибутивов в описании обычно видно название поставщика.

Запросы выше только читают системные каталоги. Изменять данные 1С прямыми SQL-командами нельзя: платформа не узнает о правках, а итоги регистров и связи объектов разойдутся.

Файлы на диске, службы и процессы Windows

Последняя группа способов работает, когда есть доступ к серверу, но нет учётных данных ни к 1С, ни к СУБД.

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

Откройте каталог базы. Признак файлового варианта — файл 1Cv8.1CD. Рядом обычно лежат папка журнала регистрации 1Cv8Log и временные файлы блокировок. Размер 1Cv8.1CD равен размеру всей базы.

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

Ещё один признак файловой базы на сетевом ресурсе: в строке подключения стоит путь вида File="\\fs01\Bases\Buh". Такая база открывается с любого компьютера, у которого есть права на запись в эту шару, и сервер 1С для неё не нужен.

Службы и процессы

Откройте services.msc или вкладку «Подробности» в диспетчере задач. Ориентируйтесь на таблицу:

Что ищетеСлужбаПроцессПорт по умолчанию
Сервер 1С«Агент сервера 1С:Предприятия 8.3»ragent.exe, rmngr.exe, rphost.exe1540, 1541
MS SQL Server«SQL Server (MSSQLSERVER)» или с именем экземпляраsqlservr.exe1433
PostgreSQLИмя содержит postgres или pgsqlpostgres.exe5432

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

Посмотреть, куда реально подключены рабочие процессы 1С, можно командой в консоли от имени администратора:

netstat -ano | findstr ":1433 :5432"

Если в выводе есть соединения на порт 1433 или 5432, сопоставьте PID с процессом rphost.exe в диспетчере задач. Так видно, к какой СУБД сервер 1С обращается прямо сейчас.

Не останавливайте службы ради проверки. Остановка службы сервера 1С или СУБД оборвёт сеансы всех пользователей и может прервать выполнение регламентных заданий. Все способы выше работают на запущенной системе.

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

Можно ли узнать тип СУБД, не будучи администратором?
Вариант базы — да: окно запуска и «О программе» показывают File= или Srvr=. Конкретную внешнюю СУБД обычный пользователь не увидит, это знает только кластер.
Почему в консоли кластера не открываются свойства базы?
Консоль просит логин и пароль администратора информационной базы. Без них карточка не откроется, даже если вы администратор кластера.
Влияет ли тип СУБД на работу конфигурации?
Типовые конфигурации работают на всех поддерживаемых СУБД. Различия проявляются в производительности, обслуживании и в обработках с прямыми запросами к базе.
Как узнать версию PostgreSQL или MS SQL, на которой стоит база?
Выполните на сервере СУБД SELECT version(); для PostgreSQL или SELECT @@VERSION; для MS SQL Server.
Можно ли сменить СУБД у существующей базы?
Да, через выгрузку в файл .dt и загрузку в новую базу на другой СУБД. Перед переходом проверьте, что версия СУБД поддерживается вашей версией платформы.