Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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> |