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

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

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

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

Задача подключения к другой базе возникает в 1С постоянно: нужно перенести остатки из старой учётной системы, синхронизировать справочники между «Управлением торговлей» и «Бухгалтерией», забрать данные из SQL-базы сайта или из стороннего сервиса. У платформы 1С:Предприятие для этого есть несколько штатных механизмов, и выбор зависит от того, что представляет собой «другая база» — тоже 1С, СУБД вроде MS SQL или PostgreSQL, либо внешнее приложение с API.

Основных путей четыре: COM-соединение (V83.COMConnector) для связи «1С — 1С», внешние источники данных для прямого чтения таблиц SQL, веб-сервисы и HTTP-запросы для обмена через сеть, а также планы обмена для регулярной синхронизации. Каждый способ имеет свои требования к версии платформы, правам и сетевой инфраструктуре.

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

Как определить, какой способ подключения подходит

Первый шаг — понять, что находится «на той стороне». Если это информационная база 1С на той же платформе, оптимален COM-коннектор: он даёт доступ к объектной модели — документам, справочникам, запросам — так, будто вы работаете внутри той базы. Если это SQL-база стороннего приложения, объектной модели там нет, и читать придётся таблицы напрямую через внешние источники данных или ADO.

Если базы находятся в разных сетях или у разных организаций, прямое подключение обычно невозможно или небезопасно. В этом случае правильный путь — опубликовать на стороне источника веб-сервис (SOAP) или HTTP-сервис (REST) и обращаться к нему из своей базы. Для регулярного обмена между типовыми конфигурациями часто проще настроить стандартную синхронизацию через планы обмена, чем писать собственный механизм.

Маршрут решения

Как выбрать способ

Вторая база — тоже 1С в той же сетиИспользуйте COM-соединение V83.COMConnector
Вторая база — SQL-база сторонней программыНастройте внешний источник данных или подключение через ADO
Базы в разных сетях или у разных компанийПубликуйте веб-сервис или HTTP-сервис и обменивайтесь через него
Нужен регулярный обмен между типовыми конфигурациямиНастройте синхронизацию данных через план обмена

Подключение к другой базе 1С через COM-соединение

COM-соединение — классический способ связать две базы 1С. Принцип: ваша база создаёт COM-объект V83.COMConnector, через него открывает сеанс с целевой базой и получает доступ к её данным. Цифра в имени объекта зависит от версии платформы: для 8.3 это V83, для 8.2 — V82.

Типовой код подключения к файловой базе выглядит так:

Коннектор = Новый COMОбъект("V83.COMConnector");

СтрокаПодключения = "File=""D:\Bases\Trade""; Usr=""Обмен""; Pwd=""Пароль"";";

Соединение = Коннектор.Connect(СтрокаПодключения);

Контрагенты = Соединение.Справочники.Контрагенты.Выбрать();

Пока Контрагенты.Следующий() Цикл

Сообщить(Контрагенты.Наименование);

КонецЦикла;

Для серверной базы строка подключения другая: Srvr="ИмяСервера"; Ref="ИмяБазы"; Usr="..."; Pwd="...";. Пользователь, указанный в строке, должен существовать в целевой базе и иметь права на читаемые объекты. Заведите для обмена отдельную учётную запись с ограниченными правами — не используйте администратора.

Типичные проблемы с COM

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

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

Чтение SQL-баз через внешние источники данных

Если «другая база» — это MS SQL, PostgreSQL, Oracle, MySQL или любой источник с ODBC-драйвером, используйте механизм внешних источников данных. Он встраивается в конфигурацию: вы описываете таблицы внешней базы как объекты метаданных, и дальше работаете с ними почти как с обычными таблицами 1С, включая запросы.

Настройка выполняется в конфигураторе: добавьте объект «Внешние источники данных», создайте таблицу, укажите строку подключения (DSN или явную строку ODBC) и сопоставьте поля. Для работы без изменения конфигурации можно использовать временные таблицы внешних источников программно через объект ВнешниеИсточникиДанных.

Подключение внешнего источника данных
  1. 1
    Установите ODBC-драйвер нужной СУБД на сервер 1С (или на клиент для файлового режима)
  2. 2
    Создайте DSN или подготовьте строку подключения с логином и паролем
  3. 3
    В конфигураторе добавьте внешний источник данных и таблицу с сопоставлением полей
  4. 4
    Проверьте чтение: выполните запрос к внешней таблице в консоли запросов
  5. 5
    Ограничьте права учётной записи SQL только чтением нужных таблиц

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

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

Когда базы разделены сетью, доменами или принадлежат разным организациям, прямое подключение заменяют сервисным взаимодействием. На стороне базы-источника публикуют веб-сервис (SOAP) или HTTP-сервис, а база-потребитель обращается к нему программно.

Для HTTP-обмена в 1С есть объект HTTPСоединение:

Соединение = Новый HTTPСоединение("api.example.ru", 443,,,,, 

Новый ЗащищенноеСоединениеOpenSSL);

Запрос = Новый HTTPЗапрос("/hs/exchange/balances");

Запрос.УстановитьТелоИзСтроки(ТекстJSON);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния = 200 Тогда

Данные = Ответ.ПолучитьТелоКакСтроку();

КонецЕсли;

Для вызова SOAP-сервиса используют WS-ссылки или объект WSПрокси с описанием WSDL. Формат данных для HTTP-обмена чаще всего JSON — платформа умеет сериализовать его штатными средствами через ЗаписьJSON и ЧтениеJSON.

Синхронизация через планы обмена

Если задача — не разовый запрос, а регулярный обмен между двумя базами 1С (например, «Управление торговлей» и «Бухгалтерия предприятия»), собственный код подключения часто не нужен вовсе. Типовые конфигурации содержат готовые планы обмена и механизм синхронизации данных: вы настраиваете узлы, правила и расписание, а платформа сама передаёт изменённые объекты.

Настройка выполняется в разделе «Синхронизация данных» (в типовых конфигурациях — «Администрирование» → «Синхронизация данных»). Обмен может идти через файловый каталог, FTP, веб-сервис или прямое подключение к базе-корреспонденту. Для нестандартных конфигураций правила конвертации создают в «Конвертации данных».

Сравнение способов подключения

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

Полный доступ к объектам другой базы 1С. Только Windows, требует совпадения версий, медленный на больших объёмах

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

Прямое чтение SQL-таблиц, работают запросы 1С. Нужен ODBC-драйвер, нет объектной логики, только таблицы

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

Работают через сеть и между организациями, безопасны при правильной настройке. Требуют разработки сервиса на стороне источника

Планы обмена

Штатная регулярная синхронизация без кода. Подходят только для обмена между базами 1С, требуют настройки правил

Проверка результата и типичные ошибки

После настройки подключения обязательно выполните контрольное чтение: выберите небольшой набор данных (например, десять элементов справочника) и сверьте с исходной базой вручную. Для обмена документами проверьте корректность переноса дат, валют и ссылок — самая частая проблема при обмене между разными конфигурациями это «битые ссылки», когда объект перенесён раньше связанных с ним справочников.

Типичные ошибки
01
Использование учётной записи администратора для обмена — риск порчи данных и утечки пароля
02
Создание нового COM-соединения в цикле — катастрофическое падение скорости обмена
03
Отсутствие обработки ошибок: при обрыве связи обмен падает без диагностики — оборачивайте подключение в Попытка/Исключение
04
Чтение больших таблиц целиком вместо порционной выборки — нехватка памяти и блокировки
05
Игнорирование разрядности: 32-битный коннектор не работает с 64-битным сервером 1С
Контрольные точки

Как проверить, что подключение работает

Тестовое чтение данных
Норма

Данные возвращаются и совпадают с исходной базой

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

Пустой результат, ошибка аутентификации или таймаут

Скорость обмена
Норма

Пакет из нескольких тысяч объектов обрабатывается за приемлемое время одним соединением

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

Соединение пересоздаётся на каждый объект, обмен идёт часами

Ссылки на связанные объекты
Норма

Все ссылки разрешаются, отчёты по перенесённым данным сходятся

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

Объект не найден, пустые реквизиты ссылочного типа

Часто задаваемые вопросы

Можно ли подключиться к базе 1С, не зная её конфигурации?

Через COM-соединение технически да — вы можете читать метаданные и любые объекты, к которым есть права. Но для осмысленного обмена структуру конфигурации знать необходимо: имена справочников, документов и реквизитов в коде указываются явно. Получить список объектов можно программно через коллекцию метаданных соединения.

Работает ли COM-подключение между разными версиями платформы?

Коннектор должен соответствовать версии платформы целевой базы: для базы на 8.3 используется V83.COMConnector. Ваша база при этом может работать на другой минорной версии 8.3 — главное, чтобы зарегистрированный коннектор мог открыть целевую базу. Связка 8.2 → 8.3 требует коннектора версии 8.3.

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

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

Можно ли через COM изменять данные в другой базе?

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

Что делать, если обмен периодически падает с ошибкой соединения?

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

Итог

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

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