Самостоятельное встраивание телефонии должно производиться сотрудником строго по данной инструкции во избежании проблем с программой.
Для интеграции обработки телефонии «МИКО_ПанельТелефонииДля1С» в типовую конфигурацию 1С: CRM необходимо выполнить ряд простых действий, описанных ниже.
Для начала следует разблокировать корневой объект конфигурации для внесения изменений.
Порядок действий следующий:
Теперь конфигурация готова к внесению изменений.
Необходимо добавить обработку «МИКО_ПанельТелефонииДля1С».
Внесем доработки в «Модуль обычного приложения».
Находим процедуру «ПриНачалеРаботыСистемы» и заменяем фрагмент исходного кода кода:
ИначеЕсли ТекАТС = Перечисления.CRM_ИспользуемыйСофтФон.СофтФонЛайт Тогда // {{doc:panel1ccrm:{ СофтФон, Лайт }}} НАЧАЛО Код встраивания в произвольную конфигурацию Попытка РарусСофтФонЛайт = Обработки.CRM_СофтФон.Создать(); РарусСофтФонЛайт.ПодключитьСофтФон();
Следующим фрагментом:
ИначеЕсли ТекАТС = Перечисления.CRM_ИспользуемыйСофтФон.СофтФонЛайт Тогда // {{doc:panel1ccrm:{ СофтФон, Лайт }}} НАЧАЛО Код встраивания в произвольную конфигурацию Попытка // PT1C / Панель телефонии Asterisk / НАЧАЛО // РарусСофтФонЛайт = Обработки.CRM_СофтФон.Создать(); РарусСофтФонЛайт = Обработки.МИКО_ПанельТелефонииДля1С.Создать(); // PT1C / Панель телефонии Asterisk / КОНЕЦ РарусСофтФонЛайт.ПодключитьСофтФон();
Далее находим процедуру «ОбработкаВнешнегоСобытия(Источник, Событие, Данные)» в конце процедуры, перед надписью «КонецПроцедуры» вставляем следующий код:
// Процедура выполняет обработку внешнего события // Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) // *** *** *** // // PT1C / Панель телефонии Asterisk / Начало Если Источник = "MikoAjamEvent" ИЛИ Источник = "MIKO_SoftPhone" ИЛИ Источник = "hWindow" Тогда РарусСофтФонЛайт.ОбработкаВнешнегоСобытияАстериск(Источник, Событие, Данные); КонецЕсли; // PT1C / Панель телефонии Asterisk / Конец КонецПроцедуры
Переходим к процедуре «ПередЗавершениемРаботыСистемы(Отказ)«. Перед «КонецПроцедуры» вставляем фрагмент код:
// Процедура перед завершением работы системы // Процедура ПередЗавершениемРаботыСистемы(Отказ) // *** *** *** // {{{ CRM Коммуникатор }}} КОНЕЦ // PT1C / Панель телефонии Asterisk / Начало Если Не Отказ И НЕ РарусСофтФонЛайт = Неопределено Тогда РарусСофтФонЛайт.ОтключитьВК(); КонецЕсли; // PT1C / Панель телефонии Asterisk / Конец КонецПроцедуры
В модуле набора записей скорректировать процедуру:
Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Для каждого Запись Из ЭтотОбъект Цикл Если НЕ ЗначениеЗаполнено(Запись.Объект) Тогда Отказ = Истина; СтрокаОтказа = "Не заполнен объект."; Продолжить; КонецЕсли; Если Запись.Объект.ЭтоГруппа Тогда Отказ = Истина; СтрокаОтказа = "Нельзя использовать в качестве объекта контактной информации - группу."; Прервать; КонецЕсли; //********************************************************************** // PT1C / начало редактирования // производим дозаполнение контактной информации # Если Клиент Тогда Если Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда ПредставлениеБаза = Запись.Представление; ПредставлениеНомера = Запись.Поле1 + Запись.Поле2 + Запись.Поле3; Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(ПредставлениеНомера) Тогда Запись.CRM_ПолеХраненияНомера = CRMПреобразоватьНомерДляСохранения(Запись.Поле4, глКоличествоХранимыхЦифрТелефона); ИначеЕсли НЕ ЗначениеЗаполнено(ПредставлениеНомера + Запись.Поле4) И ЗначениеЗаполнено(ПредставлениеБаза) Тогда Запись.CRM_ПолеХраненияНомера = CRMПреобразоватьНомерДляСохранения (ПредставлениеБаза, глКоличествоХранимыхЦифрТелефона); Иначе Запись.CRM_ПолеХраненияНомера = CRMПреобразоватьНомерДляСохранения (ПредставлениеНомера, глКоличествоХранимыхЦифрТелефона); КонецЕсли; КонецЕсли; // Для возможности сохранения Скайп номера, обойдем лишние проверки при изменении данных Если Найти(Запись.Вид,"Skype")>0 Тогда Запись.CRM_НомерТелефона = Запись.Представление; КонецЕсли; # КонецЕсли // PT1C // окончание редактирования //********************************************** КонецЦикла; Если Отказ Тогда Сообщить(СтрокаОтказа); КонецЕсли; КонецПроцедуры
Для возможности прослушивать запись разговора, прикрепленного к документу, необходимо модифицировать форму документа «CRM_ФормаДокумента»:
Процедура ДействияФормыCLON(Кнопка) // PT1C / Панель телефонии Asterisk / Начало Если НЕ РарусСофтФонЛайт = Неопределено И ТипЗнч(РарусСофтФонЛайт) = Тип("ОбработкаОбъект.МИКО_ПанельТелефонииДля1С") Тогда РарусСофтФонЛайт.ПрослушатьЗаписьРазговора(CRM_GUIDЗвонка); Возврат; КонецЕсли; // PT1C / Панель телефонии Asterisk / Конец // *** // *** // *** // КонецПроцедуры
Дополнительно необходимо внести изменения в обработку установки видимости / доступности элементов формы
Процедура ВидимостьЭлементовФормы() // *** пропущена часть исходного теста *** // // {{{ CLON Система записи телефонных разговоров }}} НАЧАЛО // PT1C / Панель телефонии Asterisk / Начало //ЭлементыФормы.кнПрослушатьЗаписьТелРазговора.Видимость = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "CLONПодключена"); //ЭлементыФормы.кнПрослушатьЗаписьТелРазговора.Доступность = CRMПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.CLONВозможноПрослушиваниеФайловЗаписи, Ложь, глЗначениеПеременной("глТекущийПользователь")); ЭлементыФормы.кнПрослушатьЗаписьТелРазговора.Видимость = Истина; ЭлементыФормы.кнПрослушатьЗаписьТелРазговора.Доступность = CRMПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.CLONВозможноПрослушиваниеФайловЗаписи, Ложь, глЗначениеПеременной("глТекущийПользователь")); // PT1C / Панель телефонии Asterisk / Конец // {{{ CLON Система записи телефонных разговоров }}} КОНЕЦ КонецПроцедуры
В дальнейшем, если пользователю разрешено прослушивать записи следует назначить ему дополнительную настройку:
Для возможности отправить факсов сформированную печатную форму в текущий разговор, необходимо модифицировать общую печатную форму CRM_ПечатнаяФормаДокументов.
Процедура ПриОткрытии() // PT1C / Панель телефонии Asterisk / Начало PT1C_ОправитьФаксом = ЭлементыФормы.ДействияФормы.Кнопки.Вставить(7,"PT1C_ОправитьФаксом",ТипКнопкиКоманднойПанели.Действие, "Отправить факсом текущий документ",Новый Действие("PT1C_ДействияФормы_ОправитьФаксом")); PT1C_ОправитьФаксом.Имя = "PT1C_ОправитьФаксом"; PT1C_ОправитьФаксом.Подсказка = "Отправляет текущий документ факсом"; PT1C_ОправитьФаксом.Доступность = Истина; PT1C_ОправитьФаксом.ИзменяетДанные = Ложь; PT1C_ОправитьФаксом.Пояснение = "Отправить в ттекущий разговор факсимильное сообщение"; PT1C_ОправитьФаксом.Картинка = БиблиотекаКартинок.CRM_ФаксКоммуникатор; // PT1C / Панель телефонии Asterisk / Конец // Сформеруем заголовок формы Конецпроцедуры //обработчик нажатия на кнопку отправки табличного документа в текущий разговор Процедура PT1C_ДействияФормы_ОправитьФаксом(Кнопка) Если НЕ РарусСофтФонЛайт = Неопределено И ТипЗнч(РарусСофтФонЛайт) = Тип("ОбработкаОбъект.МИКО_ПанельТелефонииДля1С") Тогда РарусСофтФонЛайт.ОтправитьФаксомТабДок(ЭлементыФормы.ТабличныйДокумент); КонецЕсли; КонецПроцедуры
Завершаем встраивание телефонии МИКО в 1С:CRM созданием роли «МИКО_ИспользованиеСофтфона». Это необходимо сделать для настройки прав доступа пользователей, которые будут пользоваться телефонией.
Обязательно укажите для пользователя роль «Использование панели телефонии Asterisk (МИКО)». Иначе первый запуск произвести невозможно.
На этом доработка завершена.