Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

Использование метода СтрокаСоединенияИнформационнойБазы()

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  23.06.2026 Актуальность проверена: 23.06.2026   5 мин.
Подобрать перенос данных 1С

Специализируемся на переносах данных 1С с 2015г.

Подобрать перенос данных 1С >>

Интеграция 1С с маркетплейсами

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

Изучить продукты >>

Содержание

Метод СтрокаСоединенияИнформационнойБазы() находится в глобальном контексте 1C:Предприятие. Это означает, что его можно вызывать везде: в толстом, тонком и веб-клиенте, на сервере и даже во внешнем соединении. Метод не требует параметров и возвращает строку – соединение текущей информационной базы. Проще говоря, это полный идентификатор базы, который можно сразу передать 1С для подключения или запуска.

Важно отметить: метод доступен в любых «режимах» 1С. Любая задача, будь то агента сервиса, внешнего COM-плагина или обычной конфигурации, может узнать по ней, к какой базе подключена система. Пользуясь случаем, стоит напомнить: если вы запускаете 1С через COM (технологию Automation), именно такую строку удобно передать методу Connect() внешнего приложения (пример – VisualBasic-код app.Connect(StrInfobase);). Так проще задавать параметры базы.

Синтаксис и возвращаемое значение

Синтаксис крайне прост:

СтрокаСоединенияИнформационнойБазы()

Возвращается строка в формате подключения. Тип возвращаемого значения – Строка. Описание гласит: метод возвращает строку соединения информационной базы, которую, например, можно использовать для запуска 1С:Предприятие средствами встроенного языка или через COM/Automation. Наглядный пример:

File="C:\1cv8\Base"

– это результат вызова для файловой базы. В этой строке заключён полный путь к каталогу базы. При использовании метода важно учесть, что строка содержит кавычки: имя параметра окружено кавычками и может включать пробелы. Если вы передаёте результат в командную строку 1С (через ключ /IBConnectionString), нужно взять всю строку в кавычки и удвоить внутренние (как того требует синтаксис). Например:

RunSystem("/IBConnectionString """ + СтрокаСоединенияИнформационнойБазы() + """");

Так мы безопасно передадим путь в новый сеанс 1С. Метод удобен для отладки и логирования – вы всегда видите из строки соединения, к какой базе реально привязана текущая сессия.

Формат строки соединения

Строка соединения содержит параметры в виде Имя="Значение", разделённые точкой с запятой. Основные форматы:

Тип информационной базы Строка соединения (пример)
Файловая (локальная или сетевая) File="C:\Путь\К\Инфобазе"
Клиент-серверная (обычный сервер) Srvr="ИмяСервера";Ref="ИмяБазы";
Кластер 1С (список адресов) Srvr="Server1,Server2" (или с портами);Ref="ИмяБазы";

Заметим, что строка почти всегда заканчивается точкой с запятой; в примере выше она есть в конце. Параметры File, Srvr, Ref — обязательные для своих вариантов. Если вы подключаетесь к базе напрямую по СУБД (например, PostgreSQL), метод тоже возвращает File=... с каталогом временных файлов, но чаще используется вариант с Srvr/Ref.

Кстати, если вы только начинаете пользоваться этим методом, скажу по секрету: раньше некоторые программисты вручную собирали пути и названия баз из настроек, а потом обнаружили эту функцию – и с облегчением выдохнули. Всего одна строчка кода вместо десятков манипуляций!

Извлечение параметров из строки

Удобно не только получить всю строку, но и вытащить из неё отдельные части. Например, функции языка 1C НСтр() («нативная строка») позволяют легко извлечь значение по имени параметра. Пример:

Строка = СтрокаСоединенияИнформационнойБазы();
ПутьИБ = НСтр(Строка, "File");  // возвращает каталог (без кавычек)
ИмяБазы = НСтр(Строка, "Ref");  // возвращает имя базы (для серверной)

Если в строке нет нужного параметра (например, File в серверной базе), НСтр() вернёт пустую строку или 0 – проверьте поведение в вашем релизе. Впрочем, зачастую используют Найти(ВРег(...), "FILE=") или Найти(ВРег(...), "SRVR="), чтобы понять, какие параметры есть. Главное – помнить о регистре: лучше применять ВРег() или приводить оба операнда к одному регистру, чтобы избежать неожиданностей (в фоновых задачах имя базы может оказаться в верхнем регистре, см. замечания ниже).

Определение типа информационной базы

По строке соединения просто понять, какая это база – файловая или серверная. Например, можно написать такую функцию:

Функция КакаяБаза() Экспорт
	s = СтрокаСоединенияИнформационнойБазы();
	Если Найти(ВРег(s, "FILE=")) = 1 Тогда
		Возврат "Файловая";
	Иначе
		Возврат "Серверная";
	КонецЕсли;
КонецФункции

Здесь проверяется наличие подстроки FILE= в начале. Если Srvr= подстроки не найдено, метод считает базу серверной. Вы можете возвращать логические Истина/Ложь или свои текстовые константы. Главное – в условии поиска не забыть использовать ВРег(), иначе File= или Srvr= могли оказаться в другом регистре. Для комплексной логики можно также искать Srvr=, а не только File=.

Представление пути к базе для пользователя

Иногда нужно не просто узнать тип, а составить «понятную» строку для отображения. Например, для файловой базы это может быть сетевой путь, а для клиент-серверной — имя сервера и база. Рассмотрим упрощённую функцию:

Функция ПолучитьПредставлениеИнформационнойБазы() Экспорт
	params = СтрокаСоединенияИнформационнойБазы();
	Если Найти(ВРег(params, "FILE=")) = 1 Тогда
		// файловая база: возвращаем путь каталога
		Возврат НСтр(params, "File");
	Иначе
		// серверная: соединяем ИмяСервера и ИмяБазы через "/"
		srv = НСтр(params, "Srvr");
		name = НСтр(params, "Ref");
		Если srv = Неопределено Или name = Неопределено Тогда 
			Возврат ""; // неожиданный формат
		КонецЕсли;
		Возврат srv + "/" + name;
	КонецЕсли;
КонецФункции

Если база файловая, мы просто возвращаем путь к папке (например, \\FileServer\1c_ib\). Если серверная, объединяем имя сервера и имя базы: например, ServerName:1541/Accounting. Эти данные удобно показывать в заголовках или логах, чтобы понять, к чему подключён пользователь. При этом проверьте, что НСтр() вернул не пусто – в редких случаях «чужая» строка может не содержать ожидаемые параметры.

Получение каталога информационной базы

Иногда требуется не просто строка соединения, а каталог информационной базы на диске. Для файловой базы это, разумеется, папка, указанная в параметре File. Для серверной такой директории не существует (данные хранятся в СУБД), поэтому часто возвращают каталог временных файлов 1С. Например:

Функция КаталогИБ() Экспорт
	s = СтрокаСоединенияИнформационнойБазы();
	Если Найти(ВРег(s, "FILE=")) = 1 Тогда
		// файловая база: возвращаем путь к каталогу
		Возврат НСтр(s, "File") + "\";
	Иначе
		// серверная база: физический каталог неизвестен
		Возврат КаталогВременныхФайлов();
	КонецЕсли;
КонецФункции

Если база файловая, мы получаем из строки соединения значение File и добавляем обратный слэш. Если серверная, возвращаем результат встроенной функции КаталогВременныхФайлов() (в кластере 1С это, как правило, папка FComFiles/1541 или аналогичная). Стоит учесть: в зависимости от версии платформы функция может возвращать разный путь, но обычно это безопасный временный каталог, куда можно, например, сохранять генерируемые файлы при работе с базой.

Между тем, обратите внимание: коды примеров выше предполагают, что мы получаем непустую строку соединения. В редких случаях СтрокаСоединенияИнформационнойБазы() может вернуть пустую строку, если нет активного подключения. На практике при вызовах в обычной сессии это случается редко, но если делаете внешнее соединение или агента – стоит предусмотреть проверку. Так, если s="", можно сначала вызвать сам метод, а уже потом парсить.

Практические рекомендации и примеры

  1. Запуск нового сеанса. Чтобы из кода 1С запустить ещё один сеанс (например, клиента, подключенного к той же базе), используют метод ЗапуститьСистему(). Параметр /IBConnectionString принимает строку, похожую на результат нашего метода. Пример:
    	params = "/IBConnectionString """ + СтрокаСоединенияИнформационнойБазы() + """";
    ЗапуститьСистему(params, Истина);
    
    Так мы передадим новый процессу необходимые параметры подключения без явного указания пути и настроек.
  2. Автоматизация через COM. Если ваша внешняя 1С (или WinAPI) вызывается через COM, передавайте строку напрямую в Connect():
    	app = CreateObject("V85.Application")
    app.Connect(СтрокаСоединенияИнформационнойБазы())
    
    Метод Connect() сам распарсит полученную строку.
  3. Логирование и отладка. Полезно записывать в журналы строку соединения при старте приложения или обработке: так легче понимать, с какой именно базой работает код. Особенно когда на сервере может быть несколько баз с разными именами.
  4. Регистрозависимый поиск. Как упоминалось, SQL Server-сервер может вернуть имя базы в верхнем регистре (например, Ref="UT" вместо ut). При сравнении или поиске используйте ВРег() или СтрСравнить(), чтобы не прогадать с регистром.
  5. Настройки кластера. Если инфобаза добавлена под названием localhost в кластере, СтрокаСоединенияИнформационнойБазы() может возвращать Srvr="localhost". Это нормально, но иногда сбивает с толку. Если хочется видеть сетевое имя, проверьте файл настроек 1cv8wsrv.lst в каталоге srvinfo – там хранится имя сервера 1С. При необходимости перезапустите сервер 1С. Эта деталь нередко упоминается на форумах – к примеру, если вы получаете localhost, хотя в настройках указали другое имя.
  6. Использование в общих модулях. В БСП и других библиотеках часто есть стандартные функции, которые принимают строку соединения. Например, ИнформационнаяБазаФайловая может принимать строку (если вы хотите проверить, что строка – для файловой БД). Однако чаще достаточно наличия File= или Srvr= в ней.

Каждый из приведённых примеров функций можно вынести в отдельный общий модуль и вызывать по необходимости. С повторением при обучении: мы уже много раз сказали «строка соединения», и это не случайно – акцент важен.

Заключение

Мы рассмотрели все тонкости метода СтрокаСоединенияИнформационнойБазы(): от формата возвращаемой строки до практического использования. Этот метод – надёжный и универсальный инструмент для работы с путём к 1C-базе. Он отлично вписывается в сценарии автоматического запуска, внешних подключений и административных проверок. Остаётся лишь открытым вопрос: если мир движется к облачным сервисам, не появится ли скоро новая, ещё более «облачная» альтернатива этой методике? А пока – полагаемся на уже знакомые приёмы.

И в конце – на размышление: возможно, кто-то из вас знает трюк, который сделает работу со строкой соединения ещё удобнее? Чем ещё методу удивить профессионала 1С в будущем?

MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку