====== Настройка и подключение "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? |}}