====== Интеграция в конфигурацию "Бухгалтерия предприятия (ред. 3.0) / 1С-АРБИС:УФФ (ред. 4.0)" ======
* [[http://wiki.miko.ru/astpanel:designer|Обратно к инструкции...]]
Руководство составлено для "Бухгалтерия предприятия, редакция **3.0 (3.0.59.54)** / 1С-АРБИС:Управление фирмой-франчайзи, редакция **4.0 (4.0.11.12)**" и Панели телефонии МИКО **1.4.26.25+**.\\ \\
Обязательно перед работами создайте **РЕЗЕРВНУЮ КОПИЮ** информационной базы.
===== Этап 1. Настройка правил поддержки =====
Для начала следует разблокировать головной объект конфигурации для внесения изменений.
Порядок действий следующий.
- Запустите программу в режиме "**Конфигуратор**".
- Откройте окно настройки поддержки. {{ :doc:panel1ccrm20:support.png? |}}
- Включите возможность изменения конфигурации. На предупреждение программы ответьте утвердительно.
- В появившемся окне укажите, что объекты поставщика не редактируются. {{ :doc:panel1ccrm20:rules.png |}}
- Затем для корневого объекта конфигурации ("УправлениеФирмойФранчайзи") установите правило поддержки на **"Объект поставщика редактируется с сохранением поддержки"**.
Теперь конфигурация готова к внесению изменений.
===== Этап 2. Встраивание панели телефонии =====
Начать рекомендуем с [[astpanel:designer:optimization_managed|инструкции по оптимизации конфигурации]].
Необходимо встроить внешнюю обработку (панель телефонии) в конфигурации, настроить права доступа и ее автоматический запуск в фоновом режиме.
==== Изменение типовых объектов ====
Для работы панели телефонии в фоне и ее автоматического запуска внесем изменения в модуль управляемого приложения.
- Откройте модуль управляемого приложения. {{ :doc:korenconf.png |}}
- Определите глобальную переменную в начале модуля до раздела процедур. // PT1C / Панель телефонии Asterisk / Начало
Перем сфпФормаТелефон Экспорт;
// PT1C / Панель телефонии Asterisk / Конец
- Перейдите к процедуре //"ПриНачалеРаботыСистемы"//. В конец процедуры вставьте код приведенный ниже.
// PT1C / Панель телефонии Asterisk / Начало
Попытка
Отказ = Ложь;
// получим форму - основной "модуль" панели телефонии
сфпФормаТелефон = ПолучитьФорму("Обработка.МИКО_ПанельТелефонииДля1С.Форма.Форма");
Исключение
сфпФормаТелефон = Неопределено; //Нет прав на обработку
КонецПопытки;
Если НЕ сфпФормаТелефон = Неопределено Тогда
сфпФормаТелефон.ИнициализироватьПанельТелефонии(Истина, Отказ);
КонецЕсли;
// проверим успешность инициализации
Если Отказ Тогда
Сообщить("Не удалось запустить ""МИКО Панель телефонии Asterisk""");
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
- Перейдите к процедуре //"ПередЗавершениемРаботыСистемы"// (создайте процедуру, если ее нет). В конец процедуры вставьте код приведенный ниже.
// PT1C / Панель телефонии Asterisk / Начало
Если Отказ = Ложь И сфпФормаТелефон <> Неопределено Тогда
сфпФормаТелефон.ЗавершитьРаботу();
КонецЕсли;
// PT1C / Панель телефонии Asterisk / Конец
==== Добавление обработки и подсистемы в конфигурацию ====
* Вставьте внешнюю обработку, которая идет в поставке, в конфигурацию, она должна называться **МИКО_ПанельТелефонииДля1С**.
* Добавьте в обработку **МИКО_ПанельТелефонииДля1С** команду "**ОткрытьПанельТелефонии**"
* Установите для созданной команды свойство "**Группа**" в значение "**Панель навигации.Важное**".{{ :doc:panel1cunf:commandopen_new.png |}}
* Далее требуется описать обработчик команды "**ОткрытьПанельТелефонии**".
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Попытка
ФормаПанелиТелефонии = Вычислить("сфпФормаТелефон");
Исключение
КонецПопытки;
Если ФормаПанелиТелефонии <> Неопределено Тогда
Если ФормаПанелиТелефонии.Открыта() Тогда
ФормаПанелиТелефонии.Активизировать();
Иначе
ФормаПанелиТелефонии.Открыть();
КонецЕсли;
Возврат;
КонецЕсли;
Попытка
МодульСфпСофтФонПроКлиент = Вычислить("сфпСофтФонПроКлиент");
Исключение
МодульСфпСофтФонПроКлиент = Неопределено;
КонецПопытки;
Если МодульСфпСофтФонПроКлиент <> Неопределено Тогда
МодульСфпСофтФонПроКлиент.сфпПодключитьСофтФон();
КонецЕсли;
КонецПроцедуры
* Создайте новую подсистему "**МИКО_ПанельТелефонии**" и включите в ее состав обработку **МИКО_ПанельТелефонииДля1С**.
* В командном интерфейсе выполнить настройку - **отключить стандартную команду запуска обрабокти**
{{ :astpanel:designer:command_interface.png?nolink |}}
==== Настройка ролей ====
- Добавьте в конфигурацию новую роль **МИКО_Софтфон**.
- Снимите все отметки о правах выставляемые по умолчанию.
- Для обработки **МИКО_ПанельТелефонииДля1С** а также для команды //"ОткрытьПанельТелефонии"// отметьте все доступные права. {{ :doc:panel1ccrm20:role.png? | Права на обработку.}} {{ :astpanel:designer:permit_command_open_new.png?nolink&450 |Права на команду "ОткрытьПанельТелефонии"}}
- Для подсистемы **МИКО_ПанельТелефонии** отметьте все доступные права. {{ :astpanel:designer:permit_csubsystem.png?nolink&450 |}}
- Добавьте роль в состав подсистемы **МИКО_ПанельТелефонии**.
- Обновите конфигурацию базы данных. {{ :doc:panel1ccrm20:confupd.png? |}}
Далее можно переходить к [[astpanel:enterprise:managed |настройке в режиме 1С:Предприятие 8]], шаги описанные ниже являются опциональными.
===== Этап 3. Доработка справочника "Контрагенты" =====
- Добавьте в справочник реквизит **PT1C_ОсновнойМенеджер** (//синоним Основной менеджер//). Тип **СправочникСсылка.Пользователи**.
- В **форму элемента** справочника в **конец** процедуры **ПриСозданииНаСервере** добавьте фрагмент кода:
// PT1C / Начало
pt1c_Элемент = Элементы.Вставить("PT1C_ОсновнойМенеджер", Тип("ПолеФормы"),,);
pt1c_Элемент.ПутьКДанным = "Объект.PT1C_ОсновнойМенеджер";
pt1c_Элемент.Вид = ВидПоляФормы.ПолеВвода;
pt1c_Элемент.Заголовок = "Ответственный менеджер";
// PT1C / Конец
===== Этап 4. Добавление кнопки "Прослушать запись" в документ "АРБИС_Событие" =====
Порядок действий:
- Добавьте в документ "**АРБИС_Событие**" реквизит **PT1C_ID_Звонок** (//синоним id звонок//). Тип **Строка**, длина 32.
- Добавьте в обработку **МИКО_ПанельТелефонииДля1С** команду "**ПрослушатьЗапись**" и поместите в модуль команды
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПанельАктивна = Ложь;
Попытка
ФормаПанелиТелефонии = Вычислить("сфпФормаТелефон");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
Если ФормаПанелиТелефонии = Неопределено Тогда
Попытка
ФормаПанелиТелефонии = Вычислить("сфпФормаТелефонВнешняяПанель");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
КонецЕсли;
Если ФормаПанелиТелефонии = Неопределено Тогда
Попытка
ФормаПанелиТелефонии = Вычислить("сфпПанельУправления");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
КонецЕсли;
Если ПанельАктивна Тогда
ДокументСобытиеНазвание = ФормаПанелиТелефонии.ИмяДокументСобытие();
ID_Звонок = ПолучитьИдентификаторЗвонка(ПараметрКоманды, ДокументСобытиеНазвание);
Если ID_Звонок <> Неопределено Тогда
ФормаПанелиТелефонии.ПрослушатьЗвонокПоИдентификатору(ID_Звонок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьИдентификаторЗвонка(Ссылка, ДокументСобытиеНазвание)
Возврат Ссылка.PT1C_ID_Звонок;
КонецФункции // ПолучитьИдентификаторЗвонка()
- "**Группа**" в значение "**Командная панель формы.Важное**".
- "**Тип параметра команды**" должно иметь тип данных: **ДокументСсылка.АРБИС_Событие**.
- "**Отображение**" в значение "**Картинка и текст**", "**Картинка**" в значение "**МИКО_ЗаписьРазговора**".
- Раскройте дерево конфигурации на группе "**Общие картинки**" и добавьте в нее новый элемент "**МИКО_ЗаписьРазговора**".
- Загрузите в созданный объект изображение для кнопки "**Прослушать запись**" ({{:doc:cassetetape16.png|}}).
- Задайте картинку для команды
Данная команда будет доступна только для пользователей с полными правами.
Обновите конфигурацию базы данных и запустите программу в режиме "**Предприятие**".
===== Этап 5. Добавление кнопки "Позвонить" =====
Для автоматизации набора номера телефона добавим кнопку **"Позвонить"** в область команд форм некоторых справочников и документов.
Порядок действий следующий.
- Добавьте в обработку **МИКО_ПанельТелефонииДля1С** команду **"Позвонить"** и поместите в модуль команды
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПанельАктивна = Ложь;
Попытка
ФормаПанелиТелефонии = Вычислить("сфпФормаТелефон");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
Если ФормаПанелиТелефонии = Неопределено Тогда
Попытка
ФормаПанелиТелефонии = Вычислить("сфпФормаТелефонВнешняяПанель");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
КонецЕсли;
Если ФормаПанелиТелефонии = Неопределено Тогда
Попытка
ФормаПанелиТелефонии = Вычислить("сфпПанельУправления");
ПанельАктивна = ФормаПанелиТелефонии <> Неопределено;
Исключение
КонецПопытки;
КонецЕсли;
Если ПанельАктивна Тогда
СписокУчастников = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды);
Если СписокУчастников <> Неопределено Тогда
ФормаПанелиТелефонии.ПозвонитьВыбравТелефон(СписокУчастников);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Для документов будет возвращено значение реквизита "Контрагент"
// Для справочников - возвращается ссылка на элемент
// В случае ошибки возвращается "Неопределено"
//
Функция ПолучитьСсылкуНаУчастникаИзДокумента(Знач Ссылка) Экспорт
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
МассивОбъектов = Новый Массив(1);
МассивОбъектов[0] = Ссылка;
Возврат МассивОбъектов;
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
МассивОбъектов = Новый Массив;
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Организация");
ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Сотрудник");
Возврат МассивОбъектов;
КонецЕсли;
КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()
// Получате значение раквизита, если значение заполнено - добавляет его в массив.
//
Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка, Массив, ИмяРеквизита) Экспорт
Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда
Массив.Добавить(Ссылка[ИмяРеквизита]);
КонецЕсли;
Возврат Истина;
КонецФункции // ДобавитьЗначениеРеквизитаВМассив()
.
- Установите свойство **"Группа"** в значение **"Командная панель формы.Важное"**. {{:astpanel:designer:sostav_dial.png?500|}}
- Свойство **"Тип параметра команды"** должно иметь составной тип данных:
* **СправочникСсылка.КонтактныеЛица**;
* **ДокументСсылка.АРБИС_ПутевойЛист**;
* **СправочникСсылка.Контрагенты**;
* **ДокументСсылка.АРБИС_Сделка**;
* **СправочникСсылка.Пользователи**;
* **СправочникСсылка.Организации**;
* **ДокументСсылка.АРБИС_Событие**.
Для ранее созданной роли "**МИКО_Софтфон**" добавьте права на доступ к команде "**Позвонить**".
{{ :astpanel:designer:permit_command_dial.png?nolink&450 |}}
Вы может указать и другие типы объектов, в которых будет отображена команда **"Позвонить"**. Основным критерием для выбора таких объектов является наличие табличной части **"КонтактнаяИнформация"**, если это справочник, или реквизита **"Контрагент"**, если это документ. В ином случае может потребоваться изменение текста модуля команды.
При желании можно добавить картинку на кнопку команды, предварительно разместив ее в библиотеке картинок.
- Раскройте дерево конфигурации на группе **"Общие картинки"** и добавьте в нее новый элемент **"МИКО_Телефон"**.
- Загрузите в созданный объект изображение для кнопки **"Позвонить"** ({{:doc:phonegray.png|}}).
- Вернитесь к команде **"Позвонить"** обработки **МИКО_ПанельТелефонииДля1С** и заполните свойства **"Отображение"** в значение **"Картинка и текст"**, **"Картинка"** в значение **"МИКО_Телефон"**.
Обновите конфигурацию базы данных и запустите программу в режиме **"Предприятие"**. Результат работы показан на рисунке ниже.