====== Панель телефонии для УПП 1.3. Интеграция. ====== Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации УПП, редакция 1.3, что позволит использовать функционал панели в полной мере. ===== Достоинства безинтеграционного режима работы: ===== * Элемент ненумерованного спискаНе требуетяся изменение конфигурации. Панель может быть запущена через главное меню **“Файл -Открыть”**. При этом доступен практически весь функционал панели. ===== Особенности и ограничения: ===== * Для определения контрагента по номеру телефона используется временная таблица контактной информации, эта таблица обновляется с периодичностью, указанной в настройках панели. Врменная таблица - своего рода кэш контактной информации. * Нет возможности набирать номер телефона контрагента из его карточки. * Нет возможности отправки факса в текущий разговор средствами стандартной общей формы печати. * Пользователю необходим расширенный набор прав: разрешить открытие внешних обработок. ===== Пример интеграции в **УПП 1.3.25.1**.===== Далее будет описан пример интеграции панели, в котором будет предложен вариант преодоления ограничений. Обязательно перед началом работ выполняйте резервное копирование информационной базы! ------------------------------------------------------------------------------------------------ **Задача:** Необходимо открывать форму панели телефонии автоматически при старте 1С. **Решение:** * Добавим в дерево метаданных обработку **"МИКО_ПанельТелефонииAsterisk"** * Добавим в дерево метаданных новую роль: Имя **"МИКО_ИспользованиеСофтфона"**. Синоним **"Использование панели телефонии Asterisk (МИКО)"**. Установить права на чтение и использование обработки "МИКО_ПанельТелефонииAsterisk". Установим право "Администрирование данных" - необходимо для сохранения / восстановления настроек в хранилище общих настроек (необходимо только для клиент серверного варианта работы). * Модифицировать модуль обычного приложения Раздел определения переменных: ... ... ... // {{{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Перем Miko_Ajam Экспорт;// МИКО обработка управления звонками // {{{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ ... ... ... // Процедура - обработчик события "При начале работы системы". // Процедура ПриНачалеРаботыСистемы() // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // {{{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Софтфон MIKO_Ajam // установка глобадьных переменных Если РольДоступна("ПолныеПрава") ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда Попытка Miko_Ajam = Обработки.МИКО_ПанельТелефонииAsterisk.Создать(); Miko_Ajam.ПодключитьСофтФон(); Исключение Сообщить("Ошибка подключения СофтФона (МИКО):", СтатусСообщения.ОченьВажное); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; // {{{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ КонецПроцедуры // ПриНачалеРаботыСистемы() Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) // {{{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Если Источник = "MikoAjamEvent" Тогда Miko_Ajam.ОбработкаВнешнегоСобытияАстериск(Источник, Событие, Данные); КонецЕсли; // {{{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ КонецПроцедуры Процедура ПередЗавершениемРаботыСистемы(Отказ) // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // {{{ МИКО }}} НАЧАЛО Панель телефонии Asterisk // Завершим работу Панель телефонии Asterisk перед выходом из предприятия Если НЕ Miko_Ajam = Неопределено Тогда Miko_Ajam.ОтключитьВК(); КонецЕсли; // {{{ МИКО }}} КОНЕЦ Панель телефонии Asterisk КонецПроцедуры ------------------------------------------------------------------------------------------------ **Задача:** необходимо, для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений "КонтактнаяИнформация". **Решение:** необходимо модифицировать регистр сведений **"КонтактнаяИнформация"**: Добавить ресурсы: * CRM_ПолеХраненияНомера (число длина 32) * CRM_НомерТелефона (переменная строка 32) В модуле набора записей изменить процедуру: Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Для каждого Запись Из ЭтотОбъект Цикл // ... ... ... Пропущена часть исходного текста ... ... ... //{{{ МИКО }}} НАЧАЛО Код встраивания "Панель телефонии Asterisk" Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.МИКО_ОбщийМодуль = Неопределено И Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда МИКО_ПредставлениеНомера = Запись.Поле1 +Запись.Поле2 +Запись.Поле3; Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(МИКО_ПредставлениеНомера) Тогда Запись.CRM_ПолеХраненияНомера = Miko_Ajam.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения(Запись.Поле4, Miko_Ajam.глКоличествоХранимыхЦифрТелефона); Запись.CRM_НомерТелефона = Miko_Ajam.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона(Запись.Поле4); Иначе Запись.CRM_ПолеХраненияНомера = Miko_Ajam.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения (МИКО_ПредставлениеНомера, Miko_Ajam.глКоличествоХранимыхЦифрТелефона); Запись.CRM_НомерТелефона = Miko_Ajam.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона(МИКО_ПредставлениеНомера); КонецЕсли; КонецЕсли; //{{{ МИКО }}} КОНЕЦ КонецЦикла; Если Отказ Тогда Сообщить(СтрокаОтказа); КонецЕсли; КонецПроцедуры После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом.