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

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

Что такое OLE в 1С 8 и как его использовать

Что такое OLE в 1С 8, чем отличается от COM, как подключиться к базе через V83.COMConnector, примеры кода, типичные ошибки и способы их устранения.

OLE в контексте 1С 8 — это механизм взаимодействия между приложениями Windows, построенный на технологии COM (Component Object Model). Через OLE одна программа может управлять другой: например, внешняя обработка или стороннее приложение подключается к информационной базе 1С, читает справочники, создаёт документы и выполняет запросы так, как если бы это делал пользователь в режиме Предприятия.

Термин OLE исторически старше, чем COM, но в среде разработчиков 1С эти слова используют почти как синонимы. Когда говорят «подключение по OLE», имеют в виду создание COM-объекта V83.Application или V83.COMConnector и работу с базой через его методы. Число 83 в имени объекта соответствует платформе 8.3; для 8.2 использовалось V82.

Технология применяется там, где нужен обмен данными без промежуточных файлов: выгрузка остатков в стороннюю учётную систему, автоматическое создание документов из внешнего скрипта, интеграция 1С с Excel или Word. При этом у OLE-подключения есть серьёзные ограничения — оно работает только под Windows, требует совпадения версий платформы и создаёт нагрузку на сервер. Ниже разберём, как всё устроено и когда OLE оправдан.

Чем OLE отличается от COM и Automation

Строго говоря, OLE (Object Linking and Embedding) — изначальное название технологии Microsoft для внедрения и связывания объектов между приложениями. Позже она развилась в COM — компонентную модель, а программный доступ к объектам приложений получил название OLE Automation. В документации 1С встречаются все три термина, но механизм один: внешний процесс создаёт COM-объект и вызывает его методы.

В практике 1С различают два сценария. Первый — 1С выступает клиентом: из кода на встроенном языке создаётся COMОбъект, например Excel.Application, и 1С управляет внешней программой. Второй — 1С выступает сервером: внешний скрипт (VBScript, PowerShell, другая база 1С) создаёт объект V83.COMConnector и подключается к базе. Оба сценария называют «работой по OLE».

Два объекта подключения: Application и COMConnector

Объект V83.Application поднимает полноценный экземпляр клиентского приложения 1С в фоновом режиме. Он потребляет заметно больше памяти, но даёт доступ ко всему функционалу, включая то, что завязано на клиентский контекст. Использовать его стоит только когда без полного клиента не обойтись.

V83.COMConnector — легковесный коннектор, который соединяется с базой напрямую (файловый вариант) или через сервер 1С (клиент-серверный вариант). Это стандартный выбор для обмена данными: меньше нагрузка, быстрее подключение, не требуется запуск интерфейса.

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

V83.Application

Полный клиент в памяти. Подходит для редких задач, требующих клиентского контекста. Минусы: высокий расход памяти, медленный запуск.

V83.COMConnector

Лёгкое соединение для обмена данными. Стандартный выбор для интеграций и обменов между базами 1С.

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

Современная альтернатива: работает кроссплатформенно, не требует совпадения версий платформы. Требует разработки и публикации сервиса.

Как подключиться к базе 1С через OLE: пошагово

Подключение из кода другой базы 1С выглядит так: сначала создаётся коннектор, затем вызывается метод Connect со строкой соединения. Строка для файловой базы содержит путь к каталогу, для серверной — имя сервера и имя базы. Также указываются пользователь и пароль.

Пример для файловой базы: СтрокаПодключения = "File=""D:\Bases\Trade"";Usr=""Администратор"";Pwd=""123"";". Для серверной базы: "Srvr=""Server1"";Ref=""Trade"";Usr=""Администратор"";Pwd=""123"";". После успешного Connect возвращается объект, через который доступны Справочники, Документы, Запрос и остальной прикладной контекст удалённой базы.

Порядок подключения по OLE
  1. 1
    Убедитесь, что на машине-клиенте установлена платформа 1С той же версии, что и у базы-источника, и зарегистрирована COM-компонента (comcntr.dll).
  2. 2
    Создайте объект: Новый COMОбъект("V83.COMConnector").
  3. 3
    Сформируйте строку соединения с путём к базе, пользователем и паролем.
  4. 4
    Вызовите метод Connect(СтрокаПодключения) и сохраните возвращённый объект в переменную.
  5. 5
    Выполните нужные операции: чтение справочников, создание документов, запрос.
  6. 6
    Завершите работу, обнулив переменные соединения, чтобы освободить сеанс.
bsl
Коннектор = Новый COMОбъект("V83.COMConnector");
Строка = "File=""D:\Bases\Trade"";Usr=""Администратор"";Pwd=""123"";";
База = Коннектор.Connect(Строка);
Товары = База.Справочники.Номенклатура.Выбрать();
Пока Товары.Следующий() Цикл
    Сообщить(Товары.Наименование);
КонецЦикла;

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

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

Важно контролировать завершение работы. Каждое OLE-соединение занимает сеанс на сервере 1С и может удерживать лицензию. Если скрипт завершился аварийно, сеанс может «повиснуть» до тайм-аута. В регламентных обменах полезно логировать факт подключения и отключения, чтобы отслеживать такие случаи.

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

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

Возврат метода Connect
Норма

Возвращён объект базы, обращения к метаданным работают

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

Исключение с текстом ошибки соединения или версии

Доступ к данным
Норма

Запрос или выборка справочника возвращает данные

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

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

Сеансы на сервере
Норма

После завершения скрипта сеанс закрывается

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

Сеанс остаётся активным и удерживает лицензию

Типичные ошибки и ограничения технологии

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

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

Типичные ошибки
01
Хранение пароля в открытом виде в тексте скрипта — риск утечки учётных данных; используйте защищённые хранилища или переменные окружения.
02
Использование V83.Application там, где достаточно COMConnector — лишний расход памяти и лицензий.
03
Отсутствие обработки исключений: при обрыве соединения скрипт падает, а сеанс остаётся висеть на сервере.
04
Попытка соединить базы на разных версиях платформы одним коннектором — гарантированная ошибка подключения.

Когда OLE не подходит: альтернативы

OLE привязан к Windows и к установленной платформе 1С на стороне клиента. Если интегрирующаяся система работает на Linux, в облаке или в другой сети, COM-подключение невозможно или небезопасно. В таких случаях стандартный путь — HTTP-сервисы или веб-сервисы (SOAP), публикуемые на сервере 1С, либо обмен через универсальные форматы вроде EnterpriseData.

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

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

Как выбрать способ интеграции

Обе базы 1С на одной Windows-площадке, версии платформы совпадаютИспользуйте V83.COMConnector — быстро и без доработок конфигурации
Сторонняя система не на Windows или в другой сетиПубликуйте HTTP-сервис или веб-сервис на стороне 1С
Нужен разовый перенос данных без постоянного обменаРассмотрите выгрузку через универсальный обмен XML вместо OLE
Требуется доступ к данным в реальном времени из многих системПроектируйте HTTP-API, OLE не масштабируется для такого сценария

Частые вопросы об OLE в 1С 8

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

Сервер 1С может работать на Linux, но COM-компонента V83.COMConnector существует только под Windows. Поэтому клиентская машина, инициирующая OLE-подключение, должна быть Windows-системой с установленной платформой; сама база при этом может размещаться на сервере под Linux.

Чем заменить OLE при переходе в облако?

В облачных сценариях используют HTTP-сервисы, веб-сервисы SOAP или готовые механизмы обмена через EnterpriseData. Эти способы работают через стандартные порты и не требуют установки платформы на стороне вызывающей системы.

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

Да, соединение через COMConnector создаёт сеанс, который учитывается при подсчёте лицензий так же, как сеанс обычного пользователя. Это нужно учитывать при планировании количества лицензий.

Почему возникает ошибка «Класс не зарегистрирован»?

На машине не установлена или не зарегистрирована COM-компонента платформы нужной версии, либо процесс, который создаёт объект, имеет другую разрядность (32/64 бита). Проверьте установку платформы и при необходимости зарегистрируйте comcntr.dll через regsvr32.

Можно ли через OLE вызывать произвольные процедуры конфигурации?

Напрямую — только то, что доступно через объектную модель: справочники, документы, запросы, общие модули с соответствующими настройками. Для вызова произвольной логики удобнее опубликовать в конфигурации HTTP- или веб-сервис.

Итог

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

OLE в 1С 8 — это COM-подключение к базе через V83.COMConnector (реже V83.Application) для программного обмена данными под Windows. Технология требует совпадения версий платформы, расходует лицензии и сеансы, а для новых интеграций предпочтительнее HTTP- и веб-сервисы.