Стоит ли использовать Внешние компоненты для 1С ч.2 (ActiveX)

13.09.10

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

Примеры, ссылки на ActiveX

Начало статьи - Стоит ли использовать Внешние компоненты для 1С

Что такое ActiveX, не может толком сказать никто. Обычно на этот вопрос отвечают: "Переименованная технология OLE". Но если быть точными, OLE - лишь часть того, что называют компонентной объектной моделью COM (Component Object Model). Ясности, однако, от этого не прибавляется. Попробуем расставить точки над i и назовем ActiveX расширенной технологией OLE, базирующейся на модели COM и призванной "активизировать" компьютер, т. е. существенно увеличить его функциональные возможности (в первую очередь за счет интеграции в Internet и intranet).

Основными компонентами технологии ActiveX являются управляющие элементы ActiveX (с различными дополнениями), ActiveX Conferencing - средство, превращающее компьютер в коммуникационное устройство сети Internet, ActiveX Scripting - средство создания собственных программ обработки языков сценариев (скриптов), как, например, VBScript и JScript, встроенных в Microsoft Internet Explorer. И хотя это не все, но для первого представления о технологии ActiveX, согласитесь, уже достаточно.

Составляющие ActiveX
Свойства и методы
Как и обычные объекты OLE, элементы ActiveX могут реализовать наборы свойств интерфейсов и методов. Про интерфейсы и методы мы уже говорили, а вот свойства не были затронуты. Свойства - это некоторые параметры, присущие какому-либо классу объектов. Например, для квадрата характерны цвет, координаты левого верхнего угла и длина стороны. Про эти параметры говорят, что это свойства класса "Квадрат".

События
В дополнение к свойствам и методам элементы ActiveX могут предоставлять интерфейсы, через которые можно подавать сигналы-события всем заинтересованным в них программам. Соответственно программы, заинтересованные в получении событий, должны позаботиться об их перехвате, для чего в них должны быть предусмотрены фрагменты кода, называемые обработчиками событий.

Визуальное представление
Очень многие управляющие элементы могут размещать и отображать себя внутри окна программы-контейнера, которая использует эти элементы. Контейнер управляет расположением и размером ActiveX, которые он содержит.

Обработка событий клавиатуры
Управляющие элементы ActiveX могут перехватывать нажатия кнопок клавиатуры и их комбинации и соответствующим образом реагировать на них. Обычно все нажатия перехватываются программой-контейнером, содержащей ActiveX, и передаются управляющим элементам.

Сохранение состояния
Управляющий элемент ActiveX может сохранять и восстанавливать свое состояние. Это позволяет не тратить время на повторную настройку элементов.

Регистрация и лицензирование
Перед использованием элементы ActiveX должны быть зарегистрированы в системе и отмечены в реестре (регистраторе). Обычно элементы сами проделывают эту работу. Кроме того, элементы ActiveX могут быть лицензированы для предотвращения их нелегального использования.

Для работы ActiveX в 1С 7.7 необходимо использование 1С++
 Проект 1С++ - www.1cpp.ru
FAQ по ActiveX/АктивИкс
Пример использования:
Internet Explorer на форме (ActiveX)

Подробнее:
Создаем новый Внешний отчет
ВНИМАНИЕ! Для отображения ActiveX необходимо разместить на форме элемент диалога "Текст" или "Кнопка".
Размещаем на форме элемент диалога "Текст" с Идентификатором "ФБраузер".
Размещаем в модуле обработки следующий код:

Перем гФорма,Браузер;

Процедура ПриОткрытии()
    Попытка
        гФорма=СоздатьОбъект("СервисРасшФормы");
        гФорма.ЗагрузитьМодуль(); //ПослеОткрытия
    Исключение
        гФорма=СоздатьОбъект("Форма");
        гФорма.УстановитьФорму(Форма); //ФормаПриСоздании
    КонецПопытки;
КонецПроцедуры    // ПриОткрытии

Процедура ПослеОткрытия()
    Браузер=СоздатьОбъект("АктивИкс");
    Браузер.УстановитьАтрибут(Форма,"ФБраузер");
    Браузер.СоздатьЭУ("Shell.Explorer.2");
    Браузер.Объект.Navigate("c:\");
КонецПроцедуры

Процедура ФормаПриСоздании()
    ПослеОткрытия();
КонецПроцедуры    // ФормаПриСоздании

Процедура ФБраузер_BeforeNavigate2(объект,урл,флаги,фрейм,пост,заголовки,отмена)
    Сообщить(урл);
КонецПроцедуры    // ФБраузер_BeforeNavigate2

Если компонента 1С++ не загружена, то загружаем ее в процедуре обработки ПриОткрытии или в Глобальном Модуле.
Запускаем обработку и видим на экране содержимое диска С:\
Возможные проблемы:
- незагруженные компоненты;
- старые версия компоненты (на момент написания статьи: 1С++ 3.0.1.23, просмотреть версии можно выбрав пункт меню Помощь->О программе... либо Сервис->Параметры); - отсутствие прав доступа к диску C:, отсутствие диска C:;
- другие проблемы.
Вместо содержимого диска также можно открывать и ссылки в интернет, например www.infostart.ru.
Процедура ФБраузер_BeforeNavigate2 выбрана в виде примера события возникающего при работе ActiveX.
С полный перечнем событий, методов и свойств можно познакомиться в MSDN.
После чего расширить функциональную часть

ActiveX сторонних разработчиков:

Scintilla ActiveX Control
3D Active Button Magic
Бесплатный контрол двумерной графики в виде ActiveX - разберем подробнее:
Прежде всего зарегистрируем Контрол - regsvr32 acChart.ocx.
Также нам будет необходима ВК OLEExSup для передачи данных в Контрол с типом "Массив". Описание синтаксиса на странице ВК.
Скопируем файл предыдущего примера, удалим текст модуля, добавим следующие строки:

Перем гФорма,Браузер,_OleSafeArray;

Процедура ПриОткрытии()
    Попытка
        гФорма=СоздатьОбъект("СервисРасшФормы");
        гФорма.ЗагрузитьМодуль(); //ПослеОткрытия
    Исключение
        гФорма=СоздатьОбъект("Форма");
        гФорма.УстановитьФорму(Форма); //ФормаПриСоздании
    КонецПопытки;
КонецПроцедуры    // ПриОткрытии

Процедура ПослеОткрытия()
    _OleSafeArray.Создать(12,5,2);
    _OleSafeArray.УстановитьЗначение(0,0,1);
    _OleSafeArray.УстановитьЗначение(0,1,5);
    _OleSafeArray.УстановитьЗначение(1,0,3);
    _OleSafeArray.УстановитьЗначение(1,1,1);
    _OleSafeArray.УстановитьЗначение(2,0,3);
    _OleSafeArray.УстановитьЗначение(2,1,2);
    _OleSafeArray.УстановитьЗначение(3,0,4);
    _OleSafeArray.УстановитьЗначение(3,1,2);
    _OleSafeArray.УстановитьЗначение(4,0,8);
    _OleSafeArray.УстановитьЗначение(4,1,10);
    Браузер=СоздатьОбъект("АктивИкс");
    Браузер.УстановитьАтрибут(Форма,"ФБраузер");
    Браузер.СоздатьЭУ("acChart.ctlChart");

    OLEExSup=CreateObject("OLEExSup");
    //    Браузер.Объект.maxX = 5;
    //Браузер.Объект.maxY = 5;
    Браузер.Объект.ShowGridX = 1;
    Браузер.Объект.ShowGridY = 1;
    Браузер.Объект.ChartBorder = 1;
//    Браузер.Объект.ChartType = 5;
    Браузер.Объект.PlotHold= 1;
    Браузер.Объект.TitleX = "Дни";
    Браузер.Объект.TitleY = "Количество";
    Браузер.Объект.LegendAligment = 0;
    Браузер.Объект.AddLegendString("График");
    Браузер.Объект.UseGradientFill=1;
    OLEExSup.InvokeOLEMethod(Браузер.Объект, "DrawXY",_OleSafeArray);
КонецПроцедуры

Процедура ФормаПриСоздании()
    ПослеОткрытия();
КонецПроцедуры    // ФормаПриСоздании

Процедура ФБраузер_ChartClick(_X, _Y)
    Сообщить("!!");
КонецПроцедуры    //

Не забываем загрузить OLEExSup.dll.
Запускаем внешний отчет, получаем график. Далее эксперементируем по своему усмотрению.
К сожалению на Официальной странице Контрола дано описание не всех методов и событий. Для получения доступа к ним воспользуемся советами из FAQ по ActiveX/АктивИкс

Разработки участников Инфостарта

Василий aka Душелов
[GDI+] - Рисуем программно в 1С – ActiveX-компонента для рисования в 1С.

[VectorDrawing] - Векторная графика в 1С – ActiveX-компонента для работы с векторной графикой: рисует примитивы (прямоугольники, линии, многоугольники, эллипсы, текст), группирует их в сложные объекты. Позволяет вращать, деформировать, масштабировать. Инициируются события (при шелчке (одинарном и двойном) мышки на объекте и др.). Фигуры позволяют хранить ссылки на объекты 1С.

 CityMap1С - Карта города – Компонента для работы с картами города, с использованием сервисов Google, Yahoo, OpenStreet и VirtualEarth.
Возможности:
1. Поиск адреса на карте.
2. Пометка маркером точки на карте.
3. Прокладывание маршрута движения на автомобиле из точки А в точку Б.
4. Поиск оптимального маршрута, учитывая обязательный проезд по заданному шоссе.
5. Отображение нескольких маршрутов движения.
Примеры использования:
Диспетчеризация, мониторинг и охрана подвижных объектов (программно-аппаратный комплекс "Мониторинг и охрана") Автор: Игорь Белышев aka biv75

 "Захват окон" - ActiveX-компонента для 1С – Захватывает открытые окна и помещает их в 1С, так же получает скриншот выбранного окна.
Хотите играть в пасьянс в 1С, смотреть кино или просматривать секретные документы и не светить эти окна на рабочем столе, тогда эта компонента для Вас.
*** Для работы ВК потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

 "Склад3D" - ActiveX-компонента для 1С [DEMO] – Демонстрация возможности создания визуального отображения размещения товара на складе.
Пример использования:
Кинозал 3D Автор: Игорь Белышев aka biv75

См. также

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

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

4440 руб.

22.06.2020    18126    18    33    

22

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

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

2400 руб.

04.05.2018    46787    122    66    

66

Разработка внешних компонент Программист Платформа 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    28220    138    100    

90

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

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3394    2    0    

4

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

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

1500 руб.

17.09.2018    36476    113    127    

114

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

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

26.01.2024    6767    starik-2005    32    

44

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

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

22.11.2023    4358    86    ivan1703    26    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 2712 29.08.09 00:29 Сейчас в теме
..следует добавить, что использование активиксов, по крайней мере в 7.7, требует наличия формы, на которую их надо положить. таким образом реализовать с помощью активикса, например, чат ворма которого ОТКРЫВАЕТСЯ в нужный момент (а не висит "невидимая" где-нибудь все время) - я не знаю как...
- возможно я тут все неправильно сказал, просьба меня поправить...
2. German 413 29.08.09 13:23 Сейчас в теме
такие "статьи" можно в своих блогах писать, здесь то она зачем???? поддержать интерес? ИМХО ... информационный мусор.
3. Арчибальд 2709 29.08.09 14:40 Сейчас в теме
(2) Не согласен. Посетителю, может, как раз активикс нужен, а поди найди его...
Сам до активикса не добрался, но плюсую проделанную работу.
4. German 413 29.08.09 15:55 Сейчас в теме
(3) все обзоры в том числе и Ваши это чистый перебор + пару слов которые нужны для связи этих ссылок.

Обзор должен быть предметным, содержащим описание реализации, использования ну и конечно аналоги.
Evg-Lylyk; +1 Ответить
5. MrDen 435 29.08.09 16:07 Сейчас в теме
(4) я еще не закончил статью, будет и описание технологий и примеры использования так что сильно не ругайте :-)
6. MrDen 435 31.08.09 20:48 Сейчас в теме
добавлено примеры работы с Контролом двумерной графики, описана передача массивов в 1С 7.7
7. steban 73 02.09.09 17:03 Сейчас в теме
>Для работы ActiveX в 1С 7.7 необходимо использование 1С++ и FormEx
Для работы ActiveX в 1с 7.7 достаточно только 1с++
MrDen; JohnyDeath; +2 Ответить
8. MrDen 435 02.09.09 17:34 Сейчас в теме
(7) спасибо, поправил
alekseies; +1 Ответить
9. vis_tmp 32 02.10.13 09:30 Сейчас в теме
Про графики.
А можно ли построить график такого вида?
http://savepic.su/3460493.png
На картинке выделены пустые область, т.е. шкала всегда 12 месяцев, к примеру, а данные показываем не за все месяцы, а только за часть из них.
С 3 по 10, к примеру.
Такое возможно сделать?
10. Gkmy 28 28.08.17 17:52 Сейчас в теме
Процедура ПослеОткрытия()
    Браузер=СоздатьОбъект("АктивИкс");
    Браузер.УстановитьАтрибут(Форма,"ФБраузер");
    Браузер.СоздатьЭУ("Shell.Explorer.2");
    Браузер.Объект.Navigate("c:\");
КонецПроцедуры

Shell.Explorer.2 - есть альтернативы? Ищу среди своих(Win10), обнаружил: Mozilla.Browser -- только это что-то ещё более древнее и примитивное.
Оставьте свое сообщение