Это старая версия документа!
Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации Бухгалтерия предприятия, редакция 2.0, что позволит использовать функционал панели в полной мере.
Для начала следует разблокировать корневой объект конфигурации для внесения изменений.
Порядок действий следующий:
Теперь конфигурация готова к внесению изменений.
Задача: Необходимо открывать форму панели телефонии автоматически при старте 1С.
Решение:
Имя «МИКО_ИспользованиеСофтфона». Синоним «Использование панели телефонии Asterisk (МИКО)«. Установить права на чтение и использование обработки «МИКО_ПанельТелефонииДля1С».
В раздел определения переменных добавим:
// {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Перем Miko_Ajam Экспорт;// МИКО обработка управления звонками // {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ
В конце процедуры ПриНачалеРаботыСистемы добавим код:
// {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО // установка глобадьных переменных Если РольДоступна("ПолныеПрава") ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда Попытка Miko_Ajam = Обработки.МИКО_ПанельТелефонииДля1С.Создать(); Miko_Ajam.ПодключитьСофтФон(); Исключение Сообщить("Ошибка подключения СофтФона (МИКО):", СтатусСообщения.ОченьВажное); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; // {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ
Создадим новую процедуру ОбработкаВнешнегоСобытия
/ МИКО / Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) // {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Если Источник = "MikoAjamEvent" ИЛИ Источник = "MIKO_SoftPhone" ИЛИ Источник = "MIKO_InFormAutor" И НЕ Miko_Ajam = Неопределено Тогда Miko_Ajam.ОбработкаВнешнегоСобытияАстериск(Источник, Событие, Данные); КонецЕсли; // {{doc:panel1cbp20:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ КонецПроцедуры
В конец процедуры ПриЗавершенииРаботыСистемы добавим:
// {{doc:panel1cbp20:{ МИКО }}} НАЧАЛО Панель телефонии Asterisk // Завершим работу Панель телефонии Asterisk перед выходом из предприятия Если Miko_Ajam = Неопределено Тогда Miko_Ajam.ОтключитьВК(); КонецЕсли; // {{doc:panel1cbp20:{ МИКО }}} КОНЕЦ Панель телефонии Asterisk
Задача: необходимо для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений «КонтактнаяИнформация».
Решение: необходимо модифицировать регистр сведений «КонтактнаяИнформация»: Добавить ресурсы:
В модуле набора записей изменить процедуру:
Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Для каждого Запись Из ЭтотОбъект Цикл // ... ... ... Пропущена часть исходного текста ... ... ... #Если Клиент Тогда //{{doc:panel1cbp20:{ МИКО }}} НАЧАЛО Код встраивания "Панель телефонии 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.мОбработкаДанных.УбратьИзНомераТелефонаВсеБуквы (ПредставлениеНомера); КонецЕсли; КонецЕсли; // Для возможности сохранения Скайп номера Если Найти(Запись.Вид,"Skype")>0 Тогда Запись.CRM_НомерТелефона = Запись.Представление; Иначе Запись.Представление = Miko_Ajam.мОбработкаДанных.СформироватьСтруктуруНомераИзПолей(Запись).Представление; КонецЕсли; //{{doc:panel1cbp20:{ МИКО }}} КОНЕЦ #конецесли КонецЦикла; Если Отказ Тогда Сообщить(СтрокаОтказа); КонецЕсли; КонецПроцедуры
После этого добавленные ранее ресурсы, будут заполняться надлежащим образом.
Задача: Добавить возможность произвести звонок из карточки контрагента.
Решение: Необходимо модифицировать форму элемента справочника «Контрагенты»:
Добавим в конец процедуры ПередОткрытием в модуле формы:
// {{doc:panel1cbp20:{ МИКО Панель телефонии Asterisk }}} НАЧАЛО Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.мОбщийМодуль = Неопределено Тогда мОбщийМодуль = Miko_Ajam.мОбщийМодуль; // добавляем элементы управления на форму мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравИзСписка"); мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛица.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравКЛ"); КонецЕсли; // {{doc:panel1cbp20:{ МИКО Панель телефонии Asterisk }}} КОНЕЦ
Добавим новую процедуру МИКО_ВыполнитьДействие
// МИКО // Набор номера по заданному алгоритму // Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; Если Miko_Ajam = Неопределено Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" ТОгда // Позвонить по телефону, выбранному пользователем из списка телефонов определенных у контрагента и контактного лица СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("Контрагент", Ссылка); СписокОбъектов.Вставить("КонтактноеЛицо", ОсновноеКонтактноеЛицо); Если НЕ Ссылка = ГоловнойКонтрагент Тогда СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); КонецЕсли; Miko_Ajam.ПозвонитьВыбравТелефон(СписокОбъектов); ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда // Позовонить выбранному контактному лицу ТекущиеДанные = ЭлементыФормы.КонтактныеЛица.ТекущиеДанные; Если НЕ ТекущиеДанные = Неопределено Тогда СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("КонтактноеЛицо", ТекущиеДанные.Ссылка); Miko_Ajam.ПозвонитьВыбравТелефон(СписокОбъектов); КонецЕсли; КонецЕсли;
На этом встраивание завершено.