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

08.04.22

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Внешняя Native API компонента совместно с функционалом фреймворка Qt
.zip 52,11Mb
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 Работа с камерой Сеть Звук

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

15000 руб.

30.05.2017    52949    7    69    

44

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

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

4440 руб.

22.06.2020    17400    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    27134    136    98    

88

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

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

3600 руб.

02.09.2010    76620    71    255    

189

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

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

1500 руб.

17.09.2018    35831    110    127    

113

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

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

2400 руб.

04.05.2018    45953    118    66    

63

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

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

26.01.2024    5748    starik-2005    32    

43
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user887928 11.10.22 16:58 Сейчас в теме
Добрый день Алексей.
Занимаюсь разработкой в QtCreator и ищу пример создания внешней компоненты Native API для 1С 8.3 (32 и 64) для QtCreator. Нужен пустой базовый пример. Подскажите, я смогу использовать вашу компоненту в качестве такого? Или просто прошу помочь с примером.
2. tav_74 46 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 46 12.04.23 21:26 Сейчас в теме
Добрый день! В описании я указывал: в архиве находится собранная 32-х разрядная версия со всеми библиотеками, конфигурация, а также исходные коды компоненты. В проекте Visual Studio, в диспетчере конфигураций, есть конфигурация и для х64 платформ. Вы можете пересобрать компоненту с использованием х64 версии фреймворка Qt.
Оставьте свое сообщение