Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
astpanel:designer:unf:modulecall [2013/08/06 16:05] nb Page moved from doc:panel1cunf:modulecall to astpanel:designer:unf:modulecall |
astpanel:designer:unf:modulecall [2016/06/06 15:16] (текущий) imal |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | === Модуль команды "Позвонить" обработки MIKO_Asterisk === | + | === Модуль команды "Позвонить" === |
<code 1c>&НаКлиенте | <code 1c>&НаКлиенте | ||
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) | Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) | ||
- | + | ||
Если сфпФормаТелефон <> Неопределено Тогда | Если сфпФормаТелефон <> Неопределено Тогда | ||
- | + | ||
- | Участник = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды); | + | СписокУчастников = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды); |
- | Если Участник <> Неопределено Тогда | + | Если СписокУчастников <> Неопределено Тогда |
- | СписокУчастников = Новый Массив(1); | + | |
- | СписокУчастников[0] = Участник; | + | |
сфпФормаТелефон.ПозвонитьВыбравТелефон(СписокУчастников); | сфпФормаТелефон.ПозвонитьВыбравТелефон(СписокУчастников); | ||
КонецЕсли; | КонецЕсли; | ||
- | + | ||
КонецЕсли; | КонецЕсли; | ||
- | + | ||
КонецПроцедуры | КонецПроцедуры | ||
- | + | ||
- | Функция ПолучитьСсылкуНаУчастникаИзДокумента(Ссылка) | + | // Для документов будет возвращено значение реквизита "Контрагент" |
- | + | // Для справочников - возвращается ссылка на элемент | |
+ | // В случае ошибки возвращается "Неопределено" | ||
+ | // | ||
+ | Функция ПолучитьСсылкуНаУчастникаИзДокумента(Знач Ссылка) Экспорт | ||
+ | |||
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда | Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда | ||
- | Возврат Ссылка; | + | Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда //Звонок контрагенту, найдем всех его контактных лиц. |
+ | |||
+ | МассивОбъектов = ПолучитьКонтактныеЛицаКонтрагента(Ссылка); | ||
+ | МассивОбъектов.Добавить(Ссылка); | ||
+ | |||
+ | Возврат МассивОбъектов; | ||
+ | |||
+ | Иначе //Звонов конкретному конт. лицу или другому объекту. | ||
+ | МассивОбъектов = Новый Массив(1); | ||
+ | МассивОбъектов[0] = Ссылка; | ||
+ | |||
+ | Возврат МассивОбъектов; | ||
+ | |||
+ | КонецЕсли; | ||
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда | ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда | ||
- | Попытка | + | МассивОбъектов = Новый Массив; |
- | Возврат Ссылка.Контрагент; | + | |
- | Исключение | + | ТабличныеЧастиДокумента = Ссылка.Метаданные().ТабличныеЧасти; |
- | КонецПопытки; | + | ЕстьТЧУчастники = ТабличныеЧастиДокумента.Найти("Участники") <> Неопределено; |
+ | |||
+ | |||
+ | ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент"); | ||
+ | ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Партнер"); | ||
+ | ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо"); | ||
+ | ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "АбонентКонтакт"); | ||
+ | |||
+ | Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.Событие") | ||
+ | И ЕстьТЧУчастники Тогда | ||
+ | |||
+ | Для каждого ТекСтрока Из Ссылка.Участники Цикл | ||
+ | Если ЗначениеЗаполнено(ТекСтрока.Контакт) Тогда | ||
+ | МассивОбъектов.Добавить(ТекСтрока.Контакт); | ||
+ | КонецЕсли; | ||
+ | КонецЦикла; | ||
+ | |||
+ | КонецЕсли; | ||
+ | Возврат МассивОбъектов; | ||
КонецЕсли; | КонецЕсли; | ||
+ | КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента() | ||
+ | |||
+ | // Получате значение раквизита, если значение заполнено - добавляет его в массив. | ||
+ | // | ||
+ | Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка, Массив, ИмяРеквизита) Экспорт | ||
+ | Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда | ||
+ | Возврат Ложь; | ||
+ | КонецЕсли; | ||
+ | Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда | ||
+ | Массив.Добавить(Ссылка[ИмяРеквизита]); | ||
+ | КонецЕсли; | ||
+ | |||
+ | Возврат Истина; | ||
+ | КонецФункции // ДобавитьЗначениеРеквизитаВМассив() | ||
- | КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()</code> | + | // Возвращает массив со ссылками на контактных лиц контрагента |
+ | Функция ПолучитьКонтактныеЛицаКонтрагента(КонтрагентСсылка) | ||
+ | |||
+ | МассивОбъектов = Новый Массив; | ||
+ | Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда | ||
+ | Возврат МассивОбъектов; | ||
+ | КонецЕсли; | ||
+ | |||
+ | Запрос = Новый Запрос; | ||
+ | Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ||
+ | | КонтактныеЛица.Ссылка | ||
+ | |ИЗ | ||
+ | | Справочник.КонтактныеЛица КАК КонтактныеЛица | ||
+ | |ГДЕ | ||
+ | | КонтактныеЛица.Владелец = &Владелец"; | ||
+ | Запрос.УстановитьПараметр("Владелец", КонтрагентСсылка); | ||
+ | |||
+ | Результат = Запрос.Выполнить(); | ||
+ | Если Результат.Пустой() Тогда | ||
+ | Возврат МассивОбъектов; | ||
+ | КонецЕсли; | ||
+ | |||
+ | МассивОбъектов = Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"); | ||
+ | |||
+ | Возврат МассивОбъектов; | ||
+ | |||
+ | КонецФункции // ПолучитьКонтактныеЛицаКонтрагента()</code> |