Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
sip:panelobprilvstraivanie [2013/02/20 07:33] apor [Этап 2. Добавление обработки телефонии] |
sip:panelobprilvstraivanie [2014/11/14 22:32] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Настройка и подключение "SIP Софтфон для 1С" в режиме "Конфигуратор" ====== | ====== Настройка и подключение "SIP Софтфон для 1С" в режиме "Конфигуратор" ====== | ||
+ | |||
+ | <note important>Эта инструкция предназначена для версии 2.2.1.12 и выше. [[http://wiki.miko.ru/sip:panelobprilvstraivanie?rev=1361347573 | Инструкция к прошлым версиям...]]</note> | ||
Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации УТ 10.3, что позволит использовать функционал панели в полной мере. | Панель телефонии может работать в безинтеграцонном режиме. В этом разделе будут описаны достоинства и недостатки данного режима работы. Кроме того, будет описан способ интеграции панели на примере конфигурации УТ 10.3, что позволит использовать функционал панели в полной мере. | ||
Строка 56: | Строка 58: | ||
- Добавим в дерево метаданных новую роль: | - Добавим в дерево метаданных новую роль: | ||
* Имя **"МИКО_ИспользованиеСофтфона"**. | * Имя **"МИКО_ИспользованиеСофтфона"**. | ||
- | * Синоним **"Использование панели телефонии Asterisk (МИКО)"**. | + | * Синоним **"Использование SIP Софтфона для 1С (МИКО)"**. |
- | Установить права на чтение и использование обработки "МИКО_SIP_Softfon_For_1С". | + | Установить право "Администрирование данных". Эта роль необходима для возможности сохранения / восстановления настроек панели телефонии. |
+ | {{ :sip:rolsip_1.png?nolink |}} | ||
+ | |||
+ | Установить право на чтение и использование обработки "МИКО_SIP_Softfon_For_1С". | ||
+ | {{ :sip:rolsip_2.png?nolink |}} | ||
- Модифицировать модуль обычного приложения | - Модифицировать модуль обычного приложения | ||
Раздел определения переменных: | Раздел определения переменных: | ||
Строка 63: | Строка 70: | ||
<code 1c> | <code 1c> | ||
Перем глОбщиеЗначения Экспорт; | Перем глОбщиеЗначения Экспорт; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
// Обработка управления звонками | // Обработка управления звонками | ||
- | Перем MIKO_SIP_Softfon Экспорт; | + | Перем MIKO_SIP_Softfon Экспорт; |
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // Эта переменная будет в дальнейшем использоваться для совершения звонков из документов и справочников // |
+ | // SP1C / SIP Софтфон для 1С / КОНЕЦ | ||
Перем глЗапрашиватьПодтверждениеПриЗакрытии Экспорт; | Перем глЗапрашиватьПодтверждениеПриЗакрытии Экспорт; | ||
</code> | </code> | ||
Строка 77: | Строка 85: | ||
// ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | #Если ТолстыйКлиентОбычноеПриложение Тогда |
- | // установка глобадьных переменных | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
+ | // установка глобальных переменных | ||
Если РольДоступна("ПолныеПрава") | Если РольДоступна("ПолныеПрава") | ||
ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда | ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда | ||
Строка 89: | Строка 98: | ||
КонецПопытки; | КонецПопытки; | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
+ | #КонецЕсли | ||
КонецПроцедуры // ПриНачалеРаботыСистемы() | КонецПроцедуры // ПриНачалеРаботыСистемы() | ||
Строка 99: | Строка 109: | ||
// ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
Если НЕ MIKO_SIP_Softfon = Неопределено | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
И Источник = "MIKO_SoftPhone" Тогда | И Источник = "MIKO_SoftPhone" Тогда | ||
MIKO_SIP_Softfon.ОбработкаВнешнегоСобытия_SIP(Источник, Событие, Данные); | MIKO_SIP_Softfon.ОбработкаВнешнегоСобытия_SIP(Источник, Событие, Данные); | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
КонецПроцедуры // ОбработкаВнешнегоСобытия() | КонецПроцедуры // ОбработкаВнешнегоСобытия() | ||
Строка 114: | Строка 124: | ||
// ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
// Завершим работу компонента | // Завершим работу компонента | ||
- | Если НЕ MIKO_SIP_Softfon = Неопределено Тогда | + | Если НЕ Отказ И НЕ MIKO_SIP_Softfon = Неопределено Тогда |
MIKO_SIP_Softfon.ОтключитьВК(); | MIKO_SIP_Softfon.ОтключитьВК(); | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
КонецПроцедуры | КонецПроцедуры | ||
</code> | </code> | ||
- | |||
===== Документ "Событие" ===== | ===== Документ "Событие" ===== | ||
Строка 146: | Строка 155: | ||
мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтактноеЛицо = КонтактноеЛицо; | мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтактноеЛицо = КонтактноеЛицо; | ||
мТекущаяДатаДокумента = Дата; | мТекущаяДатаДокумента = Дата; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
- | Если НЕ MIKO_SIP_Softfon = Неопределено | + | Если НЕ MIKO_SIP_Softfon = Неопределено |
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | + | И НЕ MIKO_SIP_Softfon.мОбщийМодуль = Неопределено |
- | МИКО_ОбщийМодуль = MIKO_SIP_Softfon.МИКО_ОбщийМодуль; | + | И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда |
+ | мОбщийМодуль = MIKO_SIP_Softfon.мОбщийМодуль; | ||
// добавляем кнопку вызова | // добавляем кнопку вызова | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, | + | мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, |
"МИКО_ВыполнитьДействие", | "МИКО_ВыполнитьДействие", | ||
"кнМИКО_НабратьНомерВыбравИзСписка"); | "кнМИКО_НабратьНомерВыбравИзСписка"); | ||
+ | // | ||
+ | Если ЭтоНовый() | ||
+ | И ОкончаниеСобытия <= НачалоСобытия Тогда | ||
+ | ОкончаниеСобытия = НачалоСобытия + 60; | ||
+ | КонецЕсли; | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
Модифицированность = Ложь; | Модифицированность = Ложь; | ||
Строка 162: | Строка 178: | ||
добавить в форму обработчик нажатия кнопок: | добавить в форму обработчик нажатия кнопок: | ||
<code 1c> | <code 1c> | ||
- | // Набор номера по заданному алгоритму | + | // SP1C / Обработка нажатия программно добавленных кнопок |
// | // | ||
Процедура МИКО_ВыполнитьДействие(Кнопка) | Процедура МИКО_ВыполнитьДействие(Кнопка) | ||
Действие = Кнопка.Имя; | Действие = Кнопка.Имя; | ||
- | Если НЕ MIKO_SIP_Softfon.МИКО_ИспользоватьСофтФон Тогда Возврат; КонецЕсли; | + | Если НЕ MIKO_SIP_Softfon = Неопределено Тогда Возврат; КонецЕсли; |
Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" Тогда | Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" Тогда | ||
Строка 179: | Строка 195: | ||
КонецЕсли; | КонецЕсли; | ||
КонецПроцедуры | КонецПроцедуры | ||
+ | |||
</code> | </code> | ||
Документ при открытии будет выглядеть следующим образом: | Документ при открытии будет выглядеть следующим образом: | ||
- | + | {{ :sip:dokument_sobytie_18_1.png?nolink | Документ "Соыбтие" на примере демонстрационной базы}} | |
- | {{ :doc:panel1cut:dokument_sobytie.jpg? |}} | + | |
===== Контактная информация ===== | ===== Контактная информация ===== | ||
Строка 188: | Строка 204: | ||
------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ||
**Задача:** необходимо, для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений "КонтактнаяИнформация". | **Задача:** необходимо, для поиска номеров в базе использовать запрос не по временной таблице, а непосредственно по регистру сведений "КонтактнаяИнформация". | ||
- | |||
**Решение:** необходимо модифицировать регистр сведений **"КонтактнаяИнформация"**: | **Решение:** необходимо модифицировать регистр сведений **"КонтактнаяИнформация"**: | ||
Добавить ресурсы: | Добавить ресурсы: | ||
Строка 213: | Строка 228: | ||
Прервать; | Прервать; | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
Если НЕ MIKO_SIP_Softfon = Неопределено | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И НЕ MIKO_SIP_Softfon.МИКО_ОбщийМодуль = Неопределено | + | И НЕ MIKO_SIP_Softfon.мОбработкаДанных = Неопределено |
- | И Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда | + | И Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда |
- | МИКО_ПредставлениеНомера = Запись.Поле1 | + | |
- | +Запись.Поле2 | + | ПредставлениеНомера = Запись.Поле1 + Запись.Поле2 +Запись.Поле3; |
- | +Запись.Поле3; | + | глКоличествоХранимыхЦифрТелефона = MIKO_SIP_Softfon.ГлобальныеПеременные.глКоличествоХранимыхЦифрТелефона; |
- | Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(МИКО_ПредставлениеНомера) Тогда | + | мОбработкаДанных = MIKO_SIP_Softfon.мОбработкаДанных; |
- | Запись.CRM_ПолеХраненияНомера = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения(Запись.Поле4, MIKO_SIP_Softfon.глКоличествоХранимыхЦифрТелефона); | + | Если ЗначениеЗаполнено(Запись.Поле4) И НЕ ЗначениеЗаполнено(ПредставлениеНомера) Тогда |
- | Запись.CRM_НомерТелефона = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона (Запись.Поле4); | + | Запись.CRM_ПолеХраненияНомера = мОбработкаДанных.ПреобразоватьНомерДляСохранения(Запись.Поле4, глКоличествоХранимыхЦифрТелефона); |
+ | Запись.CRM_НомерТелефона = мОбработкаДанных.УбратьИзНомераТелефонаВсеБуквы(Запись.Поле4); | ||
Иначе | Иначе | ||
- | Запись.CRM_ПолеХраненияНомера = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ПреобразоватьНомерДляСохранения (МИКО_ПредставлениеНомера, MIKO_SIP_Softfon.глКоличествоХранимыхЦифрТелефона); | + | Запись.CRM_ПолеХраненияНомера = мОбработкаДанных.ПреобразоватьНомерДляСохранения(ПредставлениеНомера, глКоличествоХранимыхЦифрТелефона); |
- | Запись.CRM_НомерТелефона = MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УдалитьБуквыИзНомераТелефона (МИКО_ПредставлениеНомера); | + | Запись.CRM_НомерТелефона = мОбработкаДанных.УбратьИзНомераТелефонаВсеБуквы(ПредставлениеНомера); |
КонецЕсли; | КонецЕсли; | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
КонецЦикла; | КонецЦикла; | ||
Строка 239: | Строка 255: | ||
После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом. | После этого, добавленные ранее ресурсы, будут заполняться надлежащим образом. | ||
- | |||
===== Справочник "Контрагенты" ===== | ===== Справочник "Контрагенты" ===== | ||
Строка 255: | Строка 270: | ||
// Установить печатную форму по умолчанию. | // Установить печатную форму по умолчанию. | ||
РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма); | РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма); | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
- | Если НЕ MIKO_SIP_Softfon = Неопределено | + | Если НЕ MIKO_SIP_Softfon = Неопределено |
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | + | И НЕ MIKO_SIP_Softfon.мОбщийМодуль = Неопределено |
- | МИКО_ОбщийМодуль = MIKO_SIP_Softfon.МИКО_ОбщийМодуль; | + | И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда |
+ | мОбщийМодуль = MIKO_SIP_Softfon.мОбщийМодуль; | ||
// добавляем элементы управления на форму | // добавляем элементы управления на форму | ||
// МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, // **Для БП 2.0** | // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, // **Для БП 2.0** | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, | + | мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, |
"МИКО_ВыполнитьДействие", | "МИКО_ВыполнитьДействие", | ||
"кнМИКО_НабратьНомерВыбравИзСписка"); | "кнМИКО_НабратьНомерВыбравИзСписка"); | ||
// добавляем кнопку на панель действий контактной информации. НЕ ДЛЯ БП 2.0 | // добавляем кнопку на панель действий контактной информации. НЕ ДЛЯ БП 2.0 | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, // НЕ Для БП 2.0 | + | мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, // НЕ Для БП 2.0 |
"МИКО_ВыполнитьДействие", // НЕ Для БП 2.0 | "МИКО_ВыполнитьДействие", // НЕ Для БП 2.0 | ||
"кнМИКО_НабратьНомерИзКИ"); // НЕ Для БП 2.0 | "кнМИКО_НабратьНомерИзКИ"); // НЕ Для БП 2.0 | ||
// МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛица.Кнопки, // **Для БП 2.0** | // МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛица.Кнопки, // **Для БП 2.0** | ||
- | МИКО_ОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛицаКонтрагента.Кнопки, | + | мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛицаКонтрагента.Кнопки, |
"МИКО_ВыполнитьДействие", | "МИКО_ВыполнитьДействие", | ||
"кнМИКО_НабратьНомерВыбравКЛ"); | "кнМИКО_НабратьНомерВыбравКЛ"); | ||
- | |||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
КонецПроцедуры | КонецПроцедуры | ||
</code> | </code> | ||
Строка 281: | Строка 296: | ||
<code 1c> | <code 1c> | ||
- | // Набор номера по заданному алгоритму | + | // SP1C / Набор номера по заданному алгоритму |
// | // | ||
Процедура МИКО_ВыполнитьДействие(Кнопка) | Процедура МИКО_ВыполнитьДействие(Кнопка) | ||
Действие = Кнопка.Имя; | Действие = Кнопка.Имя; | ||
// Если НЕ MIKO_SIP_Softfon.глИспользоватьСофтФонMIKO_AjamТекущийПользователь Тогда Возврат; КонецЕсли; | // Если НЕ MIKO_SIP_Softfon.глИспользоватьСофтФонMIKO_AjamТекущийПользователь Тогда Возврат; КонецЕсли; | ||
- | + | ||
Если Действие = "кнМИКО_НабратьНомерИзКИ" Тогда | Если Действие = "кнМИКО_НабратьНомерИзКИ" Тогда | ||
// Позвонить по выбранному контакту | // Позвонить по выбранному контакту | ||
Строка 301: | Строка 316: | ||
СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); | СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); | ||
КонецЕсли; | КонецЕсли; | ||
- | | + | |
MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); | MIKO_SIP_Softfon.ПозвонитьВыбравТелефон(СписокОбъектов); | ||
ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда | ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда | ||
Строка 312: | Строка 327: | ||
КонецЕсли; | КонецЕсли; | ||
ИначеЕсли Действие = "УстановитьДоступностьКнопокСофтфона" Тогда | ИначеЕсли Действие = "УстановитьДоступностьКнопокСофтфона" Тогда | ||
- | MIKO_SIP_Softfon.МИКО_ОбщийМодуль.УстановитьДоступностьКнопокСофтфона(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные, | + | MIKO_SIP_Softfon.мОбщийМодуль.УстановитьДоступностьКнопокСофтфона(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные, |
ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, | ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, | ||
"кнМИКО_НабратьНомерИзКИ"); | "кнМИКО_НабратьНомерИзКИ"); | ||
КонецЕсли; | КонецЕсли; | ||
+ | |||
КонецПроцедуры | КонецПроцедуры | ||
+ | |||
</code> | </code> | ||
Строка 327: | Строка 343: | ||
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПриАктивизацииСтрокиТаблицы(Элемент, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки.УстановитьОсновным); | УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПриАктивизацииСтрокиТаблицы(Элемент, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки.УстановитьОсновным); | ||
- | // МИКО / SIP Софтфон для 1С / НАЧАЛО | + | // SP1C / SIP Софтфон для 1С / НАЧАЛО |
Если НЕ MIKO_SIP_Softfon = Неопределено | Если НЕ MIKO_SIP_Softfon = Неопределено | ||
- | И MIKO_SIP_Softfon.МИКО_ОбщийМодуль.ИспользоватьСофтФон() Тогда | + | И MIKO_SIP_Softfon.мОбщийМодуль.ИспользоватьСофтФон() Тогда |
МИКО_ВыполнитьДействие(Новый Структура("Имя","УстановитьДоступностьКнопокСофтфона")); | МИКО_ВыполнитьДействие(Новый Структура("Имя","УстановитьДоступностьКнопокСофтфона")); | ||
КонецЕсли; | КонецЕсли; | ||
- | // МИКО / SIP Софтфон для 1С / КОНЕЦ | + | // SP1C / SIP Софтфон для 1С / КОНЕЦ |
КонецПроцедуры | КонецПроцедуры | ||
</code> | </code> |