Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


doc:panel1cbp20:config_bezint

Панель телефонии для БП. Интеграция.

Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации Бухгалтерия предприятия, редакция 2.0, что позволит использовать функционал панели в полной мере.

Достоинства безинтеграционного режима работы:

  • Не требуется изменение конфигурации. Панель может быть запущена через главное меню “Файл -Открыть”. При этом доступен практически весь функционал панели.

Особенности и ограничения:

  • Для определения контрагента по номеру телефона используется временная таблица контактной информации, эта таблица обновляется с периодичностью, указанной в настройках панели. Врменная таблица - своего рода кэш контактной информации.
  • Нет возможности набирать номер телефона контрагента из его карточки.
  • Нет возможности отправки факса в текущий разговор средствами стандартной общей формы печати.
  • Пользователю необходим расширенный набор прав: разрешить открытие внешних обработок.
В конфигурации БП 2.0 отсутствует документ «Событие». Вместо этого документа будет задействована карточка контрагента.

Пример интеграции в **БП 2.0.35.5**.

Далее будет описан пример интеграции панели, в котором будет предложен вариант преодоления ограничений.

Обязательно перед началом работ выполняйте резервное копирование информационной базы!

Задача: Необходимо открывать форму панели телефонии автоматически при старте 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.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона(МИКО_ПредставлениеНомера);
			КонецЕсли;
		КонецЕсли;  
		 //{{{ МИКО }}} КОНЕЦ
	КонецЦикла;
 
	Если Отказ Тогда
		Сообщить(СтрокаОтказа);
	КонецЕсли; 
 
КонецПроцедуры

После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом.

Справочник "Контрагенты"


Задача: необходимо, добавить возможность произвести звонок из карточки контрагента.

Решение: необходимо модифицировать форму элемента справочника «Контрагенты»:

Процедура ПриОткрытии()
 
        // !!! пропущена часть исходно текста !!!
 
        // {{{ МИКО Панель телефонии 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.ОтправитьФаксомТабДок(ЭлементыФормы.ПолеДокумента);
	КонецЕсли; 
 
КонецПроцедуры

Полезные ссылки

doc/panel1cbp20/config_bezint.txt · Последние изменения: 2014/11/14 22:32 (внешнее изменение)