При разработке внешних обработок и расширений часто возникает необходимость задействовать внешние библиотеки для взаимодействия с торговым оборудованием, криптографией или низкоуровневыми системными функциями. У многих разработчиков возникает закономерный вопрос: обязательно ли регистрировать полученную библиотеку DLL в операционной системе вручную через утилиту regsvr32.exe с правами администратора, либо платформа 1С:Предприятие 8.3 позволяет выполнить подключение программно без лишних манипуляций в реестре Windows?
Разберем детально, как устроены механизмы работы с внешними компонентами в платформе 1С, почему регистрация через реестр в большинстве современных сценариев не требуется и как организовать правильную и безопасную загрузку библиотек.
Проанализируем архитектуру внешних компонент. В платформе 1С:Предприятие существует два принципиально разных типа архитектуры:
ILanguageExtender и стандартной модели объектов Windows. При классическом подходе COM-библиотека действительно привязывается к реестру операционной системы: регистрация через regsvr32.exe записывает идентификатор класса (CLSID) и путь к файлу в ветку HKEY_CLASSES_ROOT. Главные ограничения данной технологии — зависимость от операционной системы Windows, невозможность прямой работы на Linux/macOS и веб-клиенте, а также требование повышенных привилегий при установке в общесистемные каталоги.Таким образом, если компонента написана с использованием технологии Native API, регистрировать ее через regsvr32.exe не нужно. Платформа полностью берет инициализацию библиотеки на себя.
Выясним назначение встроенных методов языка 1С. Вопреки частому заблуждению, функции УстановитьВнешнююКомпоненту (или асинхронный аналог НачатьУстановкуВнешнейКомпоненты) и ПодключитьВнешнююКомпоненту созданы именно для того, чтобы полностью исключить ручную регистрацию и необходимость прав локального администратора.
Рассмотрим, как разделяются эти операции:
Посмотрим на практический пример программного подключения компоненты Native API, хранящейся внутри внешней обработки в виде макета с двоичными данными:
&НаКлиенте
Процедура ПодключитьБиблиотеку()
ИмяКомпоненты = "МояКомпонента";
ПутьКМакету = ПолучитьНавигационнуюСсылку(ЭтаФорма.ЭтотОбъект, "МакетКомпоненты");
// Выполняем установку компоненты из макета в кэш пользователя
Если Не ПодключитьВнешнююКомпоненту(ПутьКМакету, ИмяКомпоненты, ТипВнешнейКомпоненты.Native) Тогда
Если УстановитьВнешнююКомпоненту(ПутьКМакету) Тогда
ПодключитьВнешнююКомпоненту(ПутьКМакету, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);
Иначе
ВызватьИсключение "Не удалось установить внешнюю компоненту на клиентское рабочее место.";
КонецЕсли;
КонецЕсли;
// Создаем экземпляр объекта компоненты
ОбъектКомпоненты = Новый("AddIn." + ИмяКомпоненты + ".MyClass");
КонецПроцедуры
Для универсального распространения компонент платформа поддерживает механизм поставки в виде ZIP-архива. Рассмотрим, как это работает на практике.
В корень ZIP-архива помещается файл manifest.xml, в котором описывается список доступных динамических библиотек для разных платформ и разрядностей. Платформа 1С при установке автоматически считывает манифест и извлекает именно тот файл, который подходит под текущую операционную систему и разрядность запущенного клиента. Пример структуры манифеста:
<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/ssl/addin">
<component os="Windows" path="MyComp32.dll" type="native" arch="i386"/>
<component os="Windows" path="MyComp64.dll" type="native" arch="x86_64"/>
<component os="Linux" path="libMyComp64.so" type="native" arch="x86_64"/>
</bundle>
Поместив такой ZIP-архив в макет типа Двоичные данные, мы получаем универсальное решение, не требующее никаких предварительных действий со стороны системных администраторов конечных пользователей.
Если при вызове метода ПодключитьВнешнююКомпоненту возникает ошибка или возвращается значение Ложь, разберем ключевые технические нюансы, которые необходимо проверить:
rphost.БезопасныйРежим = Истина в типовых механизмах БСП), среда 1С намеренно блокирует любые вызовы внешних модулей и компонент. В настройках дополнительных отчетов и обработок необходимо явно отключать безопасный режим либо настраивать соответствующие разрешения в профилях безопасности кластера.Подводя итог: современная разработка под 1С:Предприятие 8.3 не требует ручной регистрации библиотек через regsvr32.exe. Использование технологии Native API и штатных методов платформы обеспечивает полностью прозрачную, безопасную и автоматическую загрузку внешних компонент на любых рабочих местах пользователей.