=== Модуль команды "Позвонить" === &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Если сфпФормаТелефон <> Неопределено Тогда СписокУчастников = ПолучитьСсылкуНаУчастникаИзДокумента(ПараметрКоманды); Если СписокУчастников <> Неопределено Тогда сфпФормаТелефон.ПозвонитьВыбравТелефон(СписокУчастников); КонецЕсли; КонецЕсли; КонецПроцедуры // Для документов будет возвращено значение реквизита "Контрагент" // Для справочников - возвращается ссылка на элемент // В случае ошибки возвращается "Неопределено" // Функция ПолучитьСсылкуНаУчастникаИзДокумента(Знач Ссылка) Экспорт Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда //Звонок контрагенту, найдем всех его контактных лиц. МассивОбъектов = ПолучитьКонтактныеЛицаКонтрагента(Ссылка); МассивОбъектов.Добавить(Ссылка); Возврат МассивОбъектов; Иначе //Звонов конкретному конт. лицу или другому объекту. МассивОбъектов = Новый Массив(1); МассивОбъектов[0] = Ссылка; Возврат МассивОбъектов; КонецЕсли; ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда МассивОбъектов = Новый Массив; ТабличныеЧастиДокумента = Ссылка.Метаданные().ТабличныеЧасти; ЕстьТЧУчастники = ТабличныеЧастиДокумента.Найти("Участники") <> Неопределено; ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент"); ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Партнер"); ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо"); ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "АбонентКонтакт"); Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.Событие") И ЕстьТЧУчастники Тогда Для каждого ТекСтрока Из Ссылка.Участники Цикл Если ЗначениеЗаполнено(ТекСтрока.Контакт) Тогда МассивОбъектов.Добавить(ТекСтрока.Контакт); КонецЕсли; КонецЦикла; КонецЕсли; Возврат МассивОбъектов; КонецЕсли; КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента() // Получате значение раквизита, если значение заполнено - добавляет его в массив. // Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка, Массив, ИмяРеквизита) Экспорт Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; КонецЕсли; Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда Массив.Добавить(Ссылка[ИмяРеквизита]); КонецЕсли; Возврат Истина; КонецФункции // ДобавитьЗначениеРеквизитаВМассив() // Возвращает массив со ссылками на контактных лиц контрагента Функция ПолучитьКонтактныеЛицаКонтрагента(КонтрагентСсылка) МассивОбъектов = Новый Массив; Если НЕ ЗначениеЗаполнено(КонтрагентСсылка) Тогда Возврат МассивОбъектов; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | КонтактныеЛица.Ссылка |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Владелец = &Владелец"; Запрос.УстановитьПараметр("Владелец", КонтрагентСсылка); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат МассивОбъектов; КонецЕсли; МассивОбъектов = Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"); Возврат МассивОбъектов; КонецФункции // ПолучитьКонтактныеЛицаКонтрагента()