О внешних компонентах
Некоторые инструменты из набора ОПИ в своей работе используют внешние компоненты (AddIn) - динамические библиотеки на Rust, содержащие функции, реализация которых средствами 1С/OS затруднительна или невозможна. Несмотря на то, что при работе с функционалом ОПИ прямое взаимодействие с внешними компонентами не встречается, само их наличие сопряжено с некоторыми проблемами и неочевидными особенностями. Они описаны в этом разделе
Совместимость
Все внешние компоненты, добавляемые в ОПИ, собираются под x64 и x32 версии Windows и Linux. Они хранятся в специальных zip-архивах, состоящих из четырех файлов библиотек - по одному для каждой из платформ соответственно. Однако на обеих платформах присутствуют свои ограничения по совместимости с конкретными версиями ОС и системными библиотеками
Хранение в репози тории
Собранные zip-архивы и макеты Template.addin для 1С не хранятся в истории веток main и stable — они вынесены в orphan-ветку addins, чтобы не раздувать основную историю Git.
В этой ветке лежит одна актуальная сборка под текущую разработку в main. После клонирования main файлы по прежним путям (src/ru/OInt/addins/*.zip, src/en/OInt/addins/*.zip, **/CommonTemplates/*/Template.addin) в рабочем каталоге отсутствуют. Подтянуть их:
# Windows
src\addins\sync-addins.bat
# Linux / macOS / CI
bash src/addins/sync-addins.sh
Ветка stable содержит код последнего опубликованного релиза. Бинарники с addins рассчитаны на main и для stable могут не подойти (расхождение BSL-обёрток и нативного API). Работая со stable, соберите компоненты из src/addins на коммите этой ветки (build.bat) или возьмите архивы из соответствующего релиза.
Windows
Релизные сборки компонент на Windows выполняются актуальным инструментарием MSVC. При этом в результирующие .dll могут попадать ссылки на функции системных библиотек Windows (kernel32, bcrypt, ws2_32 и др.), доступные только начиная с Windows 8 и Windows Server 2012. На более старых системах компоненты из стандартного релиза ОПИ могут не загружаться или завершаться с ошибкой при обращении к таким функциям
Для самостоятельной сборки компонент под Windows 7 / Server 2008 R2 в репозитории есть каталог src/addins/legacy-win7 со скриптами setup-win7-build-env.bat и build-win7-package.bat. Сборка использует nightly Rust с целевыми платформами win7-windows-msvc и может занимать заметно больше времени, чем стандартная. Готовый zip-архив можно использовать как пакет внешней компоненты или заменить им соответствующий архив из релиза в зависимости от используемой поставки. Подробнее в README.md этого каталога
Linux
На Linux компоненты зависимы от наличия в системе трех вещей: glibc, gcc* и OpenSSL**
* Касается CLI и OneScript вер сий
** Касается библиотек, использующих функционал TLS
glibc
glibc — библиотека C, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т.д. Она всегда есть в дистрибутивах Linux на платформе x86, но может отличаться номером версии. Минимальная версия для работы компонент ОПИ - 2.18. Это соответствует таким дистрибутивам как CENTOS 7, RHEL 7, Fedora 19, Debian 8 и Ubuntu 12.04 (около 2013-2014 г.). На более старых дистрибутивах библиотеки, использующие внешние компоненты, работать не будут
gcc
От версии набора компиляторов gcc зависит наличие в системе нужной версии библиотеки libstdc++.so.6, которая необходима для работы движка внешних компонент в CLI и OSPX версиях ОПИ. Минимальная версия - 7.5.0. Это соответствует CentOS 8, RHEL 8, Fedora 28, Debian 10 и Ubuntu 20.04, а также может быть настроено и на более низких версиях при доступности devtoolset-7
OpenSSL
Библиотеки, имеющие функционал связанный с TLS, для его реализации линкуются к системным библиотекам OpenSSL версии 3.x - libssl.so.3 и libcrypto.so.3. Это относительно новая версия, которая используется по умолчанию в дистрибутивах, начиная с CENTOS 9, RHEL 9, Fedora 36, Debian 12 и Ubuntu 22.04 (около 2022-2023 г.). Для работы в более старых дистрибутивах, использующих OpenSSL 1.1 или старше, OpenSSL 3.x должен быть установлен или собран из исходников отдельно
Информация об использовании
Информацию о том, что библиотека использует внешние компоненты, можно найти на первой странице ее документации по подобным сноскам:
Пожалуйста, ознакомьтесь с разделом "О внешних компонентах" перед началом работы
Узнать больше: "Об использовании OpenSSL во внешних компонентах"
Их отсутствие, в свою очередь, означает, что внешние компоненты при реализации библиотеки не использовались
Внешние компоненты НаКлиенте в версии для 1С:Предприятие
Работа с методами, использующими внешние компоненты, в версии для 1С:Предприятие доступна как на стороне сервера, так и на стороне клиента. Но, в отличии от серверного варианта, где использование компонент скрыто и происходит бесшовно, в клиентском варианте внешние компоненты требуют обязательной интерактивной установки на конкретной клиентской машине. Этот процесс начинается при первом вызове функции для каждой используемой компоненты и сопровождается выводом диалогового окна, а также исключением с информацией о необходимости вызвать ранее запущенную функцию повторно
Кроме автоматической установки компонент по необходимости, выбранные компоненты могут также быть установлены на конкретном клиенте заранее через обработку Панель управления (ОПИ)
При обновлении Открытого пакета интеграций до новой версии, компоненты на клиенте необходимо установить заново через панель управления (пошаговая инструкция присутствует на форме обработки). В противном случае новые функции, реализованные в коде 1С, могут оказаться несовместимы с функциями компонент, которые остались на клиентской машине после предыдущей установки