Разработка и Конфигурация · 11 мин
Как подключить библиотеку в 1С: все рабочие способы
Способы подключения библиотек в 1С: внешние компоненты Native API и COM, общие модули, подсистемы БСП, расширения. Пошаговые инструкции, проверка результата и типичные ошибки.
Под библиотекой в 1С обычно понимают три разных вещи: внешнюю компоненту (DLL по технологии Native API или COM), готовый программный модуль на встроенном языке (общий модуль, подсистема из БСП) и внешнюю обработку с функциями. Способ подключения зависит от того, что именно вы получили: файл .dll, .epf, выгрузку конфигурации .cf или пакет расширения .cfe.
Ошибка на этапе выбора способа — самая частая причина проблем: DLL пытаются загрузить как обработку, а общий модуль — как компоненту. Перед началом работы определите тип файла и версию платформы, с которой он совместим. Внешние компоненты дополнительно делятся по разрядности (32/64 бита) и по месту выполнения — на клиенте или на сервере.
Ниже разобраны все основные сценарии: от подключения DLL в коде до добавления подсистемы в конфигурацию через сравнение и объединение. Каждый раздел завершается признаками успешного результата, чтобы вы могли сразу проверить подключение.
Определяем тип библиотеки перед подключением
Формат файла однозначно указывает на способ подключения. Файлы .dll — это внешние компоненты, они подключаются программно или помещаются в макет конфигурации. Файлы .epf и .erf — внешние обработки и отчёты, их код вызывается через объект обработки. Файлы .cf и .cfu — выгрузки конфигурации или подсистем, внедряемые через конфигуратор. Файлы .cfe — расширения, подключаемые без изменения основной конфигурации.
Отдельный случай — библиотеки, поставляемые в виде архива с исходным кодом на встроенном языке 1С (набор процедур и функций). Такой код переносится в общий модуль конфигурации. Это самый простой и самый безопасный вариант: он не требует прав на загрузку бинарных файлов и работает на любой платформе, включая Linux-серверы и веб-клиент.
Подключение внешней компоненты (DLL) из кода
Стандартный способ подключения DLL — метод глобального контекста ПодключитьВнешнююКомпоненту(). В простейшем виде компонента лежит в каталоге базы или по известному пути, и вы вызываете подключение с указанием пути и типа компоненты. После успешного подключения создаётся объект компоненты, через который доступны её методы.
ПодключитьВнешнююКомпоненту("C:\Components\MyLib.dll", "MyLib", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.MyLib.MyObject");
Результат = Компонента.ВыполнитьДействие();
Если метод вернул Ложь, компонента не подключилась. Причины: неверный путь, несовпадение разрядности компоненты и процесса 1С, отсутствие зависимых системных библиотек, блокировка антивирусом. Всегда проверяйте возвращаемое значение и оборачивайте создание объекта в попытку/исключение — иначе при отсутствии компоненты пользователь получит необработанную ошибку.
Признак успешного подключения: метод вернул Истина, объект создан без исключения, тестовый вызов метода компоненты возвращает осмысленный результат, а не падает с ошибкой «Метод объекта не обнаружен».
Если ПодключитьВнешнююКомпоненту(ПутьКФайлу, "MyLib", ТипВнешнейКомпоненты.Native) Тогда
Компонента = Новый("AddIn.MyLib.MyObject");
Иначе
ВызватьИсключение "Не удалось подключить внешнюю компоненту";
КонецЕсли;Подключение компоненты через макет конфигурации
Хранить DLL вне базы ненадёжно: файл могут удалить, путь изменится, на другом компьютере его не будет. Правильная практика — поместить компоненту в макет конфигурации (или в макет обработки/расширения) как двоичные данные и подключать её оттуда методом УстановитьВнешнююКомпоненту() с адресом во временном хранилище.
Порядок действий: в конфигураторе создайте общий макет типа «Двоичные данные», загрузите в него DLL. В коде получите макет, поместите во временное хранилище, вызовите установку и подключение. Для компонент, используемых в тонком и веб-клиенте, этот путь обязателен — у клиента нет прямого доступа к файловой системе сервера.
- 1Создайте общий макет типа «Двоичные данные» и загрузите в него DLL
- 2В коде получите макет: ПолучитьОбщийМакет("ИмяМакета")
- 3Поместите данные во временное хранилище
- 4Вызовите УстановитьВнешнююКомпоненту(АдресХранилища)
- 5Вызовите ПодключитьВнешнююКомпоненту и создайте объект AddIn
- 6Проверьте работу тестовым вызовом метода компоненты
В клиент-серверном режиме учитывайте, где выполняется код. Если компонента нужна на сервере, DLL должна быть совместима с серверной ОС и разрядностью сервера 1С — компонента, собранная только под Windows x86, на 64-битном Linux-сервере не загрузится. Для таких случаев разработчики компонент поставляют несколько сборок, и в макет кладут ZIP-архив с вариантами под разные платформы.
Подключение кодовой библиотеки через общий модуль
Если библиотека — это набор процедур и функций на встроенном языке, её подключают как общий модуль. В конфигураторе: ветка «Общие» → «Общие модули» → добавить новый модуль, вставить код, задать имя и флаги выполнения. После обновления конфигурации базы данных функции модуля доступны из любого места: ИмяМодуля.ИмяФункции().
Ключевые настройки модуля: флаг «Сервер» — код выполняется на сервере, «Клиент (обычное приложение)» и «Клиент (управляемое приложение)» — на клиенте, «Вызов сервера» — разрешает обращаться к серверному модулю с клиента. Для библиотек с вычислениями и работой с данными обычно достаточно серверного модуля с включённым вызовом сервера.
Если конфигурация на поддержке и изменять её нельзя, общий модуль добавляют через расширение: создайте расширение, добавьте в него общий модуль — механизм тот же, но основная конфигурация остаётся неизменной и обновляется штатно.
Подключение подсистемы из БСП или сторонней библиотеки
Библиотека стандартных подсистем (БСП) и многие отраслевые библиотеки поставляются как файлы .cf, которые внедряются через «Конфигурация → Сравнить, объединить с конфигурацией из файла». В диалоге объединения отметьте только нужные подсистемы и связанные объекты — платформа сама покажет зависимости.
После объединения проверьте: обновление конфигурации базы данных прошло без ошибок, новые подсистемы видны в интерфейсе, обработчики событий (при необходимости) прописаны в модуле управляемого приложения. Многие подсистемы БСП требуют вызова своих процедур из общих обработчиков — без этого они установлены, но не работают.
Подключение через расширение конфигурации
Расширение (.cfe) — предпочтительный способ добавить библиотеку, когда конфигурация типовая и должна оставаться на полной поддержке. Расширение загружается через «Все функции → Стандартные → Управление расширениями конфигурации» или в конфигураторе, не меняя основную конфигурацию.
В расширение можно добавить общие модули, макеты с компонентами, подсистемы и роли. Ограничения: нельзя изменять состав некоторых типов объектов, а заимствованные объекты работают только в рамках переопределения. Если библиотека требует новых объектов метаданных в основной конфигурации (например, новых регистров), расширение не подойдёт — нужна доработка конфигурации.
После добавления расширения проверьте его активность в списке расширений, отсутствие ошибок применения и работоспособность функций. При обновлении основной конфигурации расширение может перестать быть совместимым — платформа отключит его с соответствующим сообщением, и потребуется проверка разработчиком.
Сравнение способов подключения
Для кода на встроенном языке. Требует снятия конфигурации с поддержки, усложняет обновление.
Для типовых конфигураций на поддержке. Ограничено по составу объектов, может отключиться при обновлении.
Для DLL. Работает везде, но требует сборок под каждую платформу и разрядность.
Для переносимых функций без изменения конфигурации. Медленнее и менее удобна для частых вызовов.
Проверка подключения и типичные ошибки
Проверка зависит от способа. Для компоненты: подключение вернуло Истина, объект создан, тестовый метод выполняется. Для общего модуля: функция вызывается из другого модуля без ошибки «Процедура или функция не определена». Для расширения: оно активно в списке расширений, а его функциональность видна пользователям с нужными правами.
Отдельно проверьте права: если библиотека добавляет роли, назначьте их пользователям, иначе функции будут недоступны даже при корректном подключении. В файловой базе компонента подключается локально, в клиент-серверной — на том узле, где исполняется код, и это частая причина ситуации «у разработчика работает, у пользователя нет».
Как проверить результат
Метод вернул Истина, объект AddIn создан
Вернул Ложь или исключение при создании объекта
Функция выполняется и возвращает значение
Ошибка «Процедура или функция с указанным именем не определена»
В списке расширений стоит активный статус, нет ошибок применения
Расширение отключено или помечено как несовместимое
Частые вопросы
Можно ли подключить библиотеку без конфигуратора?
Да, в двух случаях: внешнюю обработку .epf можно открыть прямо в режиме предприятия через «Файл → Открыть» (если не запрещено правами и настройками безопасности), а расширение .cfe — загрузить через «Управление расширениями конфигурации» в режиме предприятия. Общие модули и подсистемы без конфигуратора добавить нельзя.
Почему компонента работает на одном компьютере и не работает на другом?
Чаще всего дело в разрядности процесса 1С, отсутствии системных зависимостей DLL (например, нужной версии Visual C++ Redistributable) или блокировке антивирусом. Проверьте разрядность клиента 1С, установите зависимости и добавьте файл в исключения защитного ПО.
Чем расширение лучше изменения конфигурации?
Расширение не снимает конфигурацию с поддержки, поэтому типовые обновления устанавливаются штатно. Изменения в основной конфигурации придётся вручную переносить при каждом обновлении, что увеличивает трудозатраты и риск ошибок.
Как подключить библиотеку для работы в веб-клиенте?
Код на встроенном языке работает в веб-клиенте без ограничений. Внешняя компонента должна быть специально собрана для веб-клиента и упакована по правилам платформы; обычная DLL, рассчитанная на толстый клиент, в браузере работать не будет.
Что делать, если после объединения с библиотекой база не обновляется?
Откройте протокол ошибок обновления конфигурации базы данных — там указаны проблемные объекты. Типичные причины: конфликт имён, ссылки на отсутствующие объекты, ошибки реструктуризации. Если разобраться не удаётся, восстановите базу из резервной копии и повторите объединение с меньшим набором объектов.
Можно ли использовать одну компоненту на сервере и на клиенте одновременно?
Да, если у вас есть сборки под обе среды: серверную (под ОС и разрядность сервера 1С) и клиентскую. Обычно их упаковывают в один ZIP-архив в макете, и платформа выбирает подходящий вариант при установке.
Что важно запомнить
Сначала определите формат библиотеки: DLL подключается как внешняя компонента, код — через общий модуль, подсистемы — через объединение, для типовых конфигураций предпочтительно расширение. Храните компоненты в макетах, проверяйте возвращаемые значения и всегда делайте резервную копию перед изменением конфигурации.