Начало статьи - Стоит ли использовать Внешние компоненты для 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С ч.2 (ActiveX)
13.09.10
Разработка - Разработка внешних компонент
Примеры, ссылки на ActiveX