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