====== Настройка и подключение "SIP Софтфон для 1С" в режиме "Конфигуратор" ====== Эта инструкция предназначена для версии 2.2.1.12 и выше. [[http://wiki.miko.ru/sip:panelobprilvstraivanie?rev=1361347573 | Инструкция к прошлым версиям...]] Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации УТ 10.3, что позволит использовать функционал панели в полной мере. ===== Достоинства безинтеграционного режима работы: ===== * Не требуется изменение конфигурации. Панель может быть запущена через главное меню **“Файл -Открыть”**. При этом доступен практически весь функционал панели. ===== Особенности и ограничения: ===== * Для определения контрагента по номеру телефона используется временная таблица контактной информации, эта таблица обновляется с периодичностью, указанной в настройках панели. Врменная таблица - своего рода кэш контактной информации. * При формировании докумнта “Событие” средстави панели телефонии не сохраняется связка звонка и события, т.е. каждый раз будет создаваться новый документ “Событие”. * Нет возможности набирать номер телефона контрагента из его карточки. * Нет возможности отправки факса в текущий разговор средствами стандартной общей формы печати. * Пользователю необходим расширенный набор прав: разрешить открытие внешних обработок. Обращаем Ваше внимание, что версия платформы 1С:Предприятие должна быть **НЕ НИЖЕ** 8.2.15!!! Самостоятельное встраивание телефонии должно производиться сотрудником строго по данной инструкции! Исполнитель инструкции должен четко понимать, что делает. Для интеграции обработки софтфона «МИКО_SIP_Softfon_For_1С» в типовую конфигурацию 1С:Управление торговлей 10.3 необходимо выполнить ряд простых действий, описанных ниже. Перед началом интеграции настоятельно рекомендуем делать РЕЗЕРВНУЮ КОПИЮ вашей конфигурации!!! При несоблюдении данной рекомендации, а так же нарушения последовательности данной инструкции, наша компания не несет ответственность за сохранность Ваших данных. Все шаги в рамках данной инструкции должны быть выполнены последовательно! ===== Этап 1. Включение возможности изменения конфигурации ===== Открываем 1С:Предприятие в режиме «**Конфигуратор**». Пользователь должен обладать "Полными правами". Первое, что нужно сделать – включить возможность изменения конфигурации. Для этого открываем меню в заданной последовательности * **«Конфигурация» - «Поддержка» - «Настройка поддержки…»**. {{ :sip:vkljuchit_vozmozhnost_izmenenija18_1.png?nolink | Включение возможности изменения конфигурации}} Далее настраиваем параметры поддержки конфигурации, как показано на рисунке. {{ :doc:podderzhka.jpg? |Настройка поддержки}} ===== Этап 2. Добавление обработки телефонии ===== Второе – необходимо добавить обработку «МИКО_SIP_Softfon_For_1С». В дереве конфигурации находим узел «Обработки» и правой кнопкой мыши открываем контекстное меню, выбираем * «**Вставить внешнюю обработку,отчет...**» {{ :sip:vstavit_obrabotku111_18_1.png?nolink | Добавление обработки телефонии}} Выбираем обработку "МИКО_SIP_Softfon_For_1С.epf" из каталога дистрибутива. После добавления обработки в дерево метаданных работа "без интеграционной" версии невозможна! ===== Задача: Автооткрытие панели ===== Далее будет описан пример интеграции панели, в котором будет предложен вариант преодоления ограничений. Обязательно перед началом работ выполняйте резервное копирование информационной базы! ------------------------------------------------------------------------------------------------ **Задача:** Необходимо открывать форму панели телефонии автоматически при старте 1С. **Решение:** - Добавим в дерево метаданных обработку **"МИКО_SIP_Softfon_For_1С"** - Добавим в дерево метаданных новую роль: * Имя **"МИКО_ИспользованиеСофтфона"**. * Синоним **"Использование SIP Софтфона для 1С (МИКО)"**. Установить право "Администрирование данных". Эта роль необходима для возможности сохранения / восстановления настроек панели телефонии. {{ :sip:rolsip_1.png?nolink |}} Установить право на чтение и использование обработки "МИКО_SIP_Softfon_For_1С". {{ :sip:rolsip_2.png?nolink |}} - Модифицировать модуль обычного приложения Раздел определения переменных: Перем глОбщиеЗначения Экспорт; // SP1C / SIP Софтфон для 1С / НАЧАЛО // Обработка управления звонками Перем MIKO_SIP_Softfon Экспорт; // Эта переменная будет в дальнейшем использоваться для совершения звонков из документов и справочников // // SP1C / SIP Софтфон для 1С / КОНЕЦ Перем глЗапрашиватьПодтверждениеПриЗакрытии Экспорт; Процедуры - обработчики событий: Процедура ПриНачалеРаботыСистемы() // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... #Если ТолстыйКлиентОбычноеПриложение Тогда // SP1C / SIP Софтфон для 1С / НАЧАЛО // установка глобальных переменных Если РольДоступна("ПолныеПрава") ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда Попытка MIKO_SIP_Softfon = Обработки.МИКО_SIP_Softfon_For_1С.Создать(); MIKO_SIP_Softfon.ПодключитьСофтФон(); Исключение Сообщить("Ошибка подключения ""SIP Софтфон для 1С"" (МИКО):", СтатусСообщения.ОченьВажное); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ #КонецЕсли КонецПроцедуры // ПриНачалеРаботыСистемы() Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // SP1C / SIP Софтфон для 1С / НАЧАЛО Если НЕ MIKO_SIP_Softfon = Неопределено И Источник = "MIKO_SoftPhone" Тогда MIKO_SIP_Softfon.ОбработкаВнешнегоСобытия_SIP(Источник, Событие, Данные); КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ КонецПроцедуры // ОбработкаВнешнегоСобытия() Процедура ПередЗавершениемРаботыСистемы(Отказ) // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // SP1C / SIP Софтфон для 1С / НАЧАЛО // Завершим работу компонента Если НЕ Отказ И НЕ MIKO_SIP_Softfon = Неопределено Тогда MIKO_SIP_Softfon.ОтключитьВК(); КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ КонецПроцедуры ===== Документ "Событие" ===== ------------------------------------------------------------------------------------------------ **Задача:** необходимо хранить связку документа события с записью в истории звонков. При открытии документа события из истории, должен открываться документ сформированный ранее по этой записи. **Решение:** для документа "Событие" необходимо добавить новый реквизит: * Имя = "**CRM_GUIDЗвонка**" * Тип = **фиксированная строка 38** символов ------------------------------------------------------------------------------------------------ **Задача:** необходимо добавить возможность набрать номер контрагента, либо его контактного лица из формы документа. **Решение:** необходимо модифицировать модуль формы документа: // Обработчик события ПриОткрытии формы. // Процедура ПриОткрытии() // ... ... ... мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтрагент = Контрагент; мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтактноеЛицо = КонтактноеЛицо; мТекущаяДатаДокумента = Дата; // SP1C / SIP Софтфон для 1С / НАЧАЛО Если НЕ MIKO_SIP_Softfon = Неопределено И НЕ MIKO_SIP_Softfon.мОбщийМодуль = Неопределено И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда мОбщийМодуль = MIKO_SIP_Softfon.мОбщийМодуль; // добавляем кнопку вызова мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравИзСписка"); // Если ЭтоНовый() И ОкончаниеСобытия <= НачалоСобытия Тогда ОкончаниеСобытия = НачалоСобытия + 60; КонецЕсли; КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ Модифицированность = Ложь; КонецПроцедуры // ПриОткрытии() добавить в форму обработчик нажатия кнопок: // SP1C / Обработка нажатия программно добавленных кнопок // Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; Если НЕ MIKO_SIP_Softfon = Неопределено Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" Тогда // Позвонить по телефону выбранному пользователем из списка, определенных у контрагента и контактного лица СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("Контрагент", Контрагент); СписокОбъектов.Вставить("КонтактноеЛицо", КонтактноеЛицо); // Данные незарегистрированных контрагентов: СписокОбъектов.Вставить("Событие", Ссылка); MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); КонецЕсли; КонецПроцедуры Документ при открытии будет выглядеть следующим образом: {{ :sip:dokument_sobytie_18_1.png?nolink | Документ "Соыбтие" на примере демонстрационной базы}} ===== Контактная информация ===== ------------------------------------------------------------------------------------------------ **Задача:** необходимо, для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений "КонтактнаяИнформация". **Решение:** необходимо модифицировать регистр сведений **"КонтактнаяИнформация"**: Добавить ресурсы: * "**CRM_ПолеХраненияНомера**" (число длина 32) * "**CRM_НомерТелефона**" (переменная строка 32) В модуле набора записей изменить процедуру: Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; Для каждого Запись Из ЭтотОбъект Цикл Если НЕ ЗначениеЗаполнено(Запись.Объект) Тогда Отказ = Истина; СтрокаОтказа = "Не заполнен объект."; Продолжить; КонецЕсли; Если Запись.Объект.ЭтоГруппа Тогда Отказ = Истина; СтрокаОтказа = "Нельзя использовать в качестве объекта контактной информации - группу."; Прервать; КонецЕсли; // SP1C / SIP Софтфон для 1С / НАЧАЛО Если НЕ MIKO_SIP_Softfon = Неопределено И НЕ MIKO_SIP_Softfon.мОбработкаДанных = Неопределено И Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда ПредставлениеНомера = Запись.Поле1 + Запись.Поле2 +Запись.Поле3; глКоличествоХранимыхЦифрТелефона = MIKO_SIP_Softfon.ГлобальныеПеременные.глКоличествоХранимыхЦифрТелефона; мОбработкаДанных = MIKO_SIP_Softfon.мОбработкаДанных; Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(ПредставлениеНомера) Тогда Запись.CRM_ПолеХраненияНомера = мОбработкаДанных.ПреобразоватьНомерДляСохранения(Запись.Поле4, глКоличествоХранимыхЦифрТелефона); Запись.CRM_НомерТелефона = мОбработкаДанных.УбратьИзНомераТелефонаВсеБуквы(Запись.Поле4); Иначе Запись.CRM_ПолеХраненияНомера = мОбработкаДанных.ПреобразоватьНомерДляСохранения(ПредставлениеНомера, глКоличествоХранимыхЦифрТелефона); Запись.CRM_НомерТелефона = мОбработкаДанных.УбратьИзНомераТелефонаВсеБуквы(ПредставлениеНомера); КонецЕсли; КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ КонецЦикла; Если Отказ Тогда Сообщить(СтрокаОтказа); КонецЕсли; КонецПроцедуры После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом. ===== Справочник "Контрагенты" ===== ------------------------------------------------------------------------------------------------ **Задача:** необходимо, добавить возможность произвести звонок из карточки контрагента. **Решение:** необходимо модифицировать форму элемента справочника "Контрагенты": // Обработчик события ПриОткрытии формы. // Процедура ПриОткрытии() // ... ... ... Внимание!!! Отсутствует часть исходного кода!!! // Установить печатную форму по умолчанию. РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма); // SP1C / SIP Софтфон для 1С / НАЧАЛО Если НЕ MIKO_SIP_Softfon = Неопределено И НЕ MIKO_SIP_Softfon.мОбщийМодуль = Неопределено И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда мОбщийМодуль = MIKO_SIP_Softfon.мОбщийМодуль; // добавляем элементы управления на форму // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, // **Для БП 2.0** мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравИзСписка"); // добавляем кнопку на панель действий контактной информации. НЕ ДЛЯ БП 2.0 мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, // НЕ Для БП 2.0 "МИКО_ВыполнитьДействие", // НЕ Для БП 2.0 "кнМИКО_НабратьНомерИзКИ"); // НЕ Для БП 2.0 // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛица.Кнопки, // **Для БП 2.0** мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛицаКонтрагента.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравКЛ"); КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ КонецПроцедуры добавить обработчик нажатия кнопок: // SP1C / Набор номера по заданному алгоритму // Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; // Если НЕ MIKO_SIP_Softfon.глИспользоватьСофтФонMIKO_AjamТекущийПользователь Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_НабратьНомерИзКИ" Тогда // Позвонить по выбранному контакту ТекущаяСтрока = ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные; Если НЕ ТекущаяСтрока = Неопределено Тогда MIKO_SIP_Softfon.НабратьНомерКИ(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные); КонецЕсли; ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравИзСписка" ТОгда // Позвонить по телефону, выбранному пользователем из списка телефонов определенных у контрагента и контактного лица СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("Контрагент", Ссылка); СписокОбъектов.Вставить("КонтактноеЛицо", ОсновноеКонтактноеЛицо); Если НЕ Ссылка = ГоловнойКонтрагент Тогда СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); КонецЕсли; MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда // Позовонить выбранному контактному лицу ТекущиеДанные = ЭлементыФормы.КонтактныеЛицаКонтрагента.ТекущиеДанные; Если НЕ ТекущиеДанные = Неопределено Тогда СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("КонтактноеЛицо", ТекущиеДанные.Ссылка); MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); КонецЕсли; ИначеЕсли Действие = "УстановитьДоступностьКнопокСофтфона" Тогда MIKO_SIP_Softfon.мОбщийМодуль.УстановитьДоступностьКнопокСофтфона(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, "кнМИКО_НабратьНомерИзКИ"); КонецЕсли; КонецПроцедуры Кнопки должны быть доступны только для контактной информации с типом "Телефон" // Обработчик события ПриАктивизацииСтроки элемента формы КонтактнаяИнформация. // НЕ Для БП 2.0 Процедура КонтактнаяИнформацияПриАктивизацииСтроки(Элемент) УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПриАктивизацииСтрокиТаблицы(Элемент, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки.УстановитьОсновным); // SP1C / SIP Софтфон для 1С / НАЧАЛО Если НЕ MIKO_SIP_Softfon = Неопределено И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда МИКО_ВыполнитьДействие(Новый Структура("Имя","УстановитьДоступностьКнопокСофтфона")); КонецЕсли; // SP1C / SIP Софтфон для 1С / КОНЕЦ КонецПроцедуры Форма элемента справочника примет следующий вид: {{ :doc:panel1cut:forma_kontragenta.png? |}}