Где хранится ваша база 1С: в файле или на сервере СУБД
Содержание
Чтобы узнать, файловая у вас версия 1С или SQL (клиент-серверная), выделите базу в окне запуска и посмотрите на строку под списком. File="D:\Bases\Buh"; — база файловая. Srvr="srv1c";Ref="buh"; — база работает через сервер 1С:Предприятия, а данные лежат в СУБД: MS SQL Server, PostgreSQL или другой.
Окно запуска отвечает за 10 секунд, но есть случаи, когда его мало. База открыта по веб-ссылке, нужно понять, какая именно СУБД стоит за сервером, или вы админ и ищете базу на SQL-сервере. Для каждого случая ниже свой способ. Всё описанное относится к платформе 8.3 и одинаково для Бухгалтерии, ЗУП, УТ и других конфигураций: тип хранения задаёт платформа, а не конфигурация.
Какие способы проверки есть и когда какой брать
Сначала сравнение, потом подробности.
| Способ | Кому подходит | Что покажет | Нужны права |
|---|---|---|---|
| Окно запуска | Любому пользователю | Файл или сервер | Нет |
Ярлык и ibases.v8i | Если окно запуска скрыто | Файл или сервер | Нет |
| «О программе» | Уже вошли в базу | Тип базы, версию платформы и конфигурации | Нет |
| Папка базы | Есть доступ к диску | Наличие 1Cv8.1CD | Чтение папки |
Консоль кластера, rac | Администратор | Тип СУБД, имя сервера БД и базы | Администратор кластера и базы |
| Запрос к СУБД | Администратор SQL | Какие базы на сервере принадлежат 1С | Доступ к СУБД |
Слово «SQL» в обиходе означает любой клиент-серверный вариант. Формально правильнее говорить «клиент-серверная база »: за сервером 1С может стоять не только Microsoft SQL Server, но и PostgreSQL, IBM Db2 или Oracle Database.
Как посмотреть тип базы 1С в окне запуска
Окно со списком баз появляется при запуске 1С с ярлыка «1С:Предприятие».
- Щёлкните по нужной базе один раз, не открывая её.
- Посмотрите на нижнюю часть окна, под списком. Там выводится строка соединения выбранной базы.
- Сверьтесь с таблицей.
| Начало строки | Тип базы |
|---|---|
File="C:\..." или File="\\server\share\..." | Файловая |
Srvr="имя_сервера";Ref="имя_базы"; | Клиент-серверная |
ws="http://..." или ws="https://..." | Опубликована на веб-сервере, тип скрыт |
Сетевой путь вида \\server\1c\buh не делает базу серверной. Это та же файловая база, просто папка лежит на другом компьютере.
Проверка через карточку базы
Если строка под списком обрезана, нажмите «Изменить» справа от списка. На первом шаге мастера отмечен вариант расположения:
- 📁 «На данном компьютере или на компьютере в локальной сети» — файловая база;
- 🖥 «На сервере 1С:Предприятия» — клиент-серверная;
- 🌐 «На веб-сервере» — подключение по ссылке публикации.
На следующем шаге видны подробности: каталог базы для файлового варианта или пара «кластер серверов + имя базы в кластере» для серверного. Нажмите «Отмена», чтобы ничего не поменять.
Если строка начинается с ws: база в облаке или в браузере
Префикс ws= значит, что база опубликована на веб-сервере (IIS или Apache), и клиент общается с ней по HTTP. Это бывает при работе через браузер, через тонкий клиент из дома или в облачном сервисе. Сама по себе такая база может быть и файловой, и серверной: клиент этого не видит.
Как выяснить:
- Спросите администратора или провайдера облака. В облачных сервисах база, как правило, клиент-серверная, но точный ответ даёт только поставщик.
- Если доступ к веб-серверу есть, найдите каталог публикации и откройте в нём файл
default.vrd. Атрибутib=содержит настоящую строку соединения:ib="File="D:\Bases\Buh";"илиib="Srvr="srv1c";Ref="buh";". - Войдите в базу и откройте
Справка → О программе: в некоторых случаях там видна строка соединения на стороне веб-сервера, а не адрес публикации.
Что подскажут ярлык и файл ibases.v8i
Иногда пользователю дают ярлык, который открывает одну конкретную базу, а окно запуска не показывается. Тогда смотрите свойства ярлыка: правой кнопкой → «Свойства» → поле «Объект».
Там будет путь к 1cestart.exe или 1cv8.exe и параметры. Два ключевых:
/F"D:\Bases\Buh"— файловая база, после ключа идёт папка;/S"srv1c\buh"— серверная, после ключа идут имя сервера и имя базы в кластере.
Пример ярлыка на серверную базу :
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh_ooo_romashka"
Если параметров в ярлыке нет, он просто открывает окно запуска со списком. Сам список хранится в файле %APPDATA%\1C\1CEStart\ibases.v8i. Откройте его Блокнотом: у каждой базы есть строка Connect=, и её начало (File=, Srvr= или ws=) отвечает на вопрос так же, как окно запуска.
В организациях общий список баз часто раздают централизованно: в файле 1cestart.cfg прописан путь к общему .v8i на сетевом диске. Если в своём ibases.v8i нужной базы нет, ищите в 1cestart.cfg строку CommonInfoBases= и открывайте файл по указанному пути.
Как определить версию базы через «О программе» и Конфигуратор
Если вы уже работаете в базе, закрывать её не нужно.
В режиме 1С:Предприятие
- Откройте главное меню (кнопка с тремя полосками в левом верхнем углу) →
Справка → О программе. - В окне найдите строку «Информационная база» или ссылку «Информация для технической поддержки».
- В строке соединения ищите то же начало:
File=илиSrvr=.
В том же окне видны ещё две вещи, которые часто путают с «версией»:
- 🔢 номер платформы, например
8.3.24.1548; - 📦 название и релиз конфигурации, например «Бухгалтерия предприятия, редакция 3.0» и номер релиза.
Всё это вместе с типом базы удобно скопировать из окна «Информация для технической поддержки» и переслать специалисту.
В Конфигураторе
В Конфигураторе тот же пункт: Справка → О программе. Состав сведений похож: версия платформы, конфигурации и строка подключения к базе.
Программист может проверить тип базы из кода. Функция платформы СтрокаСоединенияИнформационнойБазы() возвращает строку соединения. Её можно вычислить в отладчике (табло или окно «Вычислить выражение») или в любой обработке:
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
ЭтоФайловаяБаза = (СтрНайти(ВРег(СтрокаСоединения), "FILE=") = 1);
Сообщить("Строка соединения: " + СтрокаСоединения);
Сообщить("Файловая база: " + ?(ЭтоФайловаяБаза, "да", "нет"));
В типовых конфигурациях на Библиотеке стандартных подсистем есть готовая функция ОбщегоНазначения.ИнформационнаяБазаФайловая(). Она делает ту же проверку, и в доработках лучше пользоваться ей, а не писать разбор строки заново.
Признак файловой базы 1С в каталоге на диске
Файловая база — это папка, в которой лежит один главный файл 1Cv8.1CD. В нём хранятся и данные, и конфигурация. Рядом обычно видны:
- 📄
1Cv8.1CD— сама база, может весить от десятков мегабайт до десятков гигабайт; - 📂
1Cv8Log— журнал регистрации; - 🗂 временные файлы, которые платформа создаёт во время работы и удаляет после.
Если вы нашли папку из строки File= и в ней есть 1Cv8.1CD — всё однозначно, база файловая.
У клиент-серверной базы такого файла нет вообще. На компьютере пользователя от неё не остаётся ничего, кроме записи в списке баз и локального кэша. На машине с сервером 1С есть служебный каталог кластера (по умолчанию папка srvinfo с подкаталогом reg_1541), но данных там нет: они в базе данных СУБД.
Не копируйте и не переносите 1Cv8.1CD, пока в базе работают пользователи. Копия может оказаться повреждённой. Для резервной копии файловой базы закройте все сеансы или выгрузите базу в .dt через Конфигуратор.
Ещё одна косвенная примета серверного варианта — служба «Агент сервера 1С:Предприятия 8.3» (процесс ragent.exe) в списке служб Windows на сервере. На компьютере, где работают только с файловыми базами, этой службы нет. Но наличие службы ещё не доказывает, что конкретная база серверная: на одной машине нередко живут оба варианта.
Консоль кластера: какая SQL-база стоит за 1С
Строка Srvr=...;Ref=... говорит, что база серверная, но не говорит, какая СУБД под ней и как называется база данных. Это видно в консоли администрирования.
Через оснастку «Администрирование серверов 1С:Предприятия»
- Запустите консоль из меню «Пуск». Она ставится вместе с платформой, если отмечен компонент администрирования серверов.
- Раскройте ветку:
Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы. - Откройте свойства нужной базы. Консоль попросит логин и пароль администратора этой информационной базы.
- Посмотрите три поля:
- «Тип СУБД» —
MSSQLServer,PostgreSQL,IBMDB2илиOracleDatabase; - «Сервер баз данных» — имя или адрес сервера СУБД;
- «База данных» — имя базы на сервере СУБД.
- «Тип СУБД» —
Имя базы в кластере (Ref) и имя базы данных в СУБД могут не совпадать. Например, в 1С база называется buh, а на SQL-сервере — buh_2019_copy. Поэтому для поиска на SQL-сервере берите именно поле «База данных».
Если консоль не открывается с ошибкой про регистрацию компонента, зарегистрируйте radmin.dll той версии платформы, что установлена на сервере: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll" от имени администратора. Версия в пути должна совпадать с версией сервера.
Через утилиту rac
На Linux-серверах и там, где оснастки нет, используют утилиту командной строки rac. Она работает через службу администрирования ras, которая должна быть запущена.
# получить идентификатор кластера
rac cluster list
# список баз кластера (имя, идентификатор)
rac infobase --cluster=<id_кластера> summary list
# подробные свойства базы: dbms, db-server, db-name
rac infobase --cluster=<id_кластера> info --infobase=<id_базы> \
--infobase-user=<пользователь> --infobase-pwd=<пароль>
В выводе последней команды поле dbms показывает тип СУБД, db-server — сервер, db-name — имя базы. Если синтаксис в вашей версии отличается, проверьте его по справке rac help infobase.
Запрос к системным таблицам СУБД
Этот способ нужен администратору базы данных, а не бухгалтеру. Задача обратная: на SQL-сервере много баз, и надо понять, какие из них принадлежат 1С.
Платформа создаёт в каждой своей базе служебные таблицы Config, Params, DBSchema и другие, а объекты конфигурации хранит в таблицах с префиксом подчёркивания: _Reference…, _Document…, _AccumRg…. По служебным таблицам базу 1С легко отличить от чужой.
Microsoft SQL Server
-- все базы на сервере
SELECT name, create_date FROM sys.databases ORDER BY name;
-- какие из них созданы платформой 1С
EXEC sp_MSforeachdb '
USE [?];
IF OBJECT_ID(''dbo.Config'') IS NOT NULL
AND OBJECT_ID(''dbo.Params'') IS NOT NULL
AND OBJECT_ID(''dbo.DBSchema'') IS NOT NULL
SELECT DB_NAME() AS baza_1c;';
PostgreSQL
-- все базы на сервере
SELECT datname FROM pg_database WHERE NOT datistemplate ORDER BY datname;
-- выполнить в нужной базе: есть ли служебные таблицы 1С
SELECT to_regclass('public.config') AS config,
to_regclass('public.params') AS params,
to_regclass('public.dbschema') AS dbschema;
В PostgreSQL платформа создаёт таблицы в нижнем регистре, поэтому имена пишутся маленькими буквами. Если все три поля заполнены, а не NULL, база создана 1С.
Только чтение. Не меняйте данные в таблицах 1С напрямую через SQL: так легко испортить базу без возможности отката, а лицензионное соглашение запрещает прямую запись в обход платформы. Резервную копию серверной базы делайте средствами СУБД или выгрузкой в .dt.
Почему это важно: что меняется от типа базы
Тип базы определяет, как её обслуживать и что делать при проблемах.
| Вопрос | Файловая | Клиент-серверная |
|---|---|---|
| Где данные | Файл 1Cv8.1CD | База данных в СУБД |
| Резервная копия | Копия папки при закрытых сеансах или .dt | Средства СУБД или .dt |
| Лицензии | Клиентские | Клиентские плюс лицензия на сервер 1С (ПРОФ или КОРП) |
| Сеансы пользователей | Видны в Конфигураторе и в режиме Предприятие | Плюс консоль кластера, где можно завершить сеанс |
| Тестирование и исправление | Конфигуратор или утилита chdbfl.exe | Конфигуратор; chdbfl.exe не подходит |
Поэтому специалист поддержки первым делом спрашивает тип базы. От ответа зависит, какой инструкции следовать.
Завершение сеанса из консоли кластера обрывает работу пользователя без сохранения. Делайте это после предупреждения коллег или в нерабочее время.
Частые вопросы
Можно ли перевести файловую базу 1С на SQL-сервер?
.dt через Конфигуратор, создайте в кластере 1С новую базу с нужной СУБД и загрузите в неё файл. Понадобятся сервер 1С с лицензией и установленная СУБД.Чем файловая база 1С отличается от SQL по скорости?
База лежит на сетевом диске. Значит, она серверная?
\\server\папка в строке File= означает файловую базу в общей папке. Серверная база всегда подключается через Srvr= и имя базы в кластере.