Внешняя Native API компонента совместно с функционалом фреймворка Qt

08.04.22

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

В данном примере реализована интеграция внешней компоненты, написанной с использованием технологии Native API и фреймворка Qt.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Внешняя Native API компонента совместно с функционалом фреймворка Qt
.zip 52,11Mb ver:1
13
13 Скачать (1 SM) Купить за 1 850 руб.

Фреймворк Qt позволяет добавить множество полезного функционала в Вашу внешнюю компоненту, например, QtMultimedia модуль предоставляет богатый набор функций, позволяющих использовать мультимедийные возможности платформы. QCamera - использование камер. Модуль работы с сетью QtNetwork предоставляет удобные как низкоуровневые сетевые концепции, так и высокоуровневые классы. Класс QTextToSpeech обеспечивает удобный доступ к механизмам синтеза речи по тексту. Также в фреймворке присутствует множество других классов, облегчающих работу программиста.

Тестировалось с версией платформы 1С:Предприятие 8.3.17.2306

В данном примере реализована работа как с вышеперечисленными классами, так и работа с GUI фреймворка из динамической библиотеки. Для этого, в конструкторе наследника от абстрактного класса IComponentBase, в worker_thread потока, создаваемого функцией_beginthreadex с помощью QCoreApplication::setLibraryPaths, вначале, до создания объектов, устанавливается путь для нахождения необходимых библиотек фреймворка. Соответственно сама компонента и ее библиотеки должны находится по данному пути, затем инициализируется объект QApplication. Далее создаются остальные объекты.

unsigned __stdcall worker_thread(void* arg)
{
                if(!demoQtClass)
   {
                               int argc = 0;
                               char* argv = { strdup("hi") };
                               QStringList paths = QCoreApplication::libraryPaths();
                               paths.append("c:/QtDemoAddInNative");
                               QCoreApplication::setLibraryPaths(paths);
                               QApplication* appp;
                               appp = new QApplication(argc, &argv);
                               appp->setQuitOnLastWindowClosed(false);
                               demoQtClass = new QtWidgetsDemoClass;        
                               cameraWidget = new QtCameraWidget;
                               chatWidget = new QtChatWidget;
                               utils = new my_utils;                              
                               appp->exec();
                               _endthreadex(0);
   }

                return 0;
}

Затем с помощью механизма сигналов и слотов реализуются коммуникации между созданными объектами. Для нахождения библиотек фреймворка необходимо в Windows системную переменную Path также добавить каталог месторасположения библиотеки, в нашем случае это "c:\QtDemoAddInNative".

 

Path

 

Также для работы компоненты необходима установка распространяемого компонента Visual C++ Redistributable x86 или x64, в зависимости от разрядности компоненты. Также следует учесть разрядность компоненты и разрядность платформы 1с.

Описание компоненты.

После нажатия на кнопку "Подключить компоненту" в случаете ее успешного подключения, появляется соответствующее сообщение:

 

Установка компоненты

 

В системном трее появится иконка компоненты:

 

Трей

 

Окно программы позволяет взаимодействовать с 1С посредством генерации внешнего события. В ответ из 1С в процедуре "Внешнее событие" вызывается метод внешней компоненты "ОтправитьТекстВВиджет" который добавляет в форму текстового редактора внешней компоненты текст.

 

Главное окно

 

Команды "Воспроизвести звук", "Остановить" -  работают с классом QMediaPlayer фреймворка Qt.

По кнопке "Прочитать текст" с помощью класса QTextToSpeech происходит преобразование текста в речь. На компьютере должны быть установлены библиотека SAPI и голоса для синтезатора речи.

Модуль для работы с камерой использует класс QCamera, обеспечивающий интерфейс для системных устройств камеры. По кнопке в 1С "Получить фото" происходит преобразование типа QByteArray в двоичные данные с типом VTYPE_BLOB и возврат их в 1С.

 

Камера

 

Тест работы с e2eSoft VCam - эмулятор веб-камеры. По галочке "Отразить" можно зеркально отразить полученное фото.

 

Камера_1

 

Виджет чата - пример простого чата на основе QUdpSocket – позволяет принимать и отправлять сообщения как всем, так и выбранным адресатам.

 

Чат

 

Компиляция проекта проверялась в Visual Studio 2017 и в  Visual Studio 2019 под Windows 10.

Версия Qt - 5.15.2

Работа проверялась в Windows 10. Также компонента функционировала и на более ранних операционных системах, например Server 2008 R2.

 

Server2008

 

В архиве находится собранная 32-х разрядная версия со всеми библиотеками, конфигурация, а также исходные коды компоненты.

Native API Qt Работа с камерой Сеть Звук

См. также

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

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

3600 руб.

02.09.2010    77776    73    257    

191

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

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

3000 руб.

12.05.2020    29058    139    100    

92

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

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

1500 руб.

17.09.2018    37129    115    128    

116

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1307    3    4    

3

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2619    bayselonarrend    14    

48

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    5378    kovalevdmv    26    

77

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

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

26.01.2024    7818    starik-2005    40    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user887928 11.10.22 16:58 Сейчас в теме
Добрый день Алексей.
Занимаюсь разработкой в QtCreator и ищу пример создания внешней компоненты Native API для 1С 8.3 (32 и 64) для QtCreator. Нужен пустой базовый пример. Подскажите, я смогу использовать вашу компоненту в качестве такого? Или просто прошу помочь с примером.
2. tav_74 48 13.10.22 16:58 Сейчас в теме
Добрый день!

Проект разрабатывался в Microsoft Visual Studio 2019. Можно попробовать создать .pro файл с помощью Qt VS Tools, или создать в QtCreator проект с нуля и скопировать код из .h и .cpp исходников с необходимой доработкой.
3. ahtyamovar 03.04.23 11:34 Сейчас в теме
windows 8.1x64 - компонента не подключается. path прописан, все лежит в C:\QtDemoAddInNative . права на каталог даны всем. база файловая.
1с толстый клиент - 8.3.22.1923 х64.
4. ahtyamovar 03.04.23 13:31 Сейчас в теме
Разобрался: платформу 1С надо 32х разрядную использовать.
5. skyboy13 14 12.04.23 20:33 Сейчас в теме
(4) а если нет возможности использовать 32?
6. tav_74 48 12.04.23 21:26 Сейчас в теме
Добрый день! В описании я указывал: в архиве находится собранная 32-х разрядная версия со всеми библиотеками, конфигурация, а также исходные коды компоненты. В проекте Visual Studio, в диспетчере конфигураций, есть конфигурация и для х64 платформ. Вы можете пересобрать компоненту с использованием х64 версии фреймворка Qt.
Оставьте свое сообщение