Администрирование · 10 мин
Как получить имя базы 1С: все рабочие способы
Как получить имя базы 1С: через стартовое окно, конфигуратор, код на встроенном языке и консоль СУБД. Разбираем файловый и клиент-серверный варианты работы.
Имя информационной базы 1С требуется в разных ситуациях: при подключении через COM, настройке обмена данными, написании скриптов резервного копирования, регистрации базы в кластере серверов или просто при передаче доступов коллеге. Проблема в том, что «имя базы» — не однозначное понятие: в файловом варианте это фактически путь к каталогу, а в клиент-серверном — имя базы данных на SQL-сервере, которое может отличаться от названия в списке баз пользователя.
Ниже разобраны все практические способы узнать имя базы: через интерфейс стартера, из конфигуратора, программно из встроенного языка 1С и со стороны СУБД. Отдельно рассмотрены частые ошибки, когда администратор путает имя базы в кластере, имя на SQL-сервере и отображаемое название в списке.
Что именно считается именем базы в 1С
Прежде чем искать имя, важно понять, какой из идентификаторов вам нужен, потому что у одной базы их несколько. В файловом варианте база — это каталог с файлом 1Cv8.1CD, и её «имя» для подключения — это путь к этому каталогу. В клиент-серверном варианте существуют три разных сущности: имя базы в кластере 1С (Ref), имя базы данных на SQL-сервере и отображаемое название в списке баз пользователя, которое задаётся произвольно и ни с чем не связано технически.
Путаница между этими идентификаторами — главная причина ошибок при настройке обменов и резервного копирования. Например, скрипт бэкапа на стороне SQL-сервера требует имени базы данных СУБД, а COM-подключение из внешней программы — имени базы в кластере сервера 1С.
Как узнать имя базы через стартовое окно 1С
Самый простой способ, не требующий никаких прав, — посмотреть параметры в списке информационных баз. Запустите 1С (файл 1cestart.exe), выделите нужную базу в списке. В нижней части окна отобразится строка подключения: для файловой базы это путь вида File="\\Server\Bases\Trade", для серверной — параметры вида Srvr="Server1C";Ref="TradeDB".
- 1Запустите 1С через ярлык или 1cestart.exe
- 2Выделите нужную базу в списке одним щелчком
- 3Посмотрите строку подключения внизу окна
- 4Для серверной базы выпишите значения Srvr (сервер) и Ref (имя базы в кластере)
- 5При необходимости нажмите кнопку настройки, чтобы увидеть все параметры подключения
Если база подключена через веб-сервер, в строке будет указан адрес вида ws="http://server/base/ws" или путь публикации. В этом случае имя базы на сервере напрямую из стартера не видно — потребуется один из способов ниже.
Как получить имя базы программно из кода 1С
Когда имя нужно получить внутри прикладного решения — например, для журналирования, формирования путей обмена или проверки, что процедура выполняется в нужной базе, — используется функция встроенного языка СтрокаСоединенияИнформационнойБазы(). Она доступна и в тонком, и в толстом клиенте, и на сервере.
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
// Результат для файловой базы:
// File="C:\Bases\Accounting";
// Результат для серверной базы:
// Srvr="AppServer";Ref="AccountingDB";Чтобы извлечь само имя, строку разбирают по разделителям. Для серверной базы достаточно найти параметр Ref между кавычками. Для файловой — взять путь из параметра File и при необходимости выделить имя каталога. Удобно оформить это отдельной функцией в общем модуле.
Функция ИмяТекущейБазы() Экспорт
Строка = СтрокаСоединенияИнформационнойБазы();
Если СтрНайти(Строка, "Ref=") > 0 Тогда
Начало = СтрНайти(Строка, "Ref=""") + 5;
Конец = СтрНайти(Строка, """;", , Начало);
Возврат Сред(Строка, Начало, Конец - Начало);
Иначе
Возврат Строка; // файловая база — возвращаем путь
КонецЕсли;
КонецФункцииДополнительно различают тип базы через функцию ИнформационнаяБазаФайловая() из стандартной подсистемы БСП (в типовых конфигурациях) — она возвращает Истина для файлового варианта. Это удобно, когда логика должна ветвиться в зависимости от режима работы.
Как узнать имя базы в конфигураторе и через параметры запуска
В конфигураторе имя базы видно в заголовке окна — там отображается строка подключения. Также можно открыть меню «Администрирование» → «Параметры информационной базы», где для клиент-серверного варианта указываются сервер и имя базы в кластере.
Ещё один источник — файлы списков баз. Стартер хранит настройки в файле ibases.v8i в профиле пользователя (обычно в каталоге AppData\Roaming\1C\1CEStart). Это текстовый файл, где для каждой базы прописаны секции с параметрами Connect. Его удобно просматривать скриптом, если нужно собрать информацию по всем базам на компьютере или терминальном сервере.
Как узнать имя базы на сервере 1С и в СУБД
В клиент-серверном варианте имя базы в кластере смотрят в консоли администрирования серверов 1С. Откройте консоль, разверните нужный кластер, перейдите в ветку «Информационные базы» — в списке будут имена баз (Ref) и соответствующие им базы данных на СУБД. Двойной щелчок по базе открывает свойства, где указано имя базы данных, сервер СУБД и тип СУБД.
Если доступа к консоли 1С нет, но есть доступ к SQL-серверу, имя базы данных можно найти штатными средствами СУБД: в SQL Server — через список баз в Management Studio, в PostgreSQL — через pgAdmin или запрос к списку баз. Учтите, что одна база 1С всегда соответствует одной базе данных СУБД, но по имени на SQL-сервере нельзя надёжно определить, к какой базе 1С она привязана, — привязку хранит кластер.
Где искать имя в зависимости от варианта работы
Имя — это путь к каталогу с файлом 1Cv8.1CD. Смотрите строку подключения в стартере или файле ibases.v8i.
Имя Ref смотрите в консоли администрирования кластера 1С, имя базы данных СУБД — в свойствах базы.
Используйте СтрокаСоединенияИнформационнойБазы() в коде или строку подключения в стартовом окне.
В стартере виден только URL публикации; имя базы получайте программно или у администратора веб-сервера.
Типичные ошибки и риски при работе с именем базы
Самая распространённая ошибка — использовать отображаемое название из списка баз в скриптах и настройках обмена. Пользователь переименует базу в списке, и интеграция перестаёт работать, хотя «ничего не меняли». Вторая частая ситуация — путаница между именем базы в кластере и именем базы данных на SQL-сервере: они часто совпадают, но это не гарантировано, особенно после восстановления из бэкапа.
При программном получении имени учитывайте, что в регламентных заданиях и на сервере строка соединения та же, но код должен корректно обрабатывать оба варианта — файловый и серверный, иначе на копии базы, развёрнутой файлово, функция вернёт неожиданный результат.
Как проверить, что имя получено верно
Содержит Srvr и Ref для серверной базы или File для файловой
Отображается только URL веб-публикации — имя нужно получать другим способом
В консоли кластера в свойствах базы указано ожидаемое имя базы данных
Имена различаются — значит, в скриптах СУБД нужно использовать именно имя из свойств
Функция возвращает имя боевой базы, а не тестовой копии
Возвращается путь к локальному каталогу — код выполняется в файловой копии
Частые вопросы
Можно ли узнать имя базы 1С без прав администратора?
Да. Строку подключения видит любой пользователь в стартовом окне, а функция СтрокаСоединенияИнформационнойБазы() не требует административных прав. Доступ к консоли кластера и свойствам базы на СУБД — вот что требует отдельных полномочий.
Чем имя базы в кластере отличается от имени базы данных SQL?
Имя в кластере (Ref) — это идентификатор, по которому сервер 1С адресует подключения. Имя базы данных — это объект на SQL-сервере, где физически хранятся таблицы. При создании базы их обычно делают одинаковыми, но технически это независимые значения, и после восстановления из бэкапа они могут разойтись.
Как узнать имя базы, если подключение идёт через веб-сервер?
Из стартового окна виден только адрес публикации. Используйте функцию СтрокаСоединенияИнформационнойБазы() в коде — она вернёт реальную строку соединения. Либо уточните у администратора, какая база опубликована под данным именем в файле default.vrd на веб-сервере.
Где хранится список баз на компьютере пользователя?
В файле ibases.v8i в каталоге профиля пользователя (обычно AppData\Roaming\1C\1CEStart). Это текстовый файл, где каждая база описана секцией с параметром Connect, содержащим строку подключения.
Можно ли переименовать базу 1С?
Отображаемое название в списке — свободно, это ни на что не влияет. Имя базы в кластере меняется через консоль администрирования 1С. Имя базы данных на SQL-сервере переименовывать напрямую средствами СУБД нельзя — связь с кластером будет потеряна; сначала измените параметры в консоли 1С.
Как получить имя базы для COM-подключения из внешней программы?
Для COM-коннектора нужна та же строка соединения: File="путь" для файловой базы или Srvr="сервер";Ref="имя" для серверной. Возьмите её из стартового окна или файла ibases.v8i — значения полностью совпадают с тем, что ожидает метод Connect.
Что важно запомнить
Имя базы 1С надёжнее всего брать из строки подключения: в стартовом окне, файле ibases.v8i или программно через СтрокаСоединенияИнформационнойБазы(). Отображаемое название в списке — просто подпись. В серверном варианте различайте имя базы в кластере (Ref) и имя базы данных на SQL-сервере, а любые переименования выполняйте только через консоль администрирования 1С.