Разработка и Конфигурация · 10 мин
Как подключить внешнюю компоненту в 1С
Разбираем, как подключить внешнюю компоненту в 1С: регистрация DLL, методы ПодключитьВнешнююКомпоненту, работа с Native API и типичные ошибки подключения.
Внешняя компонента в 1С — это динамическая библиотека (DLL в Windows, SO в Linux), которая расширяет возможности платформы: работу со сканерами штрих-кодов, кассовой техникой, весами, криптографией или специализированными протоколами обмена. Подключить её можно двумя путями: через механизм внешних компонентов платформы (метод ПодключитьВнешнююКомпоненту) или как COM-объект, если библиотека зарегистрирована в системе.
Выбор способа зависит от формата компоненты. Современные компоненты чаще всего поставляются по технологии Native API и упакованы в ZIP-архив с манифестом — их подключают из макета конфигурации. Старые компоненты в виде COM-объектов требуют регистрации в реестре Windows и подключаются через COMСоединение или создание COM-объекта. Ниже разобраны оба сценария с проверкой результата и разбором типичных сбоев.
Перед началом работы убедитесь, что у вас есть сам файл компоненты из доверенного источника, права на запись в каталог установки (или права администратора для регистрации COM) и доступ к конфигуратору, если компонента будет встраиваться в макет. Работу лучше проверять сначала на тестовой базе.
Определяем тип компоненты и требования
Первый шаг — понять, что именно у вас в руках. Компонента Native API обычно поставляется в виде ZIP-архива, внутри которого лежат файлы DLL для разных платформ (Windows x86, x64, иногда Linux) и файл манифеста manifest.xml. COM-компонента — это одиночная DLL или OCX-файл без манифеста, которую регистрируют в системе.
Критичный параметр — разрядность. 32-битная компонента не загрузится в 64-битном клиенте 1С и наоборот. Если используется тонкий или толстый клиент x86-64, нужна 64-битная версия библиотеки. Проверить разрядность клиента можно в окне «О программе» или через системную информацию.
Также заранее уточните, где компонента будет использоваться: на клиенте или на сервере. Для серверного вызова библиотека должна быть доступна на сервере 1С:Предприятия, а для кластера под Linux — собрана именно под Linux. Это частая причина ситуации «на клиенте работает, на сервере нет».
Подключение компоненты Native API из макета
Штатный и рекомендуемый способ для управляемых конфигураций — поместить ZIP-архив компоненты в макет типа «Двоичные данные» и подключать его программно. Так компонента хранится внутри информационной базы, обновляется вместе с конфигурацией и не требует ручной установки на каждое рабочее место.
Порядок действий: в конфигураторе создайте общий макет, загрузите в него ZIP-архив компоненты, затем в коде вызовите подключение и создание объекта. В типовых конфигурациях на БСП для этого есть общий модуль работы с внешними компонентами, но базовый синтаксис платформы выглядит так:
Если Не ПодключитьВнешнююКомпоненту("ОбщийМакет.СканерШтрихкода", "Scanner", ТипВнешнейКомпоненты.Native) Тогда
ВызватьИсключение "Не удалось подключить компоненту сканера";
КонецЕсли;
Сканер = Новый("AddIn.Scanner.Driver");
Обратите внимание на второй параметр — это символьное имя компоненты, а при создании объекта используется связка «AddIn.ИмяКомпоненты.ProgID». Имя и ProgID должны точно совпадать с тем, что указано в манифесте компоненты, иначе объект не создастся, хотя подключение может пройти успешно.
- 1Создайте общий макет типа «Двоичные данные» и загрузите ZIP компоненты
- 2Обновите конфигурацию базы данных
- 3Вызовите ПодключитьВнешнююКомпоненту с указанием макета и типа Native
- 4Создайте объект через Новый("AddIn.Имя.ProgID")
- 5Вызовите тестовый метод компоненты и проверьте результат
Подключение компоненты из файла на диске
Если компонента не встроена в конфигурацию, её можно подключить напрямую из файла. Для Native API указывается путь к ZIP-архиву, для отдельных DLL — путь к файлу библиотеки. Способ удобен на этапе разработки и отладки, когда архив часто пересобирается.
Учтите ограничение: путь должен быть доступен тому процессу, который выполняет код. Если код выполняется на сервере, путь интерпретируется относительно сервера, а не клиентского компьютера. Поэтому для клиент-серверного режима файловый способ подходит только при гарантированном наличии файла на сервере.
В файловой базе на локальном компьютере достаточно указать путь вида «C:\Components\MyComponent.zip». Проверьте, что у пользователя, под которым работает 1С, есть права на чтение этого каталога, а антивирус не блокирует загрузку библиотеки.
Подключение COM-компоненты через регистрацию в системе
Старые компоненты и библиотеки сторонних поставщиков часто реализованы как COM-объекты. Их подключают в два этапа: регистрация в реестре Windows и создание объекта в коде 1С. Регистрация выполняется один раз на каждом компьютере, где используется компонента.
Для регистрации запустите командную строку от имени администратора и выполните regsvr32 с полным путём к DLL. Для 32-битной библиотеки на 64-битной Windows используйте regsvr32 из каталога SysWOW64, иначе регистрация попадёт не в ту ветку реестра и 1С объект не увидит.
regsvr32 "C:\Components\MyLibrary.dll"После регистрации объект создаётся в коде по его программному идентификатору: Новый COMОбъект("Vendor.Library"). Узнать ProgID можно из документации поставщика или из реестра. Если регистрация прошла успешно, но объект не создаётся — почти всегда проблема в несовпадении разрядности клиента 1С и библиотеки.
Сравнение способов подключения
Рекомендуемый способ: компонента хранится в базе, обновляется с конфигурацией, работает без прав администратора. Ограничение — нужен ZIP с манифестом.
Удобно для разработки и отладки. Ограничение — файл должен быть доступен процессу, который выполняет код, и на каждом рабочем месте.
Единственный вариант для старых библиотек. Требует прав администратора, регистрации на каждом ПК и совпадения разрядности. В веб-клиенте не работает.
Проверка результата и типичные ошибки
Подключение следует считать завершённым только после тестового вызова. Успешный возврат Истина от ПодключитьВнешнююКомпоненту означает лишь загрузку библиотеки — но объект может не создаться из-за неверного ProgID, а метод — вернуть ошибку из-за отсутствия лицензии или оборудования.
Практический минимум проверки: создать объект, вызвать метод получения версии компоненты (он есть почти у всех драйверов) и убедиться, что возвращается осмысленное значение, а не исключение. Только после этого передавайте компоненту в рабочий код.
Как проверить результат
Возвращает Истина без исключений
Ложь или исключение — проверяйте путь, формат архива и разрядность
Объект создан, тип не Неопределено
Ошибка создания — неверный ProgID или незарегистрированный COM
Метод версии/статуса возвращает значение
Исключение при вызове — проблема лицензии, оборудования или зависимостей DLL
Ограничения и безопасность
Внешняя компонента — это исполняемый код, который выполняется с правами процесса 1С. Загружайте библиотеки только от проверенных поставщиков: вредоносная DLL получит доступ к данным базы, файловой системе и сети. Перед внедрением проверьте цифровую подпись файла и источник получения.
Учтите ограничения клиентов: в веб-клиенте COM-объекты не работают, а Native API компоненты требуют специальной сборки под браузер и работают не во всех обозревателях. Для тонкого клиента на Linux нужна Linux-сборка библиотеки. Если компонента критична для бизнес-процесса, продумайте поведение системы при её недоступности — например, ручной ввод штрих-кода вместо сканирования.
Частые вопросы
Чем отличается УстановитьВнешнююКомпоненту от ПодключитьВнешнююКомпоненту?
Установка копирует файлы компоненты в служебный каталог пользователя и выполняется один раз, подключение загружает библиотеку в текущий сеанс. Для большинства Native API компонент платформа сама выполняет необходимые действия при подключении, поэтому отдельный вызов установки обычно не требуется.
Почему компонента работает в файловой базе, но не в клиент-серверной?
В клиент-серверном режиме код с директивой «НаСервере» выполняется на сервере 1С:Предприятия. Библиотека должна быть установлена и доступна именно там, с учётом ОС и разрядности сервера. Проверьте, где именно выполняется ваш код, и разверните компоненту на нужной стороне.
Как узнать ProgID компоненты для создания объекта?
Для Native API ProgID указан в манифесте ZIP-архива и в документации поставщика. Для COM-компоненты — в документации или в реестре Windows после регистрации. Часто ProgID совпадает с именем класса драйвера, например «AddIn.Scanner.Driver».
Можно ли подключить компоненту в веб-клиенте?
COM-объекты в веб-клиенте не работают. Компоненты Native API поддерживаются только при наличии специальной сборки под браузер и не во всех обозревателях. Если веб-доступ критичен, выносите логику работы с оборудованием на сервер или используйте тонкий клиент.
Что делать, если regsvr32 сообщает об успехе, но объект не создаётся?
Чаще всего причина в разрядности: 32-битная библиотека зарегистрирована, а клиент 1С 64-битный, либо регистрация выполнена не тем regsvr32. Проверьте разрядность клиента и библиотеки, при необходимости перерегистрируйте DLL через regsvr32 из каталога SysWOW64.
Как обновить компоненту, подключённую из макета?
Загрузите новую версию ZIP-архива в тот же общий макет и обновите конфигурацию базы данных. При следующем подключении пользователи получат актуальную версию автоматически — ручная переустановка на рабочих местах не нужна.
Что важно запомнить
Сначала определите тип компоненты и разрядность, затем выберите способ: Native API из макета — основной вариант, COM — для старых библиотек с регистрацией через regsvr32. Успешным подключение считается только после создания объекта и тестового вызова метода. Библиотеки берите только из проверенных источников.