====== ИНТЕГРАЦИЯ ПАНЕЛИ ТЕЛЕФОНИИ В КОНФИГУРАЦИЮ ITIL======
[[astpanel:designer|Обратно, к списку конфигураций...]]
* Руководство составлено для **1С:ITIL. Управление информационными технологиями предприятия. КОРП, редакция 1.1**.
* Требуется панель телефонии версии **1.4.26.3 и выше**.
Сделайте **РЕЗЕРВНУЮ КОПИЮ** информационной базы.
===== Настройка поддержки =====
Необходимо включить возможность изменения конфигурации.
Порядок действий следующий:
- Убедитесь, что все пользователи завершили свою работу с программой.
- Сделайте **РЕЗЕРВНУЮ КОПИЮ** информационной базы.
- Запустите программу в режиме **"Конфигуратор"**.
- Откройте окно настройки поддержки "**Конфигуратор**" - "**Поддержка**" - "**Настройка поддержки**". {{ :doc:panel1ccrm20:support.png? |}}
- **Включите возможность изменения конфигурации**. На предупреждение программы ответьте утвердительно.
- В появившемся окне укажите, что объекты поставщика не редактируются.{{ :doc:panel1ccrm20:rules.png? |}}
- Затем для корневого объекта конфигурации установите правило поддержки **"Объект поставщика редактируется с сохранением поддержки"**.
Конфигурация готова к внесению изменений.
===== Создание новых объектов =====
- Вставьте внешнюю обработку, которая идет в поставке, присвойте ей имя "**МИКО_ПанельТелефонииДля1С**".
- Добавьте новый общий модуль **"МИКО_Софтфон"**. {{ :doc:panel1ccrm20:addmodule.png? |}}
- Установите флажки напротив свойств **"Сервер"** и **"Вызов сервера"** модуля. {{ :doc:panel1ccrm20:moduleproperties.png? |}}
- Скопируйте [[astpanel:designer:crm2:modulesrc|текст, расположенный по данной ссылке]], и вставьте его в модуль **"МИКО_Софтфон"**.
===== Настройка прав доступа =====
- Добавьте в конфигурацию новую роль **"МИКО_Софтфон"**.
- Снимите все отметки о правах выставляемые по умолчанию, а для обработки "МИКО_ПанельТелефонииДля1С" установите все права.{{ :astpanel:designer:crm2:pravamikosoftfon.png |}}
- Аналогично, для обработки **"сфпСофтФонВнешняяПанель"**.{{ :astpanel:designer:crm2:pravadlyasoftfonprof.png |}}
- Назначьте право на использование компанды **"ОткрытьСофтФон"** {{ :astpanel:designer:crm2:pravadlyakomandi.png |}}
- В конфигурации перейдите к обработке "**сфпСофтФонВнешняяПанель**"
- Для команды "**ОткрытьСофтФон**" измените синоним на "**Панель телефонии**" {{ :astpanel:designer:crm2:sinonim_soffon.png?nolink |}}
===== Изменение общих модулей =====
- Перейдите к общему модулю "**ОбщегоНазначенияКлиентПереопределяемый**",
- Добавьте изменения в процедуру "**ПриНачалеРаботыСистемы**" после комментария "+Софтфон":
Процедура ПриНачалеРаботыСистемы(Знач ОбрабатыватьПараметрыЗапуска = Ложь) Экспорт
//{{ВНИМАНИЕ!!! Пропущена часть кода}}
//**********************************//
//+СофтФон
// PT1C / Панель телефонии Asterisk / Начало
НазваниеПанелиТелефонии = "Панель телефонии Asterisk (МИКО)";
МИКО_Софтфон.ВыполнитьПервичнуюУстановку(НазваниеПанелиТелефонии);
Если НЕ ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() И МИКО_Софтфон.Использовать(НазваниеПанелиТелефонии) Тогда
Отказ = Ложь;
Попытка
// Версии 1.4.25.10+ обработка переименована в "МИКО_ПанельТелефонииДля1С"
сфпФормаТелефонВнешняяПанель = ПолучитьФорму("Обработка.МИКО_ПанельТелефонииДля1С.Форма.Форма");
сфпФормаТелефонВнешняяПанель.ИнициализироватьПанельТелефонии(Истина, Отказ);
Исключение
Отказ = Истина;
КонецПопытки;
Если Отказ Тогда
Сообщить("Не удалось запустить ""Панель телефонии Asterisk""");
Иначе
сфпОбработаноВнешнееСобытие = Истина;
КонецЕсли;
Возврат;
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
//{{ВНИМАНИЕ!!! Пропущена часть кода}}
//**********************************//
//-СофтФон
КонецПроцедуры
- Перейдите к общему модулю "**сфпСофтФонПроКлиент**",
- К процедуре "**сфпПереподключитьСофтФон**". В начало необходимо вставить фрагмент кода:// PT1C / Панель телефонии Asterisk / Начало
Если МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)") Тогда
Если сфпФормаТелефонВнешняяПанель = Неопределено Тогда
Попытка
// Версии 1.4.25.10+ обработка переименована в "МИКО_ПанельТелефонииДля1С"
сфпФормаТелефонВнешняяПанель = ПолучитьФорму("Обработка.МИКО_ПанельТелефонииДля1С.Форма.Форма");
сфпФормаТелефонВнешняяПанель.ИнициализироватьПанельТелефонии(Истина, Ложь);
Исключение
Сообщить("Не удалось запустить ""Панель телефонии Asterisk (МИКО)""!");
Возврат;
КонецПопытки;
Иначе
// Переопределение обработки команды
Если сфпФормаТелефонВнешняяПанель.Открыта() Тогда
сфпФормаТелефонВнешняяПанель.Активизировать();
Иначе
сфпФормаТелефонВнешняяПанель.Открыть();
КонецЕсли;
КонецЕсли;
Возврат;
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
- К процедуре "**сфпПроверитьДоступностьСофтФона**". В начало необходимо вставить фрагмент кода: // PT1C / Панель телефонии Asterisk / Начало
Если МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)") Тогда
Возврат Истина;
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
===== Изменение общих форм =====
- Перейти к общей форме "**CRM_СообщенияПодключения**". В модуле формы, **в начало** процедуры "**ПриОткрытии**" необходимо добавить фрагмент кода: // PT1C / Панель телефонии Asterisk / Начало
Если МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)") Тогда
Возврат;
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
- Перейти к общей форме "**ПечатьДокументов**". **В конец** процедуры "**ПриСозданииНаСервере**" необходимо добавить фрагмент кода: // PT1C / Панель телефонии Asterisk / Начало
МИКО_Софтфон.ДобавитьКнопкиФаксаНаФормуПечати(ЭтаФорма);
// PT1C / Панель телефонии Asterisk / Конец
- **После** процедуры "**ПриСозданииНаСервере**", добавить дополнительные процедуры - обработки:
&НаКлиенте
Процедура МИКО_ОтправитьКакФакс()
Если НЕ МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)")
ИЛИ сфпФормаТелефонВнешняяПанель = Неопределено Тогда
Возврат;
КонецЕсли;
ТабличныеДокументы = Новый СписокЗначений;
Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл
Если Элементы[НастройкаПечатнойФормы.ИмяРеквизита].Вывод = ИспользованиеВывода.Разрешить И НастройкаПечатнойФормы.Печатать Тогда
ТабличныеДокументы.Добавить(ЭтотОбъект[НастройкаПечатнойФормы.ИмяРеквизита], НастройкаПечатнойФормы.Представление);
КонецЕсли;
КонецЦикла;
Если ТабличныеДокументы.Количество()=0 Тогда
Возврат;
Иначе
ТабДок = ТабличныеДокументы[0].Значение;
КонецЕсли;
// отсылаем факс
сфпФормаТелефонВнешняяПанель.ОтправитьФайлПоФаксу(,ТабДок);
КонецПроцедуры // МИКО_ОтправитьКакФакс()
&НаКлиенте
Процедура МИКО_Позвонить()
Если НЕ МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)")
ИЛИ сфпФормаТелефонВнешняяПанель = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыПечати = Неопределено;
Если Параметры.Свойство("ПараметрыПечати",ПараметрыПечати)
И ТипЗнч(ПараметрыПечати) = Тип("Структура") Тогда
Если ПараметрыПечати.Свойство("ОбъектыПечати")
И ТипЗнч(ПараметрыПечати.ОбъектыПечати) = Тип("Массив")
И ПараметрыПечати.ОбъектыПечати.Количество()>0 Тогда
Участник = МИКО_Софтфон.ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрыПечати.ОбъектыПечати[0]);
Если ТипЗнч(Участник) = Тип("Массив")
И Участник.Количество()>0 Тогда
сфпФормаТелефонВнешняяПанель.ПозвонитьВыбравТелефон(Участник);
ИначеЕсли Участник <> Неопределено Тогда
СписокУчастников = Новый Массив(1);
СписокУчастников[0] = Участник;
сфпФормаТелефонВнешняяПанель.ПозвонитьВыбравТелефон(СписокУчастников);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
===== Изменение общих команд =====
- Перейти к общей команде "**itilprofПозвонить**". В модуле команды, **в начало** процедуры "**ОбработкаКоманды**" необходимо добавить фрагмент кода: // PT1C / Панель телефонии Asterisk / Начало
Если МИКО_Софтфон.Использовать("Панель телефонии Asterisk (МИКО)") И сфпФормаТелефонВнешняяПанель <> Неопределено Тогда
СписокУчастников = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды);
Если СписокУчастников <> Неопределено Тогда
сфпФормаТелефонВнешняяПанель.ПозвонитьВыбравТелефон(СписокУчастников);
КонецЕсли;
Возврат;
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
- В конце модуля добавить две функции:// PT1C / Панель телефонии Asterisk / Начало
// Для документов будет возвращено значение реквизита "Контрагент"
// Для справочников - возвращается ссылка на элемент
// В случае ошибки возвращается "Неопределено"
//
Функция ПолучитьСсылкуНаУчастникаИзДокумента(Знач Ссылка) Экспорт
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
МассивОбъектов = Новый Массив(1);
МассивОбъектов[0] = Ссылка;
Возврат МассивОбъектов;
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
МассивОбъектов = Новый Массив;
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Партнер");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "АбонентКонтакт");
Возврат МассивОбъектов;
КонецЕсли;
КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()
// Получате значение раквизита, если значение заполнено - добавляет его в массив.
//
Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка, Массив, ИмяРеквизита) Экспорт
Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда
Массив.Добавить(Ссылка[ИмяРеквизита]);
КонецЕсли;
Возврат Истина;
КонецФункции // ДобавитьЗначениеРеквизитаВМассив()
// PT1C / Панель телефонии Asterisk / Конец
===== Добавление картинок =====
В общие картинки добавить
- Картинку с именем "**МИКО_ЗаписьРазговора**" {{:astpanel:designer:crm2:miko_zapisrazgovora.png?nolink|}}
- Картинку с именем "**МИКО_Телефон**" {{:astpanel:designer:crm2:miko_telefon.png?nolink|}}
- Картинку с именем "**МИКО_ОтправитьФакс**" {{:astpanel:designer:crm2:miko_otpravitfaks.png?nolink|}}
===== Добавление кнопки "Позвонить" на закладку контактной информации справочников =====
В формах некоторых справочников (например, //"Организации"//) присутствует закладка //"Адреса, телефоны"//. Для полей адреса и электронной почты уже разработан механизм добавляющий кнопку с соответствующим действием. Добавим для поля телефон аналогичную кнопку с действием //"Позвонить"//.
Порядок действий следующий.
- Откройте окно настройки поддержки и установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"// для объектов:
* //ОбщийМодуль.УправлениеКонтактнойИнформацией//;
* //ОбщийМодуль.УправлениеКонтактнойИнформациейКлиент//.
- Откройте модуль //"УправлениеКонтактнойИнформацией"// и перейдите к процедуре //"Действие"//.
- Измените текст процедуры как показано ниже.Функция Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий = Ложь, Это_CRM_Форма = Ложь)
//+CRM
//Функция Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий = Ложь)
//-CRM
Если (Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница
Или Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)
// PT1C / Панель телефонии Asterisk / Начало
Или Тип = Перечисления.ТипыКонтактнойИнформации.Телефон
// PT1C / Панель телефонии Asterisk / Конец
Или (Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И КоличествоАдресов > 1) Тогда
...
Если Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
...
ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда
...
// PT1C / Панель телефонии Asterisk / Начало
ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
Элемент.Заголовок = НСтр("ru='Позвонить'");
Команда.Подсказка = НСтр("ru='Позвонить'");
Команда.Картинка = БиблиотекаКартинок.itilprofТелефон;
// PT1C / Панель телефонии Asterisk / Конец
ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
...
КонецЕсли;
//КонецЕсли;
...
КонецФункции
- Откройте модуль //"УправлениеКонтактнойИнформациейКлиент"// и перейдите к процедуре //"ПодключаемаяКоманда"//.
- Измените текст процедуры как показано ниже.Функция ПодключаемаяКоманда(Форма, Знач ИмяКоманды) Экспорт
...
Если КомандаКонтекстногоМеню Тогда
...
Иначе
Если ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
...
ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда
...
// PT1C / Панель телефонии Asterisk / Начало
ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда
ПозвонитьПоТелефону(Форма, ИмяРеквизита);
// PT1C / Панель телефонии Asterisk / Конец
ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда
...
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
- Затем добавьте в этот модуль процедуру //"ПозвонитьПоТелефону"// с [[astpanel:designer:itil:proccall|текстом, расположенным по данной ссылке]].
[[astpanel:designer|Обратно, к списку конфигураций...]]
===== Первый запуск =====
- Необходимо запустить 1С под учетной записью администратора 1С.
- Перейдите в раздел "**Администрирование**" - "**Пользователи и Роли**"
- Перейти к справочнику "**Пользователи**"
- В карточке пользователя перейдите к настройкам пользователя.
- Включите опции:
* "**Использовать СофтФон**"
* "**Панель телефонии Asterisk (МИКО)**"
* "**Использовать внутреннюю панель СофтФон**" {{ :astpanel:designer:ITILUserSettings.png?500 |}}
- Перейдите в раздел "**Администрирование**"
- Перейдите по ссылке "**Форма настроек СофтФон**", необходимо включить использование Софтфон: {{ :astpanel:designer:itilusesoftphone.png?500 |}}
[[astpanel:enterprise:managed|Перейти к инструкции по настройке в режиме предприятия]]
===== Коментарии =====
~~DISQUS~~