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