Файловая база, MS SQL или PostgreSQL: определяем, на чём работает 1С
Содержание
Быстрее всего тип СУБД виден в окне запуска 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С:Предприятия» (серверная). Для серверной там же указаны кластер серверов
и имя базы в кластере.
Имя базы в кластере (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С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы. - Щёлкните правой кнопкой по базе и выберите
Свойства. - Если база защищена, введите логин и пароль администратора этой информационной базы.
В карточке базы смотрите четыре поля:
| Поле | Что означает | Пример |
|---|---|---|
| Тип СУБД | Какая СУБД хранит данные | 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 только на чтение, лучше его копию. Повреждённый реестр кластера ломает работу всех баз на сервере. Для просмотра скопируйте файл в другую папку и откройте копию.
О программе покажут вариант: File= или Srvr=. Для серверной базы передайте строку подключения администратору.rac через ras на порту 1545, команда infobase info, строка dbms.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.exe | 1540, 1541 |
| MS SQL Server | «SQL Server (MSSQLSERVER)» или с именем экземпляра | sqlservr.exe | 1433 |
| PostgreSQL | Имя содержит postgres или pgsql | postgres.exe | 5432 |
Службу СУБД легко найти, но её наличие ещё не доказывает, что база 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 и загрузку в новую базу на другой СУБД. Перед переходом проверьте, что версия СУБД поддерживается вашей версией платформы.