К статье
Практический материал

Администрирование · 9 мин

1С 8: как подключиться к другой базе

Как подключиться из 1С 8 к другой базе: COM-соединение, внешние источники данных, веб-сервисы. Примеры кода, настройка, типичные ошибки и проверка результата.

Задача подключиться из одной базы 1С 8 к другой возникает при обмене данными между конфигурациями, консолидации отчётности, переносе документов и синхронизации справочников. Платформа предлагает несколько рабочих механизмов: COM-соединение, внешние источники данных, веб-сервисы и HTTP-запросы, а также обмен через файлы. У каждого способа есть свои условия применения, ограничения и требования к правам.

Выбор механизма зависит от того, где расположена вторая база (на том же компьютере, в локальной сети, на сервере 1С или в облаке), какие у неё версии платформы и конфигурации и нужен ли доступ в реальном времени или достаточно периодической выгрузки. Ниже разобраны основные варианты с примерами кода и проверкой результата.

Какие способы подключения существуют и как выбрать

Основных подхода четыре. Первый — COM-соединение: одна база запускает объектную оболочку другой и работает с ней как с обычным объектом встроенного языка. Второй — внешние источники данных: подключение к таблицам SQL напрямую, минуя платформу второй базы. Третий — веб-сервисы и HTTP-сервисы: вторая база публикует программный интерфейс, а первая обращается к нему по сети. Четвёртый — файловый обмен: выгрузка в XML или другой формат с последующей загрузкой.

COM-соединение удобно, когда обе базы находятся в одной локальной сети и на компьютере, откуда выполняется подключение, установлена платформа 1С той же версии. Веб-сервисы — единственный надёжный вариант для баз в интернете и для тонкого клиента без установленной платформы. Внешние источники данных подходят, когда нужно читать данные из сторонней СУБД, а файловый обмен — когда базы изолированы друг от друга.

Сравнение вариантов

COM-соединение

Подходит для баз в локальной сети с установленной платформой. Ограничение: не работает из веб-клиента и требует совпадения версий платформы.

Веб-сервисы / HTTP

Подходит для удалённых и облачных баз. Ограничение: требует публикации базы на веб-сервере и разработки интерфейса обмена.

Внешние источники данных

Подходит для чтения таблиц SQL сторонних систем. Ограничение: обходит логику конфигурации, запись данных рискованна.

Файловый обмен XML

Подходит для изолированных баз и разовых переносов. Ограничение: нет доступа в реальном времени.

Подключение через COM-соединение

COM-соединение создаётся через объект V83.COMConnector. Для файловой базы строка подключения содержит путь к каталогу, для серверной — имя сервера и имя базы в кластере. Соединение открывает полноценный сеанс с указанным пользователем, поэтому учётная запись должна существовать во второй базе и обладать нужными правами.

bsl
Коннектор = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "File=""D:\Bases\Trade"";Usr=""Обмен"";Pwd=""12345"";";
Соединение = Коннектор.Connect(СтрокаПодключения);
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
	// обработка данных
КонецЦикла;

Для серверной базы строка подключения выглядит иначе: Srvr="Server1";Ref="Accounting";Usr="...";Pwd="...";. Имя базы в кластере (параметр Ref) можно посмотреть в консоли кластера серверов 1С или в списке баз стартера. Обратите внимание: для 64-разрядной платформы используется тот же класс V83.COMConnector, но COM-компонента должна быть зарегистрирована в системе — при установке платформы это происходит автоматически.

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

Настройка прав и типичные проблемы COM

Пользователь, от имени которого выполняется COM-подключение, должен существовать во второй базе с точно таким же именем и паролем. Если во второй базе включена аутентификация операционной системы, в строке подключения укажите Usr и Pwd явно — иначе подключение попытается выполниться от текущего пользователя Windows и завершится ошибкой.

Частая ошибка — «Класс не зарегистрирован» при создании COMОбъекта. Она означает, что на компьютере, где исполняется код, не установлена платформа 1С или зарегистрирована компонента другой версии. Лечится установкой платформы нужной версии или регистрацией comcntr.dll из каталога bin командой regsvr32. Если код выполняется на сервере 1С, платформа должна быть установлена именно на сервере, а не на клиентской машине.

Типичные ошибки
01
Использование V82.COMConnector для базы на платформе 8.3 — соединение не создаётся, нужен класс V83.COMConnector.
02
Незакрытые соединения в цикле обмена — исчерпываются лицензии второй базы и блокируются сеансы.
03
Запуск COM-обмена из веб-клиента — COM недоступен в браузере, код нужно выполнять на сервере или в толстом клиенте.
04
Передача в строку подключения пути к серверной базе как к файловой — получаете ошибку открытия базы вместо понятного сообщения.

Подключение через веб-сервисы и HTTP

Когда вторая база опубликована на веб-сервере, она может предоставлять веб-сервисы (SOAP) или HTTP-сервисы (REST-подобные). В конфигурации второй базы создаётся объект «HTTP-сервис» или «Web-сервис» с шаблонами URL и обработчиками, затем база публикуется на IIS или Apache с включённым доступом к сервисам.

Со стороны первой базы вызов выполняется через HTTPСоединение и HTTPЗапрос либо через WS-ссылку, созданную по WSDL-описанию. Этот способ не требует установки платформы на стороне клиента, работает через интернет и единственный возможен для обмена с базами в облачных сервисах. Ограничение — вся логика выборки и передачи данных должна быть заранее реализована в сервисах второй базы, произвольные запросы «на лету» выполнить нельзя.

bsl
Соединение = Новый HTTPСоединение("server.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/base/hs/exchange/nomenclature");
Запрос.УстановитьТелоИзСтроки(ТелоJSON);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
	Данные = Ответ.ПолучитьТелоКакСтроку();
КонецЕсли;

Внешние источники данных и файловый обмен

Внешние источники данных подключают таблицы SQL Server, PostgreSQL, Oracle или другой базы 1С напрямую на уровне СУБД. В конфигураторе создаётся объект «Внешний источник данных» со строкой подключения ODBC, и таблицы становятся доступны в запросах почти как обычные объекты конфигурации. Способ быстрый для чтения, но опасен для записи: прямая запись в таблицы другой базы 1С в обход платформы нарушает целостность данных, потому что не выполняются обработчики, контроль итогов и служебная логика.

Файловый обмен — самый простой и безопасный вариант для разовых переносов. Во второй базе данные выгружаются в XML (универсальный формат обмена данными или произвольная структура через ЗаписьXML), файл передаётся в первую базу и загружается. Для типовых конфигураций существуют готовые правила обмена через «Конвертацию данных», что избавляет от написания кода выгрузки с нуля.

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

После настройки обмена проверьте три вещи: факт установления соединения, корректность полученных данных и отсутствие «хвостов» во второй базе. Для COM-соединения минимальный тест — выполнить простой запрос и убедиться, что возвращается ожидаемое количество записей. Для HTTP — проверить код состояния ответа и структуру тела.

Во второй базе откройте консоль кластера или журнал регистрации и убедитесь, что сеанс обмена завершается после окончания операции. Висящие сеансы от служебного пользователя обмена — признак незакрытых соединений. Также сверьте контрольные суммы: количество перенесённых документов, итоговые суммы по ключевым регистрам до и после обмена.

Контрольные точки

Как проверить результат

Выполнение тестового запроса
Норма

Запрос возвращает ожидаемое число записей без исключений

Тревожный признак

Ошибка создания COMОбъекта, отказ в доступе или пустой результат при наличии данных

Сеансы во второй базе
Норма

Служебный сеанс появляется на время обмена и завершается

Тревожный признак

Сеансы накапливаются и не закрываются

Данные после переноса
Норма

Количество и суммы документов совпадают с источником

Тревожный признак

Расхождения в количестве, дубли документов, битые ссылки

FAQ

Можно ли подключиться к другой базе 1С из веб-клиента?

Напрямую через COM — нет, COM-объекты недоступны в браузере. Код подключения нужно выполнять на сервере 1С в серверном вызове, либо использовать обмен через веб-сервисы и HTTP, которые работают из любого клиента.

Что делать, если появляется ошибка «Класс не зарегистрирован»?

Установите платформу 1С той же версии на компьютер, где исполняется код, или зарегистрируйте компоненту вручную командой regsvr32 с указанием пути к comcntr.dll из каталога bin нужной версии платформы.

Занимает ли COM-подключение лицензию второй базы?

Да, COM-соединение создаёт полноценный сеанс и расходует клиентскую лицензию. Поэтому соединения нужно закрывать сразу после использования и не открывать их в цикле без необходимости.

Как подключиться к базе, размещённой в облаке?

COM в этом случае обычно недоступен. Используйте HTTP-сервисы или веб-сервисы, опубликованные в облачной базе, либо штатные механизмы синхронизации данных, если конфигурации их поддерживают.

Можно ли подключиться к базе 1С 7.7 из 1С 8?

Да, но через другой COM-класс — V77.Application или через OLE. Учтите, что платформа 7.7 32-разрядная, поэтому код подключения должен выполняться в 32-разрядном процессе.

Безопасно ли хранить пароль от второй базы в коде?

Нет. Пароль в открытом виде в модуле доступен всем, кто может читать конфигурацию. Храните параметры подключения в защищённых настройках, константах с ограниченным доступом или запрашивайте у пользователя при каждом сеансе обмена.

Итог

Что важно запомнить

Для локальных баз используйте COM-соединение через V83.COMConnector и обязательно закрывайте сеансы, для удалённых и облачных — веб-сервисы и HTTP, для разовых переносов — файловый обмен. Запись в чужую базу выполняйте только после резервного копирования, а результат проверяйте по сеансам и контрольным итогам.