Разработка и Конфигурация · 10 мин
Как из 1С подключиться к другой базе 1С 8
Разбираем, как подключиться из 1С к другой базе 1С 8: COM-соединение, веб-сервисы, HTTP, обмен через EnterpriseData. Код, ошибки, проверка результата.
Задача подключиться из одной базы 1С к другой возникает при обмене данными между конфигурациями: например, бухгалтерии нужны документы из торговли, а отчёту — остатки из склада. В 1С 8.3 есть несколько рабочих способов: COM-соединение, веб-сервисы, HTTP-сервисы, обмен через планы обмена и прямой доступ к данным СУБД. Выбор зависит от того, стоят ли базы на одном сервере, круглосуточно ли работает целевая база и какой объём данных нужно передавать.
Самый распространённый вариант для баз в одной локальной сети — COM-соединение через объект V83.COMConnector. Он прост в реализации, но требует, чтобы обе базы работали на одной платформе и на одном сервере или в одной сети с доступом по COM. Для обмена между удалёнными площадками и разными версиями платформы надёжнее веб-сервисы и HTTP-интерфейсы.
Ниже разобраны основные способы подключения с готовым кодом, условиями применимости, типичными ошибками и способами проверки результата.
Какой способ подключения выбрать
Прежде чем писать код, определите условия: где физически находится вторая база, одинаковые ли версии платформы, как часто нужен обмен и какой объём данных передаётся. От этого зависит устойчивость решения и трудозатраты на поддержку.
Сравнение способов подключения
Быстро и просто, но только в одной сети и на одной версии платформы. Требует установленного клиента 1С на машине, откуда идёт подключение.
Работает через интернет и между разными версиями платформы. Нужно публиковать базу на веб-сервере и писать сервис на стороне целевой базы.
Подходит для интеграции по стандартам, требует публикации через веб-сервер. Громоздче HTTP, но строго типизирован.
Для регулярного регламентного обмена документами и справочниками. Настройка сложнее, зато надёжно и с контролем очередей.
Только чтение и только в крайнем случае: обход логики 1С легко приводит к некорректным данным.
Правило простое: разовая выгрузка внутри одной сети — COM; регулярный обмен — планы обмена; интеграция через интернет или между разными версиями — HTTP/веб-сервисы. Прямой доступ к таблицам SQL при работающей логике 1С использовать не следует: запись в обход платформы нарушает целостность данных.
Подключение через COM (V83.COMConnector)
COM-соединение создаёт полноценный сеанс с другой базой: вы получаете объект COMОбъект, через который доступны справочники, документы, запросы и даже вызов общих модулей удалённой базы. Подключение возможно к файловой базе по пути к каталогу или к серверной — по имени сервера и имени базы.
Функция ПодключитьсяКБазе()
СтрокаПодключения = "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-сервисов.
Соединение = Новый 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 или «Неверное имя пользователя или пароль»
Запрос возвращает ожидаемые записи
Пустой результат при наличии данных — у пользователя обмена нет прав на объекты
Для 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; для постоянной синхронизации настраивайте планы обмена. Всегда создавайте отдельного пользователя с минимальными правами, обрабатывайте исключения и проверяйте подключение тестовым запросом до запуска основного обмена.