====== ИНТЕГРАЦИЯ ПАНЕЛИ ТЕЛЕФОНИИ В КОНФИГУРАЦИЮ 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~~