Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself

19.02.24

Разработка - Разработка внешних компонент

Небольшой цикл статей про внешние компоненты (ВК) для веб-браузеров. Цель – описать общий механизм взаимодействия платформы 1С и ВК в этом режиме, предложить как доработанное решение, основанное на примере от 1С, так и собственную разработку - внешнюю обработку 1С. Решение позволяет обеспечивать работу в веб-браузере для любой нативной библиотеки, разработанной на основе шаблона ВК от 1С и работающей в тонком клиенте. На вход решение получает наименование компании, продукта, номер версии и т.д., а также файл библиотеки, на выходе - zip-архив для загрузки в макет в 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?]
Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself:
.zip 14,06Mb
5
5
0 SM
Скачать

Вторая статья из цикла:

  1. Решение для работы внешней компоненты в веб-браузере под Windows: CMake + NSIS.
  2. Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself (данная статья).
  3. Решение для работы внешней компоненты в веб-браузере под Windows и Linux: 1С + Installer.

Расширение веб-браузера от 1С для Linux тоже, что и для Windows.

Функционирование собственного приложения под Linux отличается от такового под Windows использованием директорий вместо реестра. Для веб-браузера Chrome используется директория "~/.config/google-chrome/NativeMessagingHosts", для Firefox - "~/.mozilla/native-messaging-hosts", для Chromium - "~/.config/chromium/NativeMessagingHosts". Знак "~/." означает "/home/<имя пользователя>/ ". В директорию веб-браузера помещается файл манифеста json. Формат файла для веб-браузера, такой же, как и для Windows. 

Собственное приложение от 1С для Linux состоит из:

  1. Адаптер (исполняемый файл без расширения).
  2. Нативная библиотека (so).
  3. Файл манифеста для веб-браузера (json).

Адаптер и нативная библиотека помещаются в директорию "~/bin/<наименование компании>/<наименование продукта>/<версия>".

Имя файла манифеста имеет вид: "com.<наименование компании>.enterprise.<наименование продукта>.<версия>.json", файл помещается в соответствующую веб-браузеру директорию.

Алгоритм взаимодействия кода 1С с внешней компонентой в режиме веб-клиента не отличается от такового для Windows, кроме того, что вместо реестра используются указанные выше директории.

 
 Сообщение платформы 1С о загрузке установщика в Firefox

После загрузки файла установщика, необходимо перейти в директорию установки, пометить файл как исполняемый и запустить его на исполнение.

 
Пометка файла как исполняемого

 

Структура решения

В целом, структура решения совпадает с таковой для Windows, отличий немного:

Вместо NSIS используется Makeself, в каталоге NativeAPI должны быть нативные библиотеки формата AddIn<32|64>.so, в подкаталоге project нужно запускать скрипты linux_build64.sh и linux_build32.sh.

 

Работа с решением

Для работы с решением необходимо предварительно настроить Linux, установив пакеты:

Пакет CMake: sudo apt install cmake
Пакеты, необходимые для компиляции программного обеспечения: sudo apt-get install build-essential
Утилиты для работы с исполняемыми и связываемыми файлами: sudo apt-get install elfutils
Файлы разработки для библиотеки GTK: sudo apt-get install libgtk-3-dev

Работа с решением строится по следующему принципу: заполняем своими значениями файл settings.cmake, копируем в каталог NativeAPI скомпилированные нативные библиотеки, выполняем в консоле скрипт linux_build64.sh или linux_build32.sh, в зависимости от разрядности ОС.

 
Лог выполнения скрипта

если в консоле не было ошибок, в каталог project\build\pkg будут помещены файлы с библиотекой, установщиком и манифестом. В каталог project\build будет помещен собранный пакет в формате zip для загрузки в макет 1С. Пакет формируется для той ОС, в которой запущен скрипт. Какого-то механизма объединения пакетов для разных ОС и разрядностей в один в примере от 1С не предусмотрено.  Впрочем, это несложно сделать вручную - нужно просто добавить в zip-архив файлы библиотек и установщиков. Файл manifest.xml сразу идёт с значениями для всех вариантов, его дорабатывать не нужно.

 

Тестирование

Решение тестировалось в Ubuntu 22.04 X64, CMake 3.22.1, gcc 11.4.0, 1С:Предприятие 8.3 (8.3.23.1912), Firefox 110.0.1 , 122.0.1 не snap!!!, Chrome 120.0.6099.224. В Debian 12.04 X32, CMake 3.25.1, gcc 12.2.0, 1С:Предприятие 8.3 (8.3.23.1997), Firefox 115.7.0esr (32-разрядный), Chrome 120.0.6099.224.

Внешние компоненты

См. также

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    17341    16    33    

21

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    27060    135    98    

87

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35793    110    127    

113

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    76594    71    255    

189

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    45897    118    66    

63

Разработка внешних компонент Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    5671    starik-2005    32    

43

Инструментарий разработчика Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример взаимодействия 1С с Apach Kafka посредством внешней компоненты, разработанной на основе официальной библиотеки librdkafka (the Apache Kafka C/C++ client library).

22.11.2023    3500    72    ivan1703    26    

42
Оставьте свое сообщение