gifts2017

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

Опубликовал Денис Денин (MrDen) в раздел Программирование - Внешние компоненты

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

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

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

См. также

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

Обзор должен быть предметным, содержащим описание реализации, использования ну и конечно аналоги.
5. Денис Денин (MrDen) 29.08.09 16:07
(4) я еще не закончил статью, будет и описание технологий и примеры использования так что сильно не ругайте :-)
6. Денис Денин (MrDen) 31.08.09 20:48
добавлено примеры работы с Контролом двумерной графики, описана передача массивов в 1С 7.7
7. steban (steban) 02.09.09 17:03
>Для работы ActiveX в 1С 7.7 необходимо использование 1С++ и FormEx
Для работы ActiveX в 1с 7.7 достаточно только 1с++
MrDen; JohnyDeath; +2 Ответить 1
8. Денис Денин (MrDen) 02.09.09 17:34
(7) спасибо, поправил
alekseies; +1 Ответить
9. v i (vis_tmp) 02.10.13 09:30
Про графики.
А можно ли построить график такого вида?
http://savepic.su/3460493.png
На картинке выделены пустые область, т.е. шкала всегда 12 месяцев, к примеру, а данные показываем не за все месяцы, а только за часть из них.
С 3 по 10, к примеру.
Такое возможно сделать?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа