Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


astpanel:designer:unf:modulecall

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
astpanel:designer:unf:modulecall [2014/11/14 22:32]
127.0.0.1 внешнее изменение
astpanel:designer:unf:modulecall [2016/06/06 15:16] (текущий)
imal
Строка 5: Строка 5:
  Если сфпФормаТелефон <> Неопределено Тогда  Если сфпФормаТелефон <> Неопределено Тогда
    
- Участники = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды);​ + СписокУчастников = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды);​ 
- Если Участники.Количество() > 0 Тогда + Если ​СписокУчастников <> Неопределено Тогда 
- сфпФормаТелефон.ПозвонитьВыбравТелефон(Участники); + сфпФормаТелефон.ПозвонитьВыбравТелефон(СписокУчастников);​
- Иначе +
- ПоказатьПредупреждение(,​ "​Нет номеров телефона для звонка",​ 3);+
  КонецЕсли;​  КонецЕсли;​
    
Строка 16: Строка 14:
 КонецПроцедуры КонецПроцедуры
    
-Функция ПолучитьСсылкуНаУчастникаИзДокумента(Ссылка+// Для документов будет возвращено значение реквизита "Контрагент"​ 
-  +// Для справочников ​- возвращается ​ссылка на элемент 
- Участники ​= Новый Массив; +// В случае ошибки возвращается "Неопределено"​ 
- +//  
- // Определим список ​справочников, где хранятся контактные данные +Функция ПолучитьСсылкуНаУчастникаИзДокумента(Знач СсылкаЭкспорт
- ВидыСправочников = МИКО_Софтфон.ОпределитьСправочникиСКонтактнойИнформацией();+
    
  Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда  Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
 + Если ТипЗнч(Ссылка) = Тип("​СправочникСсылка.Контрагенты"​) Тогда //​Звонок контрагенту,​ найдем всех его контактных лиц.
   
- Участники.Добавить(Ссылка);​ + МассивОбъектов = ПолучитьКонтактныеЛицаКонтрагента(Ссылка); 
- + МассивОбъектов.Добавить(Ссылка);​ 
 +  
 + Возврат МассивОбъектов;​ 
 +  
 + Иначе //​Звонов конкретному конт. лицу или другому объекту. 
 + МассивОбъектов = Новый Массив(1);​ 
 + МассивОбъектов[0] = Ссылка;​ 
 +  
 + Возврат МассивОбъектов;​ 
 +  
 + КонецЕсли; ​
  ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда  ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
 + МассивОбъектов = Новый Массив;​
   
- РеквзитыДокумента = Ссылка.Метаданные().Реквизиты;+ ТабличныеЧастиДокумента = Ссылка.Метаданные().ТабличныеЧасти;​ 
 + ЕстьТЧУчастники = ТабличныеЧастиДокумента.Найти("​Участники"​) <> Неопределено; 
   
- // Определим список ​типов реквизитов для проверки + ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент"); 
- ТипыСправочников = Новый ​Массив+ ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "​Партнер"​)
- Для Каждого Вид Из ВидыСправочников Цикл + ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо"); 
- ТипыСправочников.Добавить(Тип("​СправочникСсылка." + Вид)); + ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов,​ "АбонентКонтакт");
- КонецЦикла; +
- // Найдем реквизиты документа, содержащие контактную информацию +
- Для Каждого Реквизит Из РеквзитыДокумента Цикл +
-  +
- Если МИКО_Софтфон.РеквизитИмеетТип(Реквизит, ТипыСправочников) Тогда +
- // ​Выполним дополнительную фильтрацию реквизитов +
- РеквизитСсылка ​= Ссылкаеквизит.Имя]+
-  +
- Если ЗначениеЗаполнено(РеквизитСсылка+
-    И Участники.Найти(РеквизитСсылка) = Неопределено +
-    И РеквизитСсылка <> ПараметрыСеанса.ТекущийПользователь Тогда +
-     +
-   Участники.Добавить(РеквизитСсылка); +
-     +
- КонецЕсли+
-  +
- КонецЕсли;​ +
-  +
- КонецЦикла;+
   
 + Если ТипЗнч(Ссылка) = Тип("​ДокументСсылка.Событие"​)
 + И ЕстьТЧУчастники Тогда
 + 
 + Для каждого ТекСтрока Из Ссылка.Участники Цикл
 + Если ЗначениеЗаполнено(ТекСтрока.Контакт) Тогда
 + МассивОбъектов.Добавить(ТекСтрока.Контакт);​
 + КонецЕсли; ​
 + КонецЦикла; ​
 + 
 + КонецЕсли;​
 + Возврат МассивОбъектов;​
 + КонецЕсли; ​
 +КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()
 + 
 +// Получате значение раквизита,​ если значение заполнено - добавляет его в массив.
 +// 
 +Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка,​ Массив,​ ИмяРеквизита) Экспорт
 + Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
 + Возврат Ложь;
  КонецЕсли;​  КонецЕсли;​
 + Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда
 + Массив.Добавить(Ссылка[ИмяРеквизита]);​
 + КонецЕсли;​
 + 
 + Возврат Истина;​
 +КонецФункции // ДобавитьЗначениеРеквизитаВМассив()
 +
 +// Возвращает массив со ссылками на контактных лиц контрагента
 +Функция ПолучитьКонтактныеЛицаКонтрагента(КонтрагентСсылка)
 +
 + МассивОбъектов = Новый Массив;​
 + Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда
 + Возврат МассивОбъектов;​
 + КонецЕсли; ​
 +
 + Запрос = Новый Запрос;​
 + Запрос.Текст = "​ВЫБРАТЬ РАЗРЕШЕННЫЕ
 +                ​| КонтактныеЛица.Ссылка
 +                |ИЗ
 +                ​| Справочник.КонтактныеЛица КАК КонтактныеЛица
 +                ​|ГДЕ
 +                ​| КонтактныеЛица.Владелец = &​Владелец";​
 + Запрос.УстановитьПараметр("​Владелец",​ КонтрагентСсылка);​
   
- // Определим номера телефонов участников + Результат = Запрос.Выполнить(); 
- Результат ​= МИКО_Софтфон.ОпределитьНомераТелефонов(Участники, ВидыСправочников);+ Если ​Результат.Пустой() Тогда 
 + Возврат МассивОбъектов
 + КонецЕсли; 
   
- Возврат Результат;​ + МассивОбъектов = Результат.Выгрузить().ВыгрузитьКолонку("​Ссылка"​);​ 
-  +  
-КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()</​code>​+ Возврат МассивОбъектов
 +  
 +КонецФункции // ПолучитьКонтактныеЛицаКонтрагента()</​code>​
astpanel/designer/unf/modulecall.1416004348.txt.gz · Последние изменения: 2015/07/28 14:49 (внешнее изменение)