Автоматизация · 11 мин
COM-коннектор в 1С: что это и как его использовать
Что такое COM-коннектор в 1С: принцип работы, подключение через V83.COMConnector, типичные ошибки, ограничения и альтернативы для интеграции баз.
COM-коннектор в 1С — это внешняя COM-компонента, которая позволяет одной программе подключаться к информационной базе 1С извне и выполнять в ней операции: читать и записывать данные, вызывать функции общих модулей, создавать документы. Технически это объект V83.COMConnector (для платформы 8.3), который регистрируется в операционной системе Windows как обычный COM-объект и доступен любому приложению, умеющему работать с COM-технологией.
Чаще всего COM-коннектор используют для обмена данными между двумя базами 1С — например, между «Управлением торговлей» и «Бухгалтерией», когда типовые планы обмена по какой-то причине не подходят. Вторая частая задача — обращение к базе 1С из внешних скриптов, написанных на VBScript, PowerShell, C# или даже из Excel через VBA.
Важно понимать ограничение: COM — технология Windows, поэтому коннектор работает только в Windows-окружении. Веб-клиент, тонкий клиент под Linux и мобильная платформа его не поддерживают. Кроме того, соединение через COM создаёт полноценный сеанс с базой и расходует клиентскую лицензию, что нужно учитывать при проектировании интеграции.
Как устроен COM-коннектор и что он умеет
Компонента поставляется вместе с платформой 1С и находится в каталоге bin установленной версии — файл comcntr.dll. После регистрации в системе любое приложение может создать объект-коннектор, открыть через него соединение с базой и получить доступ к объектной модели 1С почти так же, как это делает код внутри самой конфигурации.
Через установленное соединение доступны справочники, документы, регистры, запросы, перечисления и экспортируемые процедуры общих модулей. Например, внешний скрипт может найти контрагента по ИНН, создать реализацию товаров или выполнить запрос по остаткам склада и вернуть результат наружу.
При этом есть существенное ограничение: через COM-соединение нельзя работать с интерактивными объектами — формами, диалогами, предупреждениями. Любая попытка вызвать Предупреждение() или открыть форму на стороне соединения приведёт к ошибке. Весь код должен быть «тихим» — только данные и логика.
Когда COM-коннектор оправдан, а когда лучше выбрать другой способ
COM-соединение оправдано в сценариях, где обе базы находятся в одной локальной сети, обмен идёт по расписанию или по кнопке, а объекты нужно переносить с сохранением ссылок и сложной логики. Классический пример — ночная выгрузка документов из торговой базы в бухгалтерскую с поиском и обновлением существующих объектов.
Если же интеграция должна работать через интернет, с веб-приложением, мобильным клиентом или системой на другой платформе, COM не подходит технологически. В таких случаях правильнее публиковать HTTP-сервисы или использовать OData-интерфейс, который платформа умеет предоставлять из коробки.
Сравнение вариантов интеграции
Подходит для обмена между базами 1С в одной сети и Windows-скриптов. Требует регистрации компоненты и совпадения версий платформы, расходует лицензию.
Универсальный вариант для интеграции с любыми системами, работает через интернет. Требует публикации на веб-сервере и написания кода сервиса.
Готовый REST-интерфейс к данным без программирования. Удобен для чтения и простой записи, но не даёт вызывать произвольную бизнес-логику.
Типовой механизм для регулярной синхронизации между конфигурациями. Требует настройки правил, зато надёжен и журналирует изменения.
Регистрация компоненты и подготовка к подключению
Перед первым использованием компоненту нужно зарегистрировать в операционной системе. Это делает команда regsvr32, запущенная от имени администратора. Если планируется подключение к 64-разрядному серверу 1С, регистрировать нужно 64-разрядную версию comcntr.dll из соответствующего каталога платформы.
regsvr32 "C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll"Версия зарегистрированной компоненты должна совпадать с версией платформы, под которой работает целевая база. Если на компьютере установлено несколько релизов платформы, регистрация второй версии перезапишет первую — это частая причина внезапно переставших работать обменов после обновления платформы.
Как подключиться к базе через COM: пошагово
Подключение выполняется в два этапа: сначала создаётся объект коннектора, затем вызывается его метод Connect со строкой соединения. Строка подключения совпадает по формату с обычной строкой запуска 1С: указывается тип базы (файловая или серверная), путь или имя сервера и базы, пользователь и пароль.
- 1Зарегистрируйте comcntr.dll нужной версии платформы через regsvr32 от имени администратора
- 2Создайте объект коннектора: в 1С это Новый COMОбъект("V83.COMConnector")
- 3Сформируйте строку соединения, например: Srvr="Server1";Ref="TradeBase";Usr="Обмен";Pwd="пароль";
- 4Вызовите метод Connect и сохраните результат в переменную — это объект соединения с базой
- 5Выполните нужные операции через объект соединения и завершите работу, обнулив переменные
Пример кода на встроенном языке 1С для подключения к серверной базе:
Коннектор = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "Srvr=""Server1"";Ref=""TradeBase"";Usr=""Обмен"";Pwd=""secret"";";
Соединение = Коннектор.Connect(СтрокаПодключения);
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10 Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить().Выгрузить();
Для файловой базы строка выглядит иначе: File="C:\Bases\Trade";Usr="Обмен";Pwd="secret";. Учётной записи, под которой идёт подключение, нужно выдать в целевой базе минимально необходимые права — не административные. Также в свойствах пользователя должны быть разрешены внешние соединения.
Типичные сценарии использования
Обмен документами между двумя базами 1С
Самый распространённый сценарий — перенос документов из одной конфигурации в другую с поиском по GUID или по ключевым реквизитам. Через соединение источник читает данные, а приёмник создаёт или обновляет объекты. Ссылки между базами сопоставляют через метод XMLСтрока() для получения GUID ссылки и ПолучитьСсылку() на приёмной стороне.
Вызов из внешних скриптов
Из PowerShell или VBScript коннектор создаётся функцией создания COM-объекта, дальше логика аналогична. Такой приём используют для регламентных задач: проверки доступности базы, запуска обработок, выгрузки справочных данных в файлы для сторонних систем.
Доступ из Excel и других приложений
Через VBA в Excel можно подтянуть в таблицу актуальные остатки или цены прямо из базы 1С. Это удобно для разовых аналитических задач, но для регулярной отчётности лучше настроить типовые отчёты или OData — VBA-скрипты сложно поддерживать и контролировать.
Типичные ошибки и способы их диагностики
Ошибка «Невозможно создать объект» при создании коннектора почти всегда означает, что компонента не зарегистрирована или зарегистрирована другой разрядности. Ошибка на этапе Connect с сообщением об отказе в доступе указывает на неверный логин, пароль или запрет внешних соединений для пользователя.
Ещё одна группа проблем — производительность. Каждый вызов метода через COM — это межпроцессное взаимодействие, которое заметно медленнее обычного кода. Цикл, перебирающий тысячи объектов по одному через соединение, будет работать очень долго. Правильный приём — выгружать данные пакетами через запросы и передавать их в виде таблиц значений или сериализованных структур.
Как проверить результат
Объект создан без исключений
Ошибка «Невозможно создать объект» — проверьте регистрацию comcntr.dll
Возвращён объект соединения, доступны метаданные базы
Ошибка аутентификации или таймаут — проверьте строку подключения и права пользователя
После завершения скрипта сеанс закрывается
Сеансы накапливаются — соединение не освобождается в коде
Ограничения и безопасность
COM-коннектор не шифрует трафик и не имеет встроенных механизмов аудита — вся защита сводится к правам пользователя 1С и сетевой изоляции. Поэтому его нельзя использовать для подключений через интернет или недоверенные сети, только внутри защищённого контура.
При работе с серверной базой коннектор подключается через агент кластера, и разрядность компоненты должна соответствовать разрядности рабочих процессов сервера. Для 64-разрядного сервера 1С нужна 64-разрядная comcntr.dll, иначе соединение не установится.
Как выбрать действие
Часто задаваемые вопросы
Расходует ли COM-соединение лицензию 1С?
Да. Каждое активное COM-соединение создаёт полноценный сеанс и занимает одну клиентскую лицензию так же, как запущенный толстый клиент. При массовых обменах это нужно закладывать в расчёт лицензий и всегда освобождать соединение после завершения работы.
Почему после обновления платформы перестал работать обмен через COM?
Почти наверняка в системе осталась зарегистрирована comcntr.dll старой версии, а база уже работает на новой. Решение — заново выполнить regsvr32 для компоненты из каталога актуальной версии платформы от имени администратора.
Можно ли использовать COM-коннектор с базой на Linux-сервере?
Сам сервер 1С может работать на Linux, но коннектор — Windows-компонента, поэтому приложение, которое инициирует подключение, должно работать на Windows-машине. Сама целевая база при этом может находиться где угодно.
Чем COM-коннектор отличается от внешнего соединения в толстом клиенте?
Это один и тот же механизм: когда толстый клиент создаёт COMОбъект("V83.COMConnector"), он использует ту же компоненту. Разница только в том, откуда инициируется подключение — из другой базы 1С или из стороннего приложения.
Как передать между базами большой объём данных через COM?
Не перебирайте объекты по одному — это крайне медленно из-за межпроцессных вызовов. Выполняйте на стороне соединения запрос, выгружайте результат в таблицу значений и передавайте её целиком, либо сериализуйте данные через ЗначениеВСтрокуВнутр и передавайте строкой.
Безопасно ли хранить пароль в строке подключения?
Нет, открытый пароль в скрипте — серьёзный риск. Минимизируйте права пользователя для обмена, ограничьте доступ к файлу скрипта, а по возможности храните пароль в защищённом хранилище и подставляйте в строку подключения во время выполнения.
Что важно запомнить
COM-коннектор — это зарегистрированная в Windows компонента V83.COMConnector для подключения к базе 1С извне. Он эффективен для обмена между базами в одной сети, но требует совпадения версий платформы, расходует лицензию, работает только под Windows и уступает HTTP-сервисам в сценариях интеграции через интернет.