Здесь показаны различия между двумя версиями данной страницы.
sip:panelobprilvstraivanie [2013/02/20 07:51] apor [Документ Событие] |
sip:panelobprilvstraivanie [2014/11/14 22:32] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Настройка и подключение "SIP Софтфон для 1С" в режиме "Конфигуратор" ====== | ||
- | Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации УТ 10.3, что позволит использовать функционал панели в полной мере. | ||
- | |||
- | ===== Достоинства безинтеграционного режима работы: ===== | ||
- | |||
- | * Не требуется изменение конфигурации. Панель может быть запущена через главное меню **“Файл -Открыть”**. При этом доступен практически весь функционал панели. | ||
- | ===== Особенности и ограничения: ===== | ||
- | |||
- | * Для определения контрагента по номеру телефона используется временная таблица контактной информации, эта таблица обновляется с периодичностью, указанной в настройках панели. Врменная таблица - своего рода кэш контактной информации. | ||
- | * При формировании докумнта “Событие” средстави панели телефонии не сохраняется связка звонка и события, т.е. каждый раз будет создаваться новый документ “Событие”. | ||
- | * Нет возможности набирать номер телефона контрагента из его карточки. | ||
- | * Нет возможности отправки факса в текущий разговор средствами стандартной общей формы печати. | ||
- | * Пользователю необходим расширенный набор прав: разрешить открытие внешних обработок. | ||
- | |||
- | <note warning> Обращаем Ваше внимание, что версия платформы 1С:Предприятие должна быть **НЕ НИЖЕ** 8.2.15!!!</note> | ||
- | Самостоятельное встраивание телефонии должно производиться сотрудником строго по данной инструкции! Исполнитель инструкции должен четко понимать, что делает. | ||
- | |||
- | Для интеграции обработки софтфона «МИКО_SIP_Softfon_For_1С» в типовую конфигурацию 1С:Управление торговлей 10.3 необходимо выполнить ряд простых действий, описанных ниже. | ||
- | |||
- | <note warning> Перед началом интеграции настоятельно рекомендуем делать РЕЗЕРВНУЮ КОПИЮ вашей конфигурации!!! При несоблюдении данной рекомендации, а так же нарушения последовательности данной инструкции, наша компания не несет ответственность за сохранность Ваших данных.</note> | ||
- | |||
- | <note warning>Все шаги в рамках данной инструкции должны быть выполнены последовательно!</note> | ||
- | |||
- | ===== Этап 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" из каталога дистрибутива. | ||
- | <note important>После добавления обработки в дерево метаданных работа "без интеграционной" версии невозможна!</note> | ||
- | ===== Задача: Автооткрытие панели ===== | ||
- | Далее будет описан пример интеграции панели, в котором будет предложен вариант преодоления ограничений. | ||
- | |||
- | <note important>Обязательно перед началом работ выполняйте резервное копирование информационной базы!</note> | ||
- | |||
- | ------------------------------------------------------------------------------------------------ | ||
- | **Задача:** Необходимо открывать форму панели телефонии автоматически при старте 1С. | ||
- | |||
- | **Решение:** | ||
- | - Добавим в дерево метаданных обработку **"МИКО_SIP_Softfon_For_1С"** | ||
- | - Добавим в дерево метаданных новую роль: | ||
- | * Имя **"МИКО_ИспользованиеСофтфона"**. | ||
- | * Синоним **"Использование SIP Софтфона для 1С (МИКО)"**. | ||
- | Установить право "Администрирование данных". Эта роль необходима для возможности сохранения / восстановления настроек панели телефонии. | ||
- | {{ :sip:rolsip_1.png?nolink |}} | ||
- | |||
- | Установить право на чтение и использование обработки "МИКО_SIP_Softfon_For_1С". | ||
- | {{ :sip:rolsip_2.png?nolink |}} | ||
- | |||
- | - Модифицировать модуль обычного приложения | ||
- | Раздел определения переменных: | ||
- | |||
- | <code 1c> | ||
- | Перем глОбщиеЗначения Экспорт; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | // Обработка управления звонками | ||
- | Перем MIKO_SIP_Softfon Экспорт; | ||
- | // Эта переменная будет в дальнейшем использоваться для совершения звонков из документов и справочников // | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | Перем глЗапрашиватьПодтверждениеПриЗакрытии Экспорт; | ||
- | </code> | ||
- | |||
- | Процедуры - обработчики событий: | ||
- | |||
- | <code 1c> | ||
- | Процедура ПриНачалеРаботыСистемы() | ||
- | |||
- | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | |||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | // установка глобальных переменных | ||
- | Если РольДоступна("ПолныеПрава") | ||
- | ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда | ||
- | Попытка | ||
- | MIKO_SIP_Softfon = Обработки.МИКО_SIP_Softfon_For_1С.Создать(); | ||
- | MIKO_SIP_Softfon.ПодключитьСофтФон(); | ||
- | Исключение | ||
- | Сообщить("Ошибка подключения ""SIP Софтфон для 1С"" (МИКО):", СтатусСообщения.ОченьВажное); | ||
- | Сообщить(ОписаниеОшибки()); | ||
- | КонецПопытки; | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | |||
- | КонецПроцедуры // ПриНачалеРаботыСистемы() | ||
- | </code> | ||
- | |||
- | <code 1c> | ||
- | Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) | ||
- | |||
- | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | |||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И Источник = "MIKO_SoftPhone" Тогда | ||
- | MIKO_SIP_Softfon.ОбработкаВнешнегоСобытия_SIP(Источник, Событие, Данные); | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | |||
- | КонецПроцедуры // ОбработкаВнешнегоСобытия() | ||
- | </code> | ||
- | |||
- | <code 1c> | ||
- | Процедура ПередЗавершениемРаботыСистемы(Отказ) | ||
- | |||
- | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | |||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | // Завершим работу компонента | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено Тогда | ||
- | MIKO_SIP_Softfon.ОтключитьВК(); | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | ===== Документ "Событие" ===== | ||
- | |||
- | ------------------------------------------------------------------------------------------------ | ||
- | **Задача:** необходимо хранить связку документа события с записью в истории звонков. При открытии документа события из истории, должен открываться документ сформированный ранее по этой записи. | ||
- | |||
- | **Решение:** для документа "Событие" необходимо добавить новый реквизит: | ||
- | * Имя = "**CRM_GUIDЗвонка**" | ||
- | * Тип = **фиксированная строка 38** символов | ||
- | ------------------------------------------------------------------------------------------------ | ||
- | |||
- | **Задача:** необходимо добавить возможность набрать номер контрагента, либо его контактного лица из формы документа. | ||
- | |||
- | **Решение:** необходимо модифицировать модуль формы документа: | ||
- | <code 1c>// Обработчик события ПриОткрытии формы. | ||
- | // | ||
- | Процедура ПриОткрытии() | ||
- | | ||
- | // ... ... ... | ||
- | |||
- | мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтрагент = Контрагент; | ||
- | мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтактноеЛицо = КонтактноеЛицо; | ||
- | мТекущаяДатаДокумента = Дата; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | ||
- | МИКО_ОбщийМодуль = MIKO_SIP_Softfon.МИКО_ОбщийМодуль; | ||
- | // добавляем кнопку вызова | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, | ||
- | "МИКО_ВыполнитьДействие", | ||
- | "кнМИКО_НабратьНомерВыбравИзСписка"); | ||
- | // | ||
- | Если ЭтоНовый() | ||
- | И ЗначениеЗаполнено(CRM_GUIDЗвонка) | ||
- | И ОкончаниеСобытия <= НачалоСобытия Тогда | ||
- | ОкончаниеСобытия = НачалоСобытия + 60; | ||
- | КонецЕсли; | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | Модифицированность = Ложь; | ||
- | |||
- | КонецПроцедуры // ПриОткрытии()</code> | ||
- | |||
- | добавить в форму обработчик нажатия кнопок: | ||
- | <code 1c> | ||
- | // Обработка нажатия программно добавленных кнопок | ||
- | // | ||
- | Процедура МИКО_ВыполнитьДействие(Кнопка) | ||
- | Действие = Кнопка.Имя; | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено Тогда Возврат; КонецЕсли; | ||
- | |||
- | Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" Тогда | ||
- | // Позвонить по телефону выбранному пользователем из списка, определенных у контрагента и контактного лица | ||
- | СписокОбъектов = Новый Структура(); | ||
- | СписокОбъектов.Вставить("Контрагент", Контрагент); | ||
- | СписокОбъектов.Вставить("КонтактноеЛицо", КонтактноеЛицо); | ||
- | // Данные незарегистрированных контрагентов: | ||
- | СписокОбъектов.Вставить("Событие", Ссылка); | ||
- | |||
- | MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); | ||
- | КонецЕсли; | ||
- | КонецПроцедуры | ||
- | |||
- | </code> | ||
- | Документ при открытии будет выглядеть следующим образом: | ||
- | |||
- | {{ :doc:panel1cut:dokument_sobytie.jpg? |}} | ||
- | |||
- | ===== Контактная информация ===== | ||
- | |||
- | ------------------------------------------------------------------------------------------------ | ||
- | **Задача:** необходимо, для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений "КонтактнаяИнформация". | ||
- | |||
- | **Решение:** необходимо модифицировать регистр сведений **"КонтактнаяИнформация"**: | ||
- | Добавить ресурсы: | ||
- | * "**CRM_ПолеХраненияНомера**" (число длина 32) | ||
- | * "**CRM_НомерТелефона**" (переменная строка 32) | ||
- | |||
- | В модуле набора записей изменить процедуру: | ||
- | |||
- | <code 1c> | ||
- | Процедура ПередЗаписью(Отказ, Замещение) | ||
- | Если ОбменДанными.Загрузка Тогда | ||
- | Возврат; | ||
- | КонецЕсли; | ||
- | |||
- | Для каждого Запись Из ЭтотОбъект Цикл | ||
- | Если НЕ ЗначениеЗаполнено(Запись.Объект) Тогда | ||
- | Отказ = Истина; | ||
- | СтрокаОтказа = "Не заполнен объект."; | ||
- | Продолжить; | ||
- | КонецЕсли; | ||
- | Если Запись.Объект.ЭтоГруппа Тогда | ||
- | Отказ = Истина; | ||
- | СтрокаОтказа = "Нельзя использовать в качестве объекта контактной информации - группу."; | ||
- | Прервать; | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И НЕ MIKO_SIP_Softfon.МИКО_ОбщийМодуль = Неопределено | ||
- | И Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда | ||
- | МИКО_ПредставлениеНомера = Запись.Поле1 | ||
- | +Запись.Поле2 | ||
- | +Запись.Поле3; | ||
- | Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(МИКО_ПредставлениеНомера) Тогда | ||
- | Запись.CRM_ПолеХраненияНомера = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения(Запись.Поле4, MIKO_SIP_Softfon.глКоличествоХранимыхЦифрТелефона); | ||
- | Запись.CRM_НомерТелефона = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона (Запись.Поле4); | ||
- | Иначе | ||
- | Запись.CRM_ПолеХраненияНомера = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения (МИКО_ПредставлениеНомера, MIKO_SIP_Softfon.глКоличествоХранимыхЦифрТелефона); | ||
- | Запись.CRM_НомерТелефона = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона (МИКО_ПредставлениеНомера); | ||
- | КонецЕсли; | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | КонецЦикла; | ||
- | |||
- | Если Отказ Тогда | ||
- | Сообщить(СтрокаОтказа); | ||
- | КонецЕсли; | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом. | ||
- | |||
- | ===== Справочник "Контрагенты" ===== | ||
- | |||
- | ------------------------------------------------------------------------------------------------ | ||
- | **Задача:** необходимо, добавить возможность произвести звонок из карточки контрагента. | ||
- | |||
- | **Решение:** необходимо модифицировать форму элемента справочника "Контрагенты": | ||
- | <code 1c> | ||
- | // Обработчик события ПриОткрытии формы. | ||
- | // | ||
- | Процедура ПриОткрытии() | ||
- | |||
- | // ... ... ... Внимание!!! Отсутствует часть исходного кода!!! | ||
- | |||
- | // Установить печатную форму по умолчанию. | ||
- | РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма); | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | ||
- | МИКО_ОбщийМодуль = MIKO_SIP_Softfon.МИКО_ОбщийМодуль; | ||
- | // добавляем элементы управления на форму | ||
- | // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, // **Для БП 2.0** | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, | ||
- | "МИКО_ВыполнитьДействие", | ||
- | "кнМИКО_НабратьНомерВыбравИзСписка"); | ||
- | // добавляем кнопку на панель действий контактной информации. НЕ ДЛЯ БП 2.0 | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, // НЕ Для БП 2.0 | ||
- | "МИКО_ВыполнитьДействие", // НЕ Для БП 2.0 | ||
- | "кнМИКО_НабратьНомерИзКИ"); // НЕ Для БП 2.0 | ||
- | // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛица.Кнопки, // **Для БП 2.0** | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛицаКонтрагента.Кнопки, | ||
- | "МИКО_ВыполнитьДействие", | ||
- | "кнМИКО_НабратьНомерВыбравКЛ"); | ||
- | |||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | добавить обработчик нажатия кнопок: | ||
- | |||
- | <code 1c> | ||
- | // Набор номера по заданному алгоритму | ||
- | // | ||
- | Процедура МИКО_ВыполнитьДействие(Кнопка) | ||
- | Действие = Кнопка.Имя; | ||
- | // Если НЕ MIKO_SIP_Softfon.глИспользоватьСофтФонMIKO_AjamТекущийПользователь Тогда Возврат; КонецЕсли; | ||
- | |||
- | Если Действие = "кнМИКО_НабратьНомерИзКИ" Тогда | ||
- | // Позвонить по выбранному контакту | ||
- | ТекущаяСтрока = ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные; | ||
- | Если НЕ ТекущаяСтрока = Неопределено Тогда | ||
- | MIKO_SIP_Softfon.НабратьНомерКИ(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные); | ||
- | КонецЕсли; | ||
- | ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравИзСписка" ТОгда | ||
- | // Позвонить по телефону, выбранному пользователем из списка телефонов определенных у контрагента и контактного лица | ||
- | СписокОбъектов = Новый Структура(); | ||
- | СписокОбъектов.Вставить("Контрагент", Ссылка); | ||
- | СписокОбъектов.Вставить("КонтактноеЛицо", ОсновноеКонтактноеЛицо); | ||
- | Если НЕ Ссылка = ГоловнойКонтрагент Тогда | ||
- | СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); | ||
- | КонецЕсли; | ||
- | | ||
- | MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); | ||
- | ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда | ||
- | // Позовонить выбранному контактному лицу | ||
- | ТекущиеДанные = ЭлементыФормы.КонтактныеЛицаКонтрагента.ТекущиеДанные; | ||
- | Если НЕ ТекущиеДанные = Неопределено Тогда | ||
- | СписокОбъектов = Новый Структура(); | ||
- | СписокОбъектов.Вставить("КонтактноеЛицо", ТекущиеДанные.Ссылка); | ||
- | MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); | ||
- | КонецЕсли; | ||
- | ИначеЕсли Действие = "УстановитьДоступностьКнопокСофтфона" Тогда | ||
- | MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УстановитьДоступностьКнопокСофтфона(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные, | ||
- | ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, | ||
- | "кнМИКО_НабратьНомерИзКИ"); | ||
- | КонецЕсли; | ||
- | |||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | Кнопки должны быть доступны только для контактной информации с типом "Телефон" | ||
- | <code 1c> | ||
- | // Обработчик события ПриАктивизацииСтроки элемента формы КонтактнаяИнформация. | ||
- | // НЕ Для БП 2.0 | ||
- | Процедура КонтактнаяИнформацияПриАктивизацииСтроки(Элемент) | ||
- | |||
- | УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПриАктивизацииСтрокиТаблицы(Элемент, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки.УстановитьОсновным); | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | ||
- | МИКО_ВыполнитьДействие(Новый Структура("Имя","УстановитьДоступностьКнопокСофтфона")); | ||
- | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | ||
- | КонецПроцедуры | ||
- | </code> | ||
- | |||
- | Форма элемента справочника примет следующий вид: | ||
- | {{ :doc:panel1cut:forma_kontragenta.png? |}} |