====== Интеграция в конфигурацию "Бухгалтерия предприятия (ред. 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С** и заполните свойства **"Отображение"** в значение **"Картинка и текст"**, **"Картинка"** в значение **"МИКО_Телефон"**. Обновите конфигурацию базы данных и запустите программу в режиме **"Предприятие"**. Результат работы показан на рисунке ниже.