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

Разработка и Конфигурация · 10 мин

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

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

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

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

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

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

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

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

COM-соединение (V83.COMConnector)

Быстро и просто, но только в одной сети и на одной версии платформы. Требует установленного клиента 1С на машине, откуда идёт подключение.

HTTP-сервисы / HTTPСоединение

Работает через интернет и между разными версиями платформы. Нужно публиковать базу на веб-сервере и писать сервис на стороне целевой базы.

Веб-сервисы (SOAP, WS-ссылки)

Подходит для интеграции по стандартам, требует публикации через веб-сервер. Громоздче HTTP, но строго типизирован.

Планы обмена / EnterpriseData

Для регулярного регламентного обмена документами и справочниками. Настройка сложнее, зато надёжно и с контролем очередей.

Прямой доступ к СУБД

Только чтение и только в крайнем случае: обход логики 1С легко приводит к некорректным данным.

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

Подключение через COM (V83.COMConnector)

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

bsl
Функция ПодключитьсяКБазе()

    СтрокаПодключения = "Srvr=""srv1c"";Ref=""TradeBase"";Usr=""Обмен"";Pwd=""Пароль"";";

    Попытка
        Коннектор = Новый COMОбъект("V83.COMConnector");
        Соединение = Коннектор.Connect(СтрокаПодключения);
    Исключение
        ВызватьИсключение "Не удалось подключиться: " + ОписаниеОшибки();
    КонецПопытки;

    Возврат Соединение;

КонецФункции

Для файловой базы строка подключения выглядит иначе: File="C:\Bases\Trade";Usr="Обмен";Pwd="Пароль";. После получения объекта соединения можно выполнять запросы в контексте удалённой базы, например: Запрос = Соединение.NewObject("Запрос"); — и далее обычный текст запроса, который выполнится уже на стороне второй базы.

Учтите ограничения: через COM нельзя передавать объекты типа «ХранилищеЗначения» и некоторые другие типы напрямую — их нужно сериализовать (например, через ЗначениеВСтрокуВнутр). Кроме того, COM-соединение потребляет лицензию на целевой базе, как обычный сеанс пользователя.

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

HTTP-сервис — самый гибкий способ, когда базы находятся в разных сетях или на разных версиях платформы. На стороне целевой базы создаётся HTTP-сервис с шаблоном URL и методом, база публикуется на веб-сервере (IIS или Apache), а вызывающая база обращается к ней через объект HTTPСоединение.

Последовательность настройки: создайте в конфигураторе целевой базы объект «HTTP-сервис», опишите шаблон URL (например, /getdata) и метод GET или POST, в модуле метода напишите код, который формирует ответ (обычно JSON). Затем опубликуйте базу через диалог «Публикация на веб-сервере», отметив публикацию HTTP-сервисов.

bsl
Соединение = Новый HTTPСоединение("server.example.ru", 443, "Обмен", "Пароль", , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/base/hs/exchange/getdata?date=20260101");
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
    Данные = Ответ.ПолучитьТелоКакСтроку();
Иначе
    ВызватьИсключение "Ошибка HTTP: " + Ответ.КодСостояния;
КонецЕсли;

Данные удобно передавать в формате JSON: на стороне сервера используйте ЗаписьJSON, на стороне клиента — ПрочитатьJSON. Это снимает проблему несовместимости типов, которая характерна для COM. Обязательно проверяйте код состояния ответа: 200 — успех, 401 — ошибка аутентификации, 404 — сервис не опубликован или неверный шаблон URL.

Веб-сервисы (SOAP) и WS-ссылки

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

Вызывающая база подключается через WS-ссылку: укажите URL WSDL-описания (например, http://server/base/ws/Exchange.1cws?wsdl), и платформа автоматически сгенерирует прокси-объект с типизированными методами. Это удобно строгой типизацией — ошибки в параметрах выявляются ещё на этапе вызова.

Недостатки: SOAP тяжелее HTTP/JSON по объёму трафика и сложнее в отладке, а публикация требует корректной настройки веб-сервера и файла default.vrd. Если жёстких требований к SOAP нет, предпочтительнее HTTP-сервисы.

Регулярный обмен через планы обмена и EnterpriseData

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

Для обмена между типовыми конфигурациями (например, «Управление торговлей» и «Бухгалтерия предприятия») используйте готовую синхронизацию через формат EnterpriseData: она настраивается через раздел «Синхронизация данных» без программирования. Для нестандартных конфигураций план обмена и правила конвертации придётся разрабатывать самостоятельно, обычно с помощью «Конвертации данных 3.0».

Проверка подключения и типичные ошибки

После настройки подключения проверьте его минимальным запросом: получите из удалённой базы одну константу или один элемент справочника. Если данные вернулись — соединение работает; дальше отлаживайте уже бизнес-логику обмена.

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

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

Объект соединения создан
Норма

COMОбъект или HTTPСоединение создано без исключения, тестовый запрос возвращает данные

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

Ошибка при создании COMОбъекта или код ответа отличен от 200

Аутентификация
Норма

Пользователь обмена входит в целевую базу через тонкий клиент с теми же учётными данными

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

Ошибка 401 или «Неверное имя пользователя или пароль»

Права на данные
Норма

Запрос возвращает ожидаемые записи

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

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

Типичные ошибки
01
Указание имени сервера без порта или с опечаткой в имени базы — соединение «не находит» базу, хотя она доступна. Проверяйте строку подключения входом через обычный клиент.
02
Забытая публикация HTTP-сервисов в диалоге публикации на веб-сервере — сервис отвечает ошибкой 404, хотя в конфигураторе он есть.
03
Использование учётной записи с полными правами для обмена — риск случайного повреждения данных. Создавайте отдельного пользователя с минимально необходимыми правами.
04
Передача больших объёмов за один вызов COM или HTTP — таймауты и падение сеанса. Разбивайте выгрузку на порции.
05
Отсутствие обработки исключений и логирования — при сбое невозможно понять, на каком этапе оборвался обмен.
Для COM-подключения заведите отдельную функцию получения соединения с кэшированием объекта в параметрах сеанса или переменной модуля: каждое новое Connect создаёт отдельный сеанс и расходует лицензию, а при массовом обмене это быстро упирается в лимит.
ПЗ
Практическое замечание

Частые вопросы

Можно ли подключиться к базе 1С 8.2 из базы 8.3 через COM?

Нет, COM-соединение требует совпадения версии платформы: объект V82.COMConnector подключается только к базам на платформе 8.2, V83.COMConnector — к 8.3. Для связи разных версий используйте HTTP-сервисы или обмен через файлы.

Расходует ли COM-подключение лицензию 1С?

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

Как передать файл или табличный документ через COM?

Напрямую такие объекты через COM не передаются. Сохраните данные во временный файл или сериализуйте через ЗначениеВСтрокуВнутр, передайте строку или путь к файлу, а на принимающей стороне восстановите объект обратно.

Что делать, если целевая база недоступна круглосуточно?

Используйте план обмена с транспортом через каталог, FTP или электронную почту: сообщения накапливаются и доставляются, когда база станет доступна. Прямые подключения (COM, HTTP) в такой схеме не подходят.

Безопасно ли читать данные напрямую из таблиц SQL?

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

Итог

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

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