Это старая версия документа!
Прежде всего рекомендую ознакомиться со способами подключения внешнего компонента:
Для начала работы с компонентом необходимо произвести его установку. Пример процедуры может выглядеть следующим
&НаКлиенте // Процедура должна вызываться лишь один раз при первичной установке компонента, // либо при обновлении его версии Процедура УстановитьКомпонент() АдресАрхиваКомпонента = "Обработка.МИКО_ПанельТелефонииДляCRM.Макет.AddInWindows32"; Попытка УстановитьВнешнююКомпоненту(АдресАрхиваКомпонента); Исключение Сообщить("Не удалось устанвить внешнюю компоненту."); КонецПопытки; КонецПроцедуры
в этом случае компонент, упакованный в ZIP архив расположен в макете обработки. Далеев режиме 1С предприятия необходимо инициализировать вызов этой процедуры:
В случае успешной установки компонента, в каталоге %APPDATA%\1C\1Cv82\ExtCompT (для windows 7) будет распакован файл компонента. Рядом с распакованным файлом в файл registry.xml будут дописаны сведения об установленном компоненте. Пример registry.xml файла:
<?xml version="1.0" encoding="UTF-8"?> <registry xmlns="http://v8.1c.ru/8.2/addin/registry"> <component path="MIKO_phone_IP.dll" type="native"/> <component path="MIKO_phone_IP_v_2_0.dll" type="native"/> <component path="MIKO_ajamV009.dll" type="native"/> </registry>
Для дальнейшей работы с компонентом, имеет смысл определить переменную модуля:
&НаКлиенте Перем Компонент;
Пример процедуры инициализации компонента:
&НаКлиенте Процедура Инициализаровать() АдресАрхиваКомпонента = "Обработка.МИКО_ПанельТелефонииДляCRM.Макет.AddInWindows32"; Если ПодключитьВнешнююКомпоненту(ПутьКМакету,"Comp",ТипВнешнейКомпоненты.Native) Тогда Компонент = Новый ("AddIn.Comp.MikoAjam"); Иначе СообщитьОтладочнуюИнформацию("Не удалось подключить внешнюю компоненту",""); КонецЕсли; КонецПроцедуры
Далее пример авторизации: * см. также...
&НаКлиенте Процедура Login() Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен, сначала инициализируйте его!"); Возврат; КонецЕсли; Компонент.Хост = "test.ru"; Компонент.Порт = "4443"; result=""; // результат выполнения Попытка Компонент.Login("МенеджерЛогин","МенеджерПароль",result); Исключение Сообщить("Ошибка при авторизации: " + result); КонецПопытки; КонецПроцедуры
&НаКлиенте Процедура Logoff(Команда) Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен"); Возврат; КонецЕсли; Попытка Результат = ""; Компонент.Logoff(Результат); Исключение Сообщить("Исключение при отключении..."); КонецПопытки; Сообщить("Результат " + Результат); КонецПроцедуры
Пример процедуры для проверки соединения с Asterisk:
&НаКлиенте Процедура Ping(Команда) Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен!"); Возврат; КонецЕсли; Попытка respose =""; Результат=Компонент.Ping(respose); // Результат - возвращается значение типа булево Исключение Сообщить("Исключение при пинге"); КонецПопытки; КонецПроцедуры
&НаКлиенте Процедура CommandНажатие(Элемент) Command = ПрозвольнаяКоманда; // Command: Asterisk команда CLI интерфейса. (Не команда шелла!) ActionID = "110"; // ActionID: Необязательный ID команды, который будет возвращен в ответе. Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен"); Возврат; КонецЕсли; Попытка //Результат=Компонент.command(Command,ActionID); Результат=""; Компонент.doc:1cami:api:Command(Command,ActionID,Результат); Исключение Сообщить("Исключение при отправке произвольной комманды "); КонецПопытки; Сообщить("Результат комманды "+Результат); КонецПроцедуры
Описание:Originate Пример процедуры инициализации исходящего вызова:
&НаКлиенте // http://wiki.miko.ru/doc:1cami:api:Originate Процедура Originate(Команда) Channel = НашКаналФильтр; // Channel: Название канала, с которого совершается исходящий вызов Context = Контекст; // Context: Название контекста для совершения исходящего вызова Exten = КомуЗвонимНомер;// Exten: Extension to use on connect Priority = "1"; // Priority: Priority to use on connect Timeout = ""; // Timeout: Таймаут (в миллисекундах) для соединения с инициатором CallerID = "MIKO_Abonent"; // CallerID: Значение CallerID, используемое для совершения исходящего вызова. Variable = ""; // Variable: Установка переменных канала (максимум 32). Account = "miko"; // Account: Значение для “Account code” исходящего вызова. Application = ""; // Application: Команда плана набора Data = ""; // Data : Параметры команды плана набора Async = "1"; // Async: Если указано “true” исходящий вызов будет производиться асинхронно. ActionID = "114"; // ActionID: Не обязательный идентификатор запроса. Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен"); Возврат; КонецЕсли; Попытка Компонент.Originate(Channel,Context,Exten,Priority,Timeout, CallerID,Variable,Account,Application, Data,Async,ActionID,Результат); Исключение Сообщить("Исключение при, ошибка"); КонецПопытки; Сообщить("Результат оригинации "+Результат); КонецПроцедуры
&НаКлиенте Процедура Monitor(Команда) Channel = АктивныйКанал1; File = ""; // File: Не обязательный параметр. Имя файла, которое будет Format1C = "wav"; // Format: Не обязательный параметр. Формат, в котором будет сохранен звуковой файл. Mix = "1"; // Mix: Не обязательный булевой параметр. Определяет, миксировать или нет поступающий //и исходящий из канала аудиопоток после окончания записи. ActionID = "115"; // ActionID: Необязательный ID команды, который будет возвращен в ответе. Если Компонент = Неопределено Тогда Сообщить("Компонент не подключен"); Возврат; КонецЕсли; Попытка //Результат=Компонент.Monitor(Channel,File,Format1C,Mix,ActionID); Результат=""; Компонент.Monitor(Channel,File,Format1C,Mix,ActionID,Результат); Исключение Сообщить("Исключение при выполнении "+Команда.Имя+" ошибка"); КонецПопытки; Сообщить("Результат команды "+Команда.Имя+" "+Результат); КонецПроцедуры