Инструменты пользователя

Инструменты сайта


astpanel:designer:unf:modulecall

Модуль команды "Позвонить"

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