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