====== Интеграция панели телефонии и журнала звонков в "Комплексная автоматизация, ред. 1.1" ====== [[astpanel:fastintegration|Обратно к перечню инструкций]] Инструкции составлены для **конфигурации**: * Комплексная автоматизация, редакция 1.1 (1.1.86.2) Рекомендуемая версия **панели телефонии**: **1.2.24.12+**\\ Рекомендуемая версия **журнала звонков**: **1.0.1.15+** ===== Этап 1. Настройка правил поддержки ===== Перед началом выполнения работ обязательно сделайте **резервное копирование** конфигурации и данных! Для начала следует разблокировать головной объект конфигурации для внесения изменений. Порядок действий следующий: - Убедитесь, что пользователи завершили работу с программой. - Запустите программу в режиме //"Конфигуратор"//. - Откройте окно настройки поддержки. {{ :doc:panel1ccrm20:support.png? |}} - Включите возможность изменения конфигурации. На предупреждение программы ответьте утвердительно. {{ :astpanel:fastintegration:1f.png |}} - В появившемся окне укажите, что объекты поставщика не редактируются. {{ :doc:panel1ccrm20:rules.png? |}} - Затем для головного объекта конфигурации (//"КомплекснаяАвтоматизация"//) установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. {{ :astpanel:fastintegration:2f.png |}} - Для документа //"**Событие**"// и //"**ФормаДокумента**"// документа также установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. - Для //"**ФормаЭлемента**"// справочника //"**Контрагенты**"// установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. - Для общей формы //"**ПечатьДокументов**"// установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. - Для регистра сведений //"**ДанныеНезарегистрированныхКонтрагентов**"// установите правило поддержки на //"Объект поставщика редактируется с сохранением поддержки"//. - Закройте окно настройки поддержки Теперь конфигурация готова к внесению изменений. ===== Этап 2. Встраивание журнала звонков ===== - Выполните действия **"Конфигурация" - "Сравнить и объеденить с конфигурацией из файла"** {{ :astpanel:fastintegration:4f.png |}} - Выберите файл конфигурации "**Module_Statistic_Х_Х_Х_ХХ.protect.cf**"; - Снимите флажок со всех объектов конфигурации {{ :astpanel:fastintegration:5f.png |}} - Меню "**Действия**" - "**Отметить по подсистемам файла**" {{ :astpanel:fastintegration:6f.png |}} - Выберите **только** те подсистемы, которые указаны на скриншоте. Выполните действие "**Установить**" {{ :astpanel:fastintegration:of.png |}} - Выполните действие "**Выполнить**" {{ :astpanel:fastintegration:8f.png |}} - В появившемся окне нажимаем "**Продолжить**". Сохраняем отчет сравнения/объединения нашей конфигурации с файлом. {{ :astpanel:fastintegration:9f.png |}} - Сравнение и объединение будет завершено. {{ :astpanel:fastintegration:10f.png |}} ===== Этап 3. Встраивание панели телефонии ===== ==== 1. Добавление обработки в подсистему МИКО_Телефония ==== Замените обработку МИКО_ПанельТелефонииДля1С на внешнюю, которая идет в поставке, она должна называться **МИКО_ПанельТелефонииДля1С**.{{ :astpanel:fastintegration:1231.png |}} ==== 2. Редактирование роли ==== Переименуйте роль **МИКО_Софтфон** на **МИКО_ИспользованиеСофтфона** (//Синоним: Использование панели телефонии Asterisk (МИКО)//). При настройке прав пользователей необходимо добавить эту роль тем, кто будет работать непосредственно с телефонией. ==== 3. Правка модуля обычного приложения ==== - Откройте модуль обычного приложения. - Определите глобальную переменную в начале модуля до раздела процедур. // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Перем Miko_Ajam Экспорт;// МИКО обработка управления звонками // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ - Перейдите к процедуре «ПриНачалеРаботыСистемы». В конец процедуры вставьте код приведенный ниже. Процедура ПриНачалеРаботыСистемы() // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО // установка глобадьных переменных Если РольДоступна("ПолныеПрава") ИЛИ РольДоступна("МИКО_ИспользованиеСофтфона") Тогда Попытка Miko_Ajam = Обработки.МИКО_ПанельТелефонииДля1С.Создать(); Miko_Ajam.ПодключитьСофтФон(); Исключение Сообщить("Ошибка подключения СофтФона (МИКО):", СтатусСообщения.ОченьВажное); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ КонецПроцедуры // ПриНачалеРаботыСистемы() - Перейдите к процедуре «ОбработкаВнешнегоСобытия». В конец процедуры вставьте код приведенный ниже. Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} НАЧАЛО Если (Источник = "MikoAjamEvent" ИЛИ Источник = "MIKO_SoftPhone" ИЛИ Источник = "hWindow") И НЕ Miko_Ajam = Неопределено Тогда Miko_Ajam.ОбработкаВнешнегоСобытияАстериск(Источник, Событие, Данные); КонецЕсли; // {{doc:panel1cut:{ Панель телефонии Asterisk, МИКО }}} КОНЕЦ КонецПроцедуры // ОбработкаВнешнегоСобытия() - Перейдите к процедуре «ПередЗавершениемРаботыСистемы». В конец процедуры вставьте код приведенный ниже.Процедура ПередЗавершениемРаботыСистемы(Отказ) // ... ... ... Внимание!!! Пропущена часть кода!!! ... ... ... // {{doc:panel1cut:{ МИКО }}} НАЧАЛО Панель телефонии Asterisk // Завершим работу Панель телефонии Asterisk перед выходом из предприятия Если НЕ Отказ И НЕ Miko_Ajam = Неопределено Тогда Miko_Ajam.ОтключитьВК(); КонецЕсли; // {{doc:panel1cut:{ МИКО }}} КОНЕЦ Панель телефонии Asterisk КонецПроцедуры ==== 4. Модернизация документа "Событие" ==== **Задача:** необходимо хранить связку документа события с записью в истории звонков. При открытии документа события из истории, должен открываться документ сформированный ранее по этой записи. **Решение:** для документа "Событие" необходимо добавить новый реквизит: * Имя = "**CRM_GUIDЗвонка**" * Тип = **Переменная строка 300** символов === Прослушать запись разговора из документа "Событие" === **Задача:** необходимо добавить возможность прослушать запись разговора, связанного с документом "Событие", из формы документа. Кроме того необходимо добавить возможность набрать номер контрагента, либо его контактного лица из формы документа. **Решение:** необходимо модифицировать** модуль формы документа**: // Обработчик события ПриОткрытии формы. // Процедура ПриОткрытии() // ... ... ... мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтрагент = Контрагент; мПоследнееЗначениеЭлементаПоискаПоСтрокеКонтактноеЛицо = КонтактноеЛицо; мТекущаяДатаДокумента = Дата; // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} НАЧАЛО Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.мОбщийМодуль = Неопределено Тогда мОбщийМодуль = Miko_Ajam.мОбщийМодуль; // добавляем кнопку вызова мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравИзСписка"); // добавляем кнопку прослушивания записи разговора мОбщийМодуль.ДобавитьКнопкуПрослушиванияЗаписиНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_ПрослушатьЗапись"); КонецЕсли; ПодключитьОбработчикОжидания("МИКО_СформироватьСтрокуТипаВида", 1, Истина); // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} КОНЕЦ Модифицированность = Ложь; КонецПроцедуры // ПриОткрытии() добавить в форму обработчик нажатия кнопок: // МИКО // Набор номера по заданному алгоритму // Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; Если Miko_Ajam = Неопределено Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_НабратьНомерВыбравИзСписка" Тогда // Позвонить по телефону выбранному пользователем из списка, определенных у контрагента и контактного лица СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("Контрагент", Контрагент); СписокОбъектов.Вставить("КонтактноеЛицо", КонтактноеЛицо); // Данные незарегистрированных контрагентов: СписокОбъектов.Вставить("Событие", Ссылка); Miko_Ajam.ПозвонитьВыбравТелефон(СписокОбъектов); ИначеЕсли Действие = "кнМИКО_ПрослушатьЗапись" Тогда Если НЕ ЗначениеЗаполнено(CRM_GUIDЗвонка) Тогда Сообщить("К событию не прикреплено записи разговора!"); Возврат; КонецЕсли; // Прослушать запись разговора, прикрепленного к событию Miko_Ajam.ПрослушатьЗаписьРазговора(CRM_GUIDЗвонка); КонецЕсли; КонецПроцедуры Процедура МИКО_СформироватьСтрокуТипаВида() Экспорт // актуально для УТ 10.3.34.2 СформироватьСтрокуТипаВида(); КонецПроцедуры // МИКО_СформироватьСтрокуТипаВида() Документ при открытии будет выглядеть следующим образом: {{ :doc:panel1cut:dokument_sobytie.jpg? |}} ==== 5. Модернизация справочника "Контрагенты" ==== === Звонок из карточки Контрагента === **Задача:** необходимо, добавить возможность произвести звонок из карточки контрагента. **Решение:** необходимо модифицировать форму элемента справочника "Контрагенты": // Обработчик события ПриОткрытии формы. // Процедура ПриОткрытии() // ... ... ... Внимание!!! Отсутствует часть исходного кода!!! // Установить печатную форму по умолчанию. РаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект, ЭтаФорма); // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} НАЧАЛО Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.мОбщийМодуль = Неопределено Тогда мОбщийМодуль = Miko_Ajam.мОбщийМодуль; // добавляем элементы управления на форму мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.ДействияФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравИзСписка"); мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерИзКИ"); мОбщийМодуль.ДобавитьКнопкуЗвонкаНаПанельДействий(ЭлементыФормы.КоманднаяПанельКонтактныеЛицаКонтрагента.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_НабратьНомерВыбравКЛ"); КонецЕсли; // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} КОНЕЦ КонецПроцедуры добавить обработчик нажатия кнопок: // МИКО // Набор номера по заданному алгоритму // Параметры // Кнопка - элемент управления формы с типом "КнопкаКоманднойПанели" Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; Если Miko_Ajam = Неопределено Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_НабратьНомерИзКИ" Тогда // Позвонить по выбранному контакту ТекущаяСтрока = ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные; Если НЕ ТекущаяСтрока = Неопределено Тогда Miko_Ajam.НабратьНомерКИ(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные); КонецЕсли; ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравИзСписка" ТОгда // Позвонить по телефону, выбранному пользователем из списка телефонов определенных у контрагента и контактного лица СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("Контрагент", Ссылка); СписокОбъектов.Вставить("КонтактноеЛицо", ОсновноеКонтактноеЛицо); Если НЕ Ссылка = ГоловнойКонтрагент Тогда СписокОбъектов.Вставить("КонтактноеЛицо", ГоловнойКонтрагент); КонецЕсли; Miko_Ajam.ПозвонитьВыбравТелефон(СписокОбъектов); ИначеЕсли Действие = "кнМИКО_НабратьНомерВыбравКЛ" Тогда // Позовонить выбранному контактному лицу ТекущиеДанные = ЭлементыФормы.КонтактныеЛицаКонтрагента.ТекущиеДанные; Если НЕ ТекущиеДанные = Неопределено Тогда СписокОбъектов = Новый Структура(); СписокОбъектов.Вставить("КонтактноеЛицо", ТекущиеДанные.Ссылка); Miko_Ajam.ПозвонитьВыбравТелефон(СписокОбъектов); КонецЕсли; ИначеЕсли Действие = "УстановитьДоступностьКнопокСофтфона" Тогда Miko_Ajam.мОбщийМодуль.УстановитьДоступностьКнопокСофтфона(ЭлементыФормы.КонтактнаяИнформация.ТекущиеДанные, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки, "кнМИКО_НабратьНомерИзКИ"); КонецЕсли; КонецПроцедуры Кнопки должны быть доступны только для контактной информации с типом "Телефон" // Обработчик события ПриАктивизацииСтроки элемента формы КонтактнаяИнформация. // Процедура КонтактнаяИнформацияПриАктивизацииСтроки(Элемент) УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПриАктивизацииСтрокиТаблицы(Элемент, ЭлементыФормы.КоманднаяПанельКонтактнаяИнформация.Кнопки.УстановитьОсновным); // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} НАЧАЛО Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.мОбщийМодуль = Неопределено Тогда МИКО_ВыполнитьДействие(Новый Структура("Имя","УстановитьДоступностьКнопокСофтфона")); КонецЕсли; // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} КОНЕЦ КонецПроцедуры Форма элемента справочника примет следующий вид: {{ :doc:panel1cut:forma_kontragenta.png? |}} ==== 6. Данные незарегистрированных контрагентов ==== В некоторых случаях удобно не регистрировать нового клиента, а сохранить его просто в документе "Событие". \\ В этом случае данные будут сохранены в регистре сведений "**ДанныеНезарегистрированныхКонтрагентов**". В стандартном исполнении регистр не позволяет сохранить сведения по коду страны. Исправим это. - Добавим в регистр новый **ресурс**: "**МИКО_КодСтраны**" - Тип значения: "**строка**" - Полнотекстовый поиск: "**Не использовать**" - Длинна: **"10", переменная** {{ :astpanel:designer:miko_code_contry.png | Свойства ресурса регистра сведений ДанныеНезарегистрированныхКонтрагентов}} Функцию заполнения ресурса воздет на себя панель телефонии (**поддерживается в версии 1.2.24.7+**). ==== 7. Модернизация общей формы печати документов ==== === Отправка факсом текущего документа === **Задача:** необходимо, добавить возможность отправки сформированной печатной формы в виде факсимильного сообщения в текущий вызов. **Решение:** необходимо модифицировать общую форму "ПечатьДокументов": // Обработчик "ПриОткрытии" формы печати // Процедура ПриОткрытии() ЭлементыФормы.ПолеТабличногоДокумента.ВставитьОбласть(ПечатныйДокумент.Область()); ЭлементыФормы.ПолеТабличногоДокумента.ОтображатьЗаголовки = Ложь; ЭлементыФормы.ПолеТабличногоДокумента.ОтображатьСетку = Ложь; ЭлементыФормы.ПолеТабличногоДокумента.Защита = Защита; ЭлементыФормы.ПолеТабличногоДокумента.ТолькоПросмотр = Истина; ЭлементыФормы.ПолеТабличногоДокумента.ИмяПараметровПечати = ПечатныйДокумент.ИмяПараметровПечати; ЭлементыФормы.ПолеТабличногоДокумента.ПовторятьПриПечатиСтроки = ПечатныйДокумент.ПовторятьПриПечатиСтроки; // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} НАЧАЛО Если НЕ Miko_Ajam = Неопределено И НЕ Miko_Ajam.мОбщийМодуль = Неопределено Тогда мОбщийМодуль = Miko_Ajam.мОбщийМодуль; // добавляем элементы управления на форму мОбщийМодуль.ДобавитьКнопкуОтправкиФаксаНаПанельДействий(ЭлементыФормы.КоманднаяПанельФормы.Кнопки, "МИКО_ВыполнитьДействие", "кнМИКО_ОтправитьФакс"); КонецЕсли; // {{doc:panel1cut:{ МИКО Панель телефонии Asterisk }}} КОНЕЦ КонецПроцедуры добавить обработчик нажатия кнопки: // Набор номера по заданному алгоритму // Параметры // Кнопка - элемент управления формы с типом "КнопкаКоманднойПанели" Процедура МИКО_ВыполнитьДействие(Кнопка) Действие = Кнопка.Имя; Если Miko_Ajam = Неопределено Тогда Возврат; КонецЕсли; Если Действие = "кнМИКО_ОтправитьФакс" Тогда // Обработчик нажатия на кнопку отправки табличного документа в текущий разговор Miko_Ajam.ОтправитьФаксомТабДок(ЭлементыФормы.ПолеТабличногоДокумента); КонецЕсли; КонецПроцедуры Общая печатная форма примет вид: {{ :doc:panel1cut:obschaja_forma_pechati_dokumentov.png? |}} ===== Этап 4. Завершение этапа встраивания ===== ==== Сохранение изменений ==== - Обновите конфигурацию базы данных.{{ :astpanel:fastintegration:13f.png |}} - В отобразившемся окне нажмите **Принять** {{ :astpanel:fastintegration:14f.png |}} ==== Обновление конфигурации ==== - Запустите процесс обновления конфигурации. В конфигураторе перейдите в меню "**Сервис**" - "**Параметры**", вкладка "**Запуск 1С:Предприятие**" - В поле "**Параметры запуска**" укажите строку "**ЗапуститьОбновлениеИнформационнойБазы**" {{ :astpanel:statistic:startupdate.png?450 |}} - Запустите 1С:Предприятие из конфигуратора "**Отладка**" - "**Начать отладку**" - Дождитесь завершения обновления - Удалите из параметров запуска строку "**ЗапуститьОбновлениеИнформационнойБазы**". Перезапустите 1С. ==== Завершение настройки ==== Операции требовательны к ресурсам ПК. Лучше их выполнить в нерабочее время. - Запустите **1С Предприятие под полными правами** в пользовательском режиме - **"Все функции" - "Обработки" - "МИКО: Заполнить индекс телефонов"** - Выполните действие "**Заполнить коды городов**" - Выполните действие "**Перезаполнить индекс номеров**" На этом встраивание панели телефонии и журнала звонков в конфигурацию завершено. Теперь можно перейти к настройке продуктов в режиме 1С:Предприятие: *[[astpanel:enterprise:ordinary#startovyj_pomoschnik| Настройка панели телефонии]] *[[astpanel:statistic:settings| Настройка журнала звонков]] [[astpanel:fastintegration|Обратно к перечню инструкций]]