====== ИНТЕГРАЦИЯ СОФТФОНА С КОНФИГУРАЦИЯМИ БЕЗ CRM ====== Руководство составлено для SIP софтфона версии 2.X.14.2 и **может быть не актуальным** для других версий.\\ Прежде чем приступить к выполнению действий из данного руководства, сделайте **РЕЗЕРВНУЮ КОПИЮ** информационной базы. Руководство содержит подробные пошаговые инструкции. Однако, если Вы не уверены в том, что делаете, то доверьте эту работу специалистам. Наша компания не несет ответственности за потерю данных вызванную неверными действиями пользователей. Данное практическое руководство демонстрирует процесс встраивания софтфона в конфигурацию не имеющую встроенного блока CRM. Инструкция одинаково подходит для: * "1С:Управление небольшой фирмой, редакция 1.4"; * "1С:Управление торговлей, редакция 11.1". Что дает интеграция в сравнении с без интеграционным режимом работы? - **Ведется журналирование** входящих и исходящих звонков. - Не нужно выполнять каких-либо дополнительных действий при запуске системы. Софтфон **начинает работу сразу** после запуска 1С в свернутом виде. - Работа продолжается даже после закрытия окна софтфона. Если **поступит** входящий **звонок, окно** софтфона **отобразиться на экране**. - **Сделать звонок** можно не только из окна софтфона, но и **кнопками "Позвонить"**, расположенными в карточках контрагентов и различных документах. ===== Этап 1. Настройка правил поддержки ===== Для начала следует разблокировать головной объект конфигурации для внесения изменений. Порядок действий следующий. - **Запустите** программу в режиме **"Конфигуратор"**. - Откройте окно **настройки поддержки**. {{ :doc:panel1ccrm20:support.png?nolink |}} - **Включите** возможность **изменения конфигурации**. На предупреждение программы ответьте утвердительно. - В появившемся окне укажите, что **объекты поставщика не редактируются**. {{ :doc:panel1ccrm20:rules.png?nolink |}} - Затем **для головного объекта** конфигурации (//"УправлениеНебольшойФирмой"//) установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. {{ :sip:headerrules.png?nolink |}} Теперь конфигурация готова к внесению изменений. ===== Этап 2. Встраивание софтфона ===== Необходимо встроить внешнюю обработку (софтфон) в конфигурации, настроить права доступа и автоматический запуск в фоновом режиме. ==== Изменение типовых объектов ==== Для работы софтфона в фоне и его автоматического запуска внесем изменения в модуль управляемого приложения. - Откройте **модуль управляемого приложения**. {{ :doc:panel1ccrm20:openctrlapp.png?nolink |}} - Определите **глобальную переменную** в начале модуля до раздела процедур. // SP1C / Объявление переменных / Начало Перем сфпФормаТелефон Экспорт; // SP1C / Объявление переменных / Конец - Перейдите к процедуре //"ПриНачалеРаботыСистемы"//. В конец процедуры вставьте код приведенный ниже. // SP1C / Инициализация софтфона / Начало #Если НЕ ВебКлиент Тогда Если МИКО_Софтфон.МожноИспользовать() Тогда Попытка // Получим форму инциализации софтфона ОткрытьФорму("Обработка.МИКО_СофтФон.Форма", Новый Структура("Интегрирован", Истина)); Исключение // Нет прав на обработку КонецПопытки; КонецЕсли; #КонецЕсли // SP1C / Инициализация софтфона / Конец - Перейдите к процедуре //"ПередЗавершениемРаботыСистемы"//. В конец процедуры вставьте код приведенный ниже. // SP1C / Завершение работы софтфона / Начало Если Отказ = Ложь И сфпФормаТелефон <> Неопределено Тогда сфпФормаТелефон.ЗавершитьРаботу(); КонецЕсли; // SP1C / Завершение работы софтфона / Конец - Создайте общий модуль //"МИКО_Софтфон"//. Установите параметры модуля как показано на рисунке. {{ :doc:panel1ccrm20:moduleproperties.png?nolink |}} - Скопируйте [[astpanel:designer:unf:modulesrc|текст, расположенный по данной ссылке]], и вставьте его в модуль. ==== Добавление обработки и подсистемы в конфигурацию ==== - **Вставьте внешнюю обработку**, которая идет в поставке, в конфигурацию. Назовите ее //"МИКО_СофтФон"//. - **Добавьте** в обработку //"МИКО_СофтФон"// **команду** //"Открыть"//. - **Установите** для созданной команды **свойство** //"Группа"// в значение //"Панель навигации.Важное"//.{{ :doc:panel1cunf:commandopen.png?nolink |}} - Для созданной команды //"Открыть"// требуется **описать обработчик**.&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Если сфпФормаТелефон <> Неопределено Тогда Если сфпФормаТелефон.Открыта() Тогда сфпФормаТелефон.Активизировать(); Иначе сфпФормаТелефон.Открыть(); КонецЕсли; КонецЕсли; КонецПроцедуры - Далее **создайте новую подсистему** //"МИКО_Телефония"// и включите в ее состав обработку //"МИКО_СофтФон"//. - В командном интерфейсе **отключите запуск обработки** из панели действий "Сервис" {{ :sip:cmdinterface.png?nolink |}} ==== Настройка ролей ==== - **Добавьте** в конфигурацию новую **роль** //"МИКО_ИспользованиеСофтфона"//. - **Снимите** все **отметки** о правах выставляемые **по умолчанию**. - Для обработки //"МИКО_СофтФон"//, для команды //"Открыть"//, а также для подсистемы //"МИКО_Телефония"// **отметьте все** доступные **права**. {{ :sip:roles.png?nolink |}} - Добавьте роль в состав подсистемы //"МИКО_Телефония"//. - Обновите конфигурацию базы данных. {{ :doc:panel1ccrm20:confupd.png?nolink |}} Это минимальный набор действий. Далее можно переходить к [[astpanel:enterprise:managed |настройке в режиме 1С:Предприятие 8]], шаги описанные ниже являются опциональными. ===== Этап 3. Создание журнала звонков ===== История совершенных звонков хранится в периодическом регистре сведений. Каждой записи присваивается уникальный идентификатор, по которому ее можно однозначно идентифицировать и связать с документом "Событие". **Создайте** новый **регистр** //СофтФон_ИсторияЗвонков//. В параметре **Периодичность** укажите значение **В пределах секунды**. Структура регистра показана на рисунке слева. {{:sip:registr_svedenij.png? |}} * Измерение **Пользователь**. Тип **СправочникСсылка.Пользователи**. Индексировать. * Ресурс **НомерТелефона**. Тип **Строка**, длина **20**, допустимая длина **Переменная**. * Ресурс **Входящий**. Тип **Булево**. * Ресурс **Аккаунт**. Тип **Строка**, длина **25**, допустимая длина **Переменная**. * Ресурс **Продолжительность**. Тип **Число**, длина **6**, точность **0**, неотрицательное **Истина**. * Реквизит **id**. Тип **Строка**, длина **36**, допустимая длина **Фиксированная**. **Настройте** ранее созданную **роль** //"МИКО_ИспользованиеСофтфона"// для чтения и записи в регистр. Однако, интерактивное редактирование записей следует запретить. Также следует **создать форму** записи регистра и установить ее свойство //"Доступность"// в //"Ложь"//. В противном случае пользователи с полными правами смогут изменять записи журнала звонков. ===== Этап 4. Добавление кнопки "Позвонить" в командную область форм справочников и документов ===== Для автоматизации набора номера телефона добавим кнопку //"Позвонить"// в область команд форм некоторых справочников и документов. Порядок действий следующий. - **Добавьте** в обработку //"МИКО_СофтФон"// **команду** //"Позвонить"// и поместите в модуль команды [[astpanel:designer:unf:modulecall|текст, расположенный по данной ссылке]]. - **Установите свойство** //"Группа"// в значение //"Командная панель формы.Важное"//.{{ :doc:panel1cunf:commandcall.png?nolink |}} - Свойство //"Тип параметра команды"// должно иметь составной тип данных: * //СправочникСсылка.КонтактныеЛица//; * //СправочникСсылка.Контрагент//; * //ДокументСсылка.Событие//; * //ДокументСсылка.ЗаказПокупателя//; * //ДокументСсылка.ЗаказПоставщику//. Вы может указать и другие типы объектов, в которых будет отображена команда //"Позвонить"//. Основным критерием для выбора таких объектов является наличие табличной части //"КонтактнаяИнформация"//, если это справочник, или реквизита //"Контрагент"//, если это документ. В ином случае может потребоваться изменение текста модуля команды. При желании можно добавить картинку на кнопку команды, предварительно разместив ее в библиотеке картинок. - Раскройте дерево конфигурации на группе //"Общие картинки"// и добавьте в нее новый элемент //"МИКО_Телефон"//. - Загрузите в созданный объект изображение для кнопки //"Позвонить"// ({{:doc:phonegray.png?nolink|}}). - Вернитесь к команде //"Позвонить"// обработки //"МИКО_СофтФон"// и заполните свойства //"Отображение"// в значение //"Картинка и текст"//, //"Картинка"// в значение //"МИКО_Телефон"//. Для ранее созданной роли //"МИКО_ИспользованиеСофтфона"// **добавьте права** на доступ к команде //"Позвонить"//. Обновите конфигурацию базы данных и запустите программу в режиме //"Предприятие"//. Результат работы показан на рисунке ниже. {{ :doc:panel1cunf:showcommandcall.png?nolink |}} ===== Этап 5. Добавление кнопки "Позвонить" на закладку контактной информации справочников ===== В формах некоторых справочников (например, //"Контрагент"//) присутствует закладка //"Контактная информация"//. Для полей адреса и электронной почты уже разработан механизм добавляющий кнопку с соответствующим действием. Добавим для поля телефон аналогичную кнопку с действием //"Позвонить"//. Порядок действий следующий. - Откройте окно настройки поддержки и установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"// для объектов: * //ОбщийМодуль.УправлениеКонтактнойИнформацией//; * //ОбщийМодуль.УправлениеКонтактнойИнформациейКлиент//. - Откройте модуль //"УправлениеКонтактнойИнформацией"// и перейдите к процедуре //"Действие"//. - Измените текст процедуры как показано ниже. Функция Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий = Ложь) Если (Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница // SP1C / Добавим новый тип контактной информации / Начало Или Тип = Перечисления.ТипыКонтактнойИнформации.Телефон // SP1C / Добавим новый тип контактной информации / Конец Или Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) Или (Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И КоличествоАдресов > 1) Тогда // Есть действие ... Если Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда ... ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда ... ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда ... // SP1C / Обработаем новый тип контактной информации / Начало ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда Элемент.Заголовок = НСтр("ru='Позвонить'"); Команда.Подсказка = НСтр("ru='Позвонить'"); Команда.Картинка = БиблиотекаКартинок.МИКО_Телефон; // SP1C / Обработаем новый тип контактной информации / Конец КонецЕсли; ... Иначе ... КонецЕсли; Возврат Элемент; КонецФункции - Откройте модуль //"УправлениеКонтактнойИнформациейКлиент"// и перейдите к процедуре //"ПодключаемаяКоманда"//. - Измените текст процедуры как показано ниже. Функция ПодключаемаяКоманда(Форма, Знач ИмяКоманды) Экспорт ... Если КомандаКонтекстногоМеню Тогда ... Иначе Если ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда ... ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда ... ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда ... // SP1C / Обработаем событие нажатия на копку позвонить / Начало ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда ПозвонитьПоТелефону(Форма, ИмяРеквизита); // SP1C / Обработаем событие нажатия на копку позвонить / Конец КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции - Затем добавьте в этот модуль процедуру //"ПозвонитьПоТелефону"// с [[astpanel:designer:unf:proccall|текстом, расположенным по данной ссылке]]. Обновите конфигурацию базы данных и запустите программу в режиме //"Предприятие"//. Результат работы показан на рисунке ниже. {{ :doc:panel1cunf:showbuttoncall.png?nolink |}} ===== Этап 6. Добавление кнопки "Позвонить" на боковую панель контактной информации ===== Только для "1С:Управление небольшой фирмой" В формах некоторых справочников (например, //"Контрагент"//) и документов (например, //"Заказ покупателя"//) присутствует панель отображающая информацию с контактами. Для поля электронной почты присутствует кнопка с соответствующим действием. Добавим для поля телефон аналогичную кнопку с действием //"Позвонить"//. К сожалению, конфигурация УНФ, актуальной на момент на писания статьи версии 1.4.9.19, имеет структуру не позволяющую реализовать данный механизм "красиво" с минимальными изменениями. Дальнейшая инструкция может показаться не логичной, т.к. механизмы конфигурации используются не по их прямому назначению. Результат не приносит ощутимой пользы в дополнение к предыдущему и потому не рекомендуется для повторения в реальных информационных базах. **Инструкция создана исключительно для демонстрации возможностей по интеграции.** Порядок действий следующий. - Откройте окно настройки поддержки и установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"// для объектов: * //ОбщийМодуль.ДополнительныеОтчетыИОбработки//; * //ОбщийМодуль.ИнформационныйЦентрКлиент//. - Откройте модуль //"ДополнительныеОтчетыИОбработки"// и перейдите к процедуре //"ПриСозданииНаСервере"//. - Добавьте в конец процедуры код приведенный ниже.Процедура ПриСозданииНаСервере(ЭтаФорма) Экспорт ... // SP1C / Добавим кнопку в панель контактной информации / Начало МИКО_Софтфон.ДобавитьКнопкиНаПанельКИ(ЭтаФорма); // SP1C / Добавим кнопку в панель контактной информации / Конец КонецПроцедуры - Откройте модуль //"ИнформационныйЦентрКлиент"// и перейдите к процедуре //"НажатиеНаИнформационнуюСсылку"//. - Измените текст процедуры как показано ниже.Процедура НажатиеНаИнформационнуюСсылку(Форма, Элемент) Экспорт // SP1C / Выполним набор номера при нажатии на кнопку в панели контактной информации / Начало Если НЕ сфпФормаТелефон = Неопределено И Найти(Элемент.Имя, "Позвонить") Тогда ИмяЭлементаПолеТелефон = СтрЗаменить(Элемент.Имя, "Позвонить", ""); ПолеТелефон = Форма.Элементы[ИмяЭлементаПолеТелефон]; НомерТелефона = ПолеТелефон.ТекстРедактирования; сфпФормаТелефон.НабратьНомерКИ(, НомерТелефона); Возврат; КонецЕсли; // SP1C / Выполним набор номера при нажатии на кнопку в панели контактной информации / Конец Гиперссылка = Форма.ИнформационныеСсылки.НайтиПоЗначению(Элемент.Имя); ... КонецПроцедуры Обновите конфигурацию базы данных и запустите программу в режиме //"Предприятие"//. Результат работы показан на рисунке ниже. {{ :doc:panel1cunf:showpanelbtn.png?nolink |}}