Разработка и Конфигурация · 9 мин
Addin в 1С: что это и как работать с внешними компонентами
Addin в 1С — внешняя компонента для расширения функций платформы. Разбираем, что это, зачем нужна, как установить, подключить и устранить типичные ошибки.
Addin в контексте 1С — это внешняя компонента (от англ. add-in, «надстройка»), которая расширяет штатные возможности платформы. Сама платформа 1С написана на встроенном языке и не умеет напрямую работать, например, со сканерами штрихкодов, криптографией, специфическими протоколами обмена или отрисовкой QR-кодов. Внешняя компонента закрывает этот пробел: она написана на C++, C# или другом компилируемом языке и подключается к 1С как динамическая библиотека.
Чаще всего с addin пользователь сталкивается не целенаправленно, а по ошибке: программа выводит сообщение «Не удалось загрузить внешнюю компоненту» или «Объект AddIn не найден». Это значит, что конфигурация пытается использовать компоненту, которой нет на компьютере, либо она не зарегистрирована в системе. Понимание того, как устроен механизм, позволяет быстро устранить проблему без вызова специалиста.
Важно различать два близких понятия. Внешняя компонента (addin) — это бинарный файл: DLL для Windows, SO для Linux, иногда упакованный в ZIP-архив манифеста. Расширение конфигурации — совсем другой механизм: это надстройка над прикладным решением, написанная на встроенном языке 1С, без бинарных файлов. Их часто путают, но устанавливаются и обновляются они по-разному.
Что такое внешняя компонента и как она устроена
Технически addin — это динамическая библиотека, реализующая определённый интерфейс взаимодействия с платформой. Современные компоненты разрабатываются по технологии Native API: один и тот же исходный код можно собрать под Windows, Linux и даже под мобильные платформы. Более старые компоненты используют COM-модель и работают только в Windows.
Компонента может поставляться в двух видах. Первый — отдельный файл DLL, который регистрируется в операционной системе (для COM) или загружается напрямую. Второй — архив с манифестом, содержащий сразу несколько сборок под разные платформы и разрядности: платформа сама выбирает подходящий вариант при подключении. Второй формат удобнее для распространения и чаще используется в типовых конфигурациях.
Зачем нужны addin: типовые сценарии
Практических сценариев, где без внешней компоненты не обойтись, немало. Наиболее распространённые:
- Работа с торговым оборудованием: сканеры штрихкодов, принтеры этикеток, весы — через драйверы, реализованные как компоненты.
- Генерация и печать штрихкодов и QR-кодов (известная компонента печати двумерных кодов).
- Криптографические операции, электронная подпись, работа с криптопровайдерами.
- Интеграция с внешними системами по специфическим протоколам, которые сложно реализовать на встроенном языке.
- Защита конфигураций: некоторые поставщики выносят критичную логику в компоненту, чтобы её нельзя было прочитать.
Если задача решается штатными средствами платформы — HTTP-запросами, веб-сервисами, расширением конфигурации — внешнюю компоненту лучше не вводить. Каждая компонента — это дополнительная зависимость: её нужно обновлять, тестировать на новых релизах платформы и следить за совместимостью разрядности.
Как подключить addin в 1С
В типовых конфигурациях компоненты обычно уже встроены в состав поставки и хранятся в макетах или справочнике внешних компонент (в решениях на базе БСП). Платформа подключает их автоматически при первом обращении. В собственной разработке подключение выполняется программно.
- 1Убедитесь, что файл компоненты соответствует разрядности клиента 1С (32 или 64 бита) и операционной системе.
- 2Для COM-компоненты зарегистрируйте DLL в системе командой regsvr32 с правами администратора.
- 3В коде вызовите ПодключитьВнешнююКомпоненту с указанием пути к файлу или макета и проверьте возвращаемое значение.
- 4Создайте объект через Новый ("AddIn.ИмяОбъекта") и проверьте работу методов компоненты.
- 5Протестируйте подключение на всех типах клиентов, где будет работать решение: тонкий, толстый, веб-клиент.
Пример программного подключения из макета:
Результат = ПодключитьВнешнююКомпоненту(
"ОбщийМакет.КомпонентаПечати", "BarCode",
ТипВнешнейКомпоненты.Native);
Если Результат Тогда
Компонента = Новый("AddIn.BarCode.Barcode");
КонецЕсли;
Если компонента подключается из файла на диске, вместо имени макета указывается полный путь. Учитывайте, что в клиент-серверном режиме путь должен быть доступен именно с того компьютера, где выполняется код — сервера или клиента, в зависимости от контекста вызова.
Разрядность, клиенты и ограничения
Самая частая причина неработающего addin — несовпадение разрядности. 64-разрядный клиент 1С не загрузит 32-разрядную DLL, и наоборот. Если компонента поставляется только в 32-битной сборке, а у пользователей 64-битный клиент, вариантов два: найти 64-битную версию компоненты или выполнять обращение к ней на сервере с подходящей разрядностью.
Второе ограничение — тип клиента. COM-компоненты работают только в Windows и не поддерживаются веб-клиентом. Native API компоненты могут работать в веб-клиенте, но для этого должны быть собраны под соответствующую технологию и упакованы в архив с манифестом. Перед внедрением проверьте, на каких клиентах реально будут работать пользователи.
Типичные ошибки и их устранение
Сообщение «Не удалось подключить внешнюю компоненту» имеет ограниченный набор причин, и их можно проверить последовательно. Сначала убедитесь, что файл физически существует и доступен для чтения. Затем проверьте разрядность и тип компоненты. Для COM-компонент — успешна ли регистрация через regsvr32, запущенную от имени администратора.
Если компонента подключается, но объект не создаётся (ошибка при вызове конструктора AddIn), проблема обычно в несовпадении программного имени. Имя объекта задаётся разработчиком компоненты и должно точно совпадать с тем, что указано в коде, включая регистр и префикс.
Как проверить результат
Метод ПодключитьВнешнююКомпоненту возвращает Истина
Возвращает Ложь или вызывает исключение — проверяйте путь, разрядность, регистрацию
Конструктор AddIn возвращает объект, доступны его свойства
Ошибка «объект не найден» — неверное программное имя
Методы компоненты выполняются и возвращают ожидаемые данные
Ошибки времени выполнения — несовместимость версии компоненты и платформы
Альтернативы внешним компонентам
Прежде чем вводить addin в проект, оцените альтернативы. Расширение конфигурации покрывает большинство задач доработки прикладной логики без бинарных зависимостей. HTTP-сервисы и веб-сервисы позволяют вынести «тяжёлую» логику во внешнее приложение и общаться с ним по сети — это проще сопровождать, чем компоненту на каждом рабочем месте.
Для печати штрихкодов в современных релизах типовых конфигураций часто достаточно штатных механизмов и компонент, уже включённых в поставку. COM-соединение с другими приложениями (например, для выгрузки в офисные пакеты) тоже не требует разработки собственной компоненты.
Сравнение вариантов
Подходит для оборудования, криптографии, низкоуровневых задач. Ограничение: зависимость от разрядности, ОС и версии платформы.
Подходит для доработки прикладной логики без снятия с поддержки. Не умеет работать с бинарными библиотеками и оборудованием.
Подходит для сложных вычислений и интеграций. Требует сетевой доступности сервиса и отдельного сопровождения.
FAQ: частые вопросы про addin в 1С
Чем addin отличается от расширения конфигурации?
Addin — это бинарная библиотека (DLL или архив с манифестом), добавляющая платформе новые объекты и методы. Расширение конфигурации — надстройка над прикладным решением на встроенном языке 1С без бинарных файлов. Первый расширяет платформу, второе — конкретную конфигурацию.
Что делать при ошибке «Не удалось загрузить внешнюю компоненту»?
Проверьте по порядку: существует ли файл и доступен ли он для чтения, совпадает ли разрядность компоненты с разрядностью клиента 1С, зарегистрирована ли COM-компонента через regsvr32 от имени администратора, не блокирует ли файл антивирус. Чаще всего причина — несовпадение разрядности.
Можно ли использовать addin в веб-клиенте?
COM-компоненты — нет, они работают только в Windows-клиентах. Компоненты по технологии Native API могут работать в веб-клиенте, если собраны для этого и упакованы в архив с манифестом. Конкретную поддержку нужно уточнять в документации поставщика компоненты.
Безопасно ли устанавливать сторонние внешние компоненты?
Компонента выполняется с правами пользователя 1С и имеет доступ к системе, поэтому источник критичен. Используйте только компоненты из состава типовых конфигураций, от поставщиков оборудования или проверенных разработчиков, и проверяйте файлы антивирусом перед установкой.
Нужно ли обновлять компоненту при обновлении платформы?
Не всегда, но проверять совместимость обязательно. После обновления платформы протестируйте подключение и работу компоненты на тестовой базе. Если разработчик выпустил новую сборку под актуальную версию платформы, лучше обновиться до неё.
Что важно запомнить
Addin в 1С — внешняя бинарная компонента для задач, недоступных встроенному языку: оборудование, штрихкоды, криптография. Ключевые правила: совпадение разрядности с клиентом, проверка возвращаемого значения при подключении, установка только из доверенных источников. Если задачу можно решить расширением конфигурации или внешним сервисом — предпочтите их, чтобы не тащить бинарную зависимость.