Здесь показаны различия между двумя версиями данной страницы.
doc:1cajam:thin [2011/12/18 08:38] a.portnov |
doc:1cajam:thin [2014/11/14 22:32] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Работа с компонентом в тонком клиенте ====== | ||
- | |||
- | Прежде всего рекомендую ознакомиться со способами подключения внешнего компонента: | ||
- | * [[doc:1cajam:init|см. также]] | ||
- | |||
- | ===== Установка ===== | ||
- | |||
- | Для начала работы с компонентом необходимо произвести его установку. Пример процедуры может выглядеть следующим | ||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | // Процедура должна вызываться лишь один раз при первичной установке компонента, | ||
- | // либо при обновлении его версии | ||
- | Процедура УстановитьКомпонент() | ||
- | АдресАрхиваКомпонента = "Обработка.МИКО_ПанельТелефонииДляCRM.Макет.AddInWindows32"; | ||
- | Попытка | ||
- | УстановитьВнешнююКомпоненту(АдресАрхиваКомпонента); | ||
- | Исключение | ||
- | Сообщить("Не удалось устанвить внешнюю компоненту."); | ||
- | КонецПопытки; | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | в этом случае компонент, упакованный в ZIP архив расположен в макете обработки. Далеев режиме 1С предприятия необходимо инициализировать вызов этой процедуры: | ||
- | {{ :doc:1cajam:uspeshnaja_ustanovka.jpg? |}} | ||
- | |||
- | В случае успешной установки компонента, в каталоге **%APPDATA%\1C\1Cv82\ExtCompT** (для windows 7) будет распакован файл компонента. Рядом с распакованным файлом в файл **registry.xml** будут дописаны сведения об установленном компоненте. Пример registry.xml файла: | ||
- | |||
- | <code 1c> | ||
- | <?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> | ||
- | </code> | ||
- | |||
- | Для дальнейшей работы с компонентом, имеет смысл определить переменную модуля: | ||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | Перем Компонент; | ||
- | | ||
- | </code> | ||
- | |||
- | ===== Инициализация ===== | ||
- | * [[doc:1cajam:init|см. также]] | ||
- | |||
- | Пример процедуры инициализации компонента: | ||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | Процедура Инициализаровать() | ||
- | АдресАрхиваКомпонента = "Обработка.МИКО_ПанельТелефонииДляCRM.Макет.AddInWindows32"; | ||
- | Если ПодключитьВнешнююКомпоненту(ПутьКМакету,"Comp",ТипВнешнейКомпоненты.Native) Тогда | ||
- | Компонент = Новый ("AddIn.Comp.MikoAjam"); | ||
- | Иначе | ||
- | СообщитьОтладочнуюИнформацию("Не удалось подключить внешнюю компоненту",""); | ||
- | КонецЕсли; | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Авторизация на сервере Asterisk ===== | ||
- | Далее пример авторизации: | ||
- | * [[doc:1cajam:connect|см. также...]] | ||
- | |||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | Процедура Login() | ||
- | Если Компонент = Неопределено Тогда | ||
- | Сообщить("Компонент не подключен, сначала инициализируйте его!"); | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | Компонент.Хост = "test.ru"; | ||
- | Компонент.Порт = "4443"; | ||
- | result=""; // результат выполнения | ||
- | Попытка | ||
- | Компонент.Login("МенеджерЛогин","МенеджерПароль",result); | ||
- | Исключение | ||
- | Сообщить("Ошибка при авторизации: " + result); | ||
- | КонецПопытки; | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Отключение от cервера Asterisk ===== | ||
- | |||
- | <code 1c> &НаКлиенте | ||
- | Процедура Logoff(Команда) | ||
- | Если Компонент = Неопределено Тогда | ||
- | Сообщить("Компонент не подключен"); | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | |||
- | Попытка | ||
- | Результат = ""; | ||
- | Компонент.Logoff(Результат); | ||
- | Исключение | ||
- | Сообщить("Исключение при отключении..."); | ||
- | КонецПопытки; | ||
- | |||
- | Сообщить("Результат " + Результат); | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Пинг ===== | ||
- | Пример процедуры для проверки соединения с Asterisk: | ||
- | |||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | Процедура Ping(Команда) | ||
- | Если Компонент = Неопределено Тогда | ||
- | Сообщить("Компонент не подключен!"); | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | Попытка | ||
- | respose =""; | ||
- | Результат=Компонент.Ping(respose); | ||
- | // Результат - возвращается значение типа булево | ||
- | Исключение | ||
- | Сообщить("Исключение при пинге"); | ||
- | КонецПопытки; | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Выполнение произвольной команды Asterisk (Command) ===== | ||
- | |||
- | [[doc:1cami:api:Command|Описание Command]] | ||
- | |||
- | <code 1c> | ||
- | &НаКлиенте | ||
- | Процедура CommandНажатие(Элемент) | ||
- | Command = ПрозвольнаяКоманда; // Command: Asterisk команда CLI интерфейса. (Не команда шелла!) | ||
- | ActionID = "110"; // ActionID: Необязательный ID команды, который будет возвращен в ответе. | ||
- | |||
- | Если Компонент = Неопределено Тогда | ||
- | Сообщить("Компонент не подключен"); | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | |||
- | Попытка | ||
- | //Результат=Компонент.command(Command,ActionID); | ||
- | Результат=""; | ||
- | Компонент.doc:1cami:api:Command(Command,ActionID,Результат); | ||
- | Исключение | ||
- | Сообщить("Исключение при отправке произвольной комманды "); | ||
- | КонецПопытки; | ||
- | |||
- | Сообщить("Результат комманды "+Результат); | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | ===== Инициализация звонка (Originate) ===== | ||
- | |||
- | Пример процедуры инициализации исходящего вызова: | ||
- | |||
- | <code 1c> &НаКлиенте | ||
- | // 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,Результат); | ||
- | Исключение | ||
- | Сообщить("Исключение при, ошибка"); | ||
- | КонецПопытки; | ||
- | |||
- | Сообщить("Результат оригинации "+Результат); | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | |||
- | |||