- 1 С использованием Native API
- 2 С использованием технологии COM
Итак, приступим, от простого к сложному:[spoiler]
Выдержка из ИТС
| При работе компоненты на сервере, вызов ПодключитьВнешнююКомпоненту() необходимо выполнять каждый раз перед созданием экземпляра внешней компоненты, т. к. в общем случае неизвестно, на каком сервере будет исполняться вызов (это может быть Windows, Linux, 32-разрядная или 64-разрядная ОС). |
1. Допустим ВК у нас расположена в определенном каталоге на диске :
// подключаем компонент
Попытка
ПодключитьВнешнююКомпоненту("D:\MIKO_phone_IP.dll", "Comp", ТипВнешнейКомпоненты.Native);
// Создаем объект компонента, обратите внимание на использование
// конструкции «Новый ()»
ОбъектКомпоненты = Новый("AddIn.Comp.MIKO_phone_IP");
Компонент.Host= "sip.host.com";
Компонент.Port = "5038";
Комопнент.LogIn();
Исключение
Сообщить("Исключение при инициализации");
КонецПопытки;
|
Возможно использование в "Толстом Клиенте (обычное приложение)";
Это самый простой пример работы с компонентой Native. Следует обратить внимание на то, что компонент этого типа не требует регистрацию в системе, что значительно упрощает администрирование.
2. Рассмотренный выше пример совсем не жизненный. Чаще всего компонент располагают в макете. Макет должен содержать zip архив c файлами компонента и файлом MANIFEST.xml
Пример файла манифеста:
| <?xml version="1.0" encoding="UTF-8"?> <bundle xmlns="http://v8.1c.ru/8.2/addin/bundle"> <component os="Windows" path="MIKO_phone_IP.dll" type="native" arch="i386"/> <component os="Windows" path="1CEAdnWebFF.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="5.*"/> </bundle> |
- MIKO_phone_IP.dll (компонент native)
- MANIFEST.xml
- 1CEAdnWebFF.xpi (zip архив - расширение для Mozilla FF, содержит компонент native)
Пример работы для толстого клиента (обычное приложение)
ПутьКМакету = "Обработка.МИКО_ПанельТелефонии.Макет.AddInWindows32";
Если ПодключитьВнешнююКомпоненту(ПутьКМакету,"Component") Тогда
Компонент = Новый ("AddIn.Component.MIKO_phone_IP");
КонецЕсли;
|
3. При работе в тонком и web клиенте обязательно использования метода УстановитьВнешнююКомпоненту().
Цитата с ИТС:
| В момент установки внешние компоненты устанавливаются в каталог %APPDATA%\1C\1Cv82\ExtCompT. Каталог установки внешних компонент не считается кешем и не очищается при вызове «1С:Предприятия» с ключом командной строки ClearCache. Использование метода УстановитьВнешнююКомпоненту() для тонкого клиента является обязательным. |
%APPDATA%\1C\1Cv82\ExtCompT - каталог установки компонентов для Толстого, Тонкого клиентов.
%APPDATA%\Roaming\Mozilla\Extensions - каталог (в моем случае) расширений для Mozilla FF/
При использовании метода УстановитьВнешнююКомпоненту(), в зависимости от используемого клиента, в соответствующий каталог будут распакованы расширения.
Пример процедуры установки внешнего компонента:
&НаКлиенте
// Процедура должна вызываться лишь один раз
Процедура УстановитьКомпонент(Команда)
Попытка
УстановитьВнешнююКомпоненту(АдресАрхиваКомпонента);
Исключение
Сообщить("Не удалось устанвить внешнюю компоненту.");
КонецПопытки;
КонецПроцедуры |
УстановитьВнешнююКомпоненту - метод должен вызываться лишь при первичной установке компонента и в случае, когда необходимо обновить установленную версию компонента.
В случае тонкого и толстого клиента:
Достаточно повторно выполнить операцию установки внешней компоненты с помощью метода УстановитьВнешнююКомпоненту().
В случае web клиента для обновления компонента:
- Необходимо удалить плагин через механизм работы с дополнениями веб-браузера (Mozilla FF)
- Воспользоваться методом УстановитьВнешнююКомпоненту
Для подключения ВК можно использовать следующую процедуру:
&НаКлиенте
Процедура Инициализаровать(Команда)
Попытка
ПодключитьВнешнююКомпоненту("ОбщийМакет.MIKO_phone_IP","Comp" ,ТипВнешнейКомпоненты.Native);
Компонент = Новый ("AddIn.Comp.MIKO_phone_IP");
Исключение
Сообщить("Исключение при инициализации...");
КонецПопытки;
КонецПроцедуры |
Если компонент не был установлен, то будет вызвано исключение.
2. бывают случаи, когда компонент необходимо установить из временного хранилища (файл получен со стороннего источника, внешняя обработка), в этом случае необходимо первым параметров в методы ПодключитьВнешнююКомпоненту и УстановитьВнешнююКомпоненту адрес архива во временном хранилище. Ниже приведу возможный пример работы:
&НаКлиенте
Перем АдресАрхиваКомпонента;
&НаКлиенте
Перем Компонент;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// адрес, содержит строку (навигационную ссылку на двоичные данные zip архива во
// временном хранилище)
АдресАрхиваКомпонента = ПолучитьАдресАрхиваВоВременномХранилище();
КонецПроцедуры // ПриОткрытии()
&НаСервере
// методы ПодключитьВнешнююКомпоненту,УстановитьВнешнююКомпоненту, могут принимать в
// качестве первого параметра строку в формате "навигационная ссылка"
// (URL к внешней компоненте, упакованной в ZIP-архив, в формате, аналогичном
// ПолучитьНавигационнуюСсылку).
Функция ПолучитьАдресАрхиваВоВременномХранилище()
ОбъектОбработки = РеквизитФормыВЗначение("ОбработкаОбъект");
СсылкаНаАрхив = ПоместитьВоВременноеХранилище(ОбъектОбработки.ПолучитьМакет("MIKO_phone_IP"),
Новый УникальныйИдентификатор);
Возврат СсылкаНаАрхив;
КонецФункции // ПолучитьАдресАрхиваВоВременномХранилище()
&НаКлиенте
// Процедура должна вызываться лишь один раз, в случае, если компонент еще не установлен
// или нуждается в обновлении
Процедура УстановитьКомпонент(Команда)
Попытка
УстановитьВнешнююКомпоненту(АдресАрхиваКомпонента);
Исключение
Сообщить("Не удалось устанвить внешнюю компоненту.");
КонецПопытки;
КонецПроцедуры // УстановитьКомпонент()
&НаКлиенте
// основная процедура инициализации комопнента
Процедура Инициализаровать(Команда)
Попытка
ПодключитьВнешнююКомпоненту(АдресАрхиваКомпонента,"Comp" ,ТипВнешнейКомпоненты.Native);
Компонент = Новый ("AddIn.Comp.MIKO_phone_IP");
Исключение
Сообщить("Исключение при инициализации. Возможно компонент еще не был установлен.");
КонецПопытки;
КонецПроцедуры
|
Рекомендую ознакомиться с материалами на сайте ИТС:
1. ИТС: Документация: Глава 31. Внешние Компоненты
2. ИТС: Технология создания внешних компонент.
