====== ИНТЕГРАЦИЯ СОФТФОНА С КОНФИГУРАЦИЯМИ БЕЗ 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 |}}