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

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


astpanel:designer:unf:modulesrc

Общий модуль "МИКО_Софтфон"

// Проверят возможность запуска софтфона, наличие прав доступа
//
Функция МожноИспользовать() Экспорт
 
	ТребуетсяОбновление = 
		?(ОбщегоНазначенияПовтИсп.РазделениеВключено(),
			ОбновлениеИнформационнойБазыСлужебный.НеобходимоОбновлениеНеразделенныхДанныхИнформационнойБазы(),
			ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()
	);
	ПравДостаточно = РольДоступна(Метаданные.Роли.ПолныеПрава) Или РольДоступна(Метаданные.Роли.МИКО_ИспользованиеСофтфона);
 
	Возврат (Не ТребуетсяОбновление) И ПравДостаточно;
 
КонецФункции // МожноИспользовать()
 
// Добавление кнопки позвонить в боковую панель контактной информации
//
Процедура ДобавитьКнопкиНаПанельКИ(ЭтаФорма) Экспорт
 
	ИменаЭлементов = Новый Массив(2);
	ИменаЭлементов[0] = "РасшифровкаСпискаКонтрагентТелефон";
	ИменаЭлементов[1] = "РасшифровкаСпискаКонтактноеЛицоТелефон";
 
	Для Каждого ИмяЭлемента Из ИменаЭлементов Цикл
		ПолеТелефон = ЭтаФорма.Элементы.Найти(ИмяЭлемента);
		Если ПолеТелефон <> Неопределено Тогда
			ГруппаРасшифровкаСписка = ПолеТелефон.Родитель;
 
			ИмяКоманды = ПолеТелефон.Имя + "Позвонить";
			Если ЭтаФорма.Команды.Найти(ИмяКоманды) <> Неопределено Тогда
				Продолжить;
			КонецЕсли; 
 
			ГруппаТелефон = ЭтаФорма.Элементы.Вставить("Группа" + ГруппаРасшифровкаСписка.Имя + "Телефон", Тип("ГруппаФормы"), ГруппаРасшифровкаСписка, ПолеТелефон);
			ГруппаТелефон.Вид = ВидГруппыФормы.ОбычнаяГруппа;
			ГруппаТелефон.ОтображатьЗаголовок = Ложь;
			ГруппаТелефон.Отображение = ОтображениеОбычнойГруппы.Нет;
			ГруппаТелефон.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
 
			ЭтаФорма.Элементы.Переместить(ПолеТелефон, ГруппаТелефон);
 
			Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
			Команда.Подсказка = НСтр("ru='Позвонить по телефону'");
			Команда.Заголовок = "#";
			Команда.Действие = "Подключаемый_НажатиеНаИнформационнуюСсылку";
 
			КнопкаПозвонить = ЭтаФорма.Элементы.Добавить(ГруппаТелефон.Имя + "Позвонить", Тип("КнопкаФормы"), ГруппаТелефон);
			КнопкаПозвонить.ИмяКоманды = ИмяКоманды;
			КнопкаПозвонить.ЦветРамки = ЦветаСтиля.ЦветФонаФормы;
		КонецЕсли;
	КонецЦикла;
 
КонецПроцедуры // ДобавитьКнопкиНаПанельКИ()
 
// Проверяет имеет ли реквизит документа хотя бы один из указанных типов
//
Функция РеквизитИмеетТип(Реквизит, НаборТипов) Экспорт
 
	Для Каждого ЭлементТип Из НаборТипов Цикл
 
		Если Реквизит.Тип.СодержитТип(ЭлементТип) Тогда
 
			Возврат Истина;
 
		КонецЕсли;
 
	КонецЦикла;
 
	Возврат Ложь;
 
КонецФункции // РеквизитИмеетТип()
 
// Формирует массив справочников, в которых присутствует табличная часть
// с контактной информацией
//
Функция ОпределитьСправочникиСКонтактнойИнформацией() Экспорт
 
	Результат = Новый Массив;
 
	Для каждого Источник Из Метаданные.Справочники Цикл
		// наличие таблицы КИ
		КонтактнаяИнформация = Источник.ТабличныеЧасти.Найти("КонтактнаяИнформация");
		Если КонтактнаяИнформация = Неопределено Тогда
		  	Продолжить;
		КонецЕсли;                                        
		// наличие прав доступа к таблице КИ
		Если НЕ ПравоДоступа("Чтение", Источник)
			 ИЛИ НЕ ПравоДоступа("Чтение", Источник.ТабличныеЧасти.КонтактнаяИнформация) Тогда
			Продолжить;
		КонецЕсли; 
		// наличие реквизитов
		Если КонтактнаяИнформация.реквизиты.Найти("НомерТелефона")=Неопределено Тогда
		   	Продолжить;
		КонецЕсли;
 
		//ТипИсточника = Тип(СтрЗаменить(Источник.ПолноеИмя(), "Справочник", "СправочникСсылка"));
 
		Результат.Добавить(Источник.Имя);
	КонецЦикла;
 
	Возврат Результат;
 
КонецФункции // ОпределитьОбъектыСКонтаткнойИнформацией()
 
// Определяет номера телефонов для указанного массива объектов
//
Функция ОпределитьНомераТелефонов(Объекты, ТипыОбъектов) Экспорт
 
	ШаблонЗапроса = 
		"ВЫБРАТЬ {РАЗРЕШЕННЫЕ} 
		|	{Имя}КонтактнаяИнформация.Ссылка КАК Абонент,
		|	{Имя}КонтактнаяИнформация.Ссылка.Наименование КАК Наименование,
		|	{Имя}КонтактнаяИнформация.НомерТелефона КАК НомерТелефона,
		|	{Имя}КонтактнаяИнформация.Представление КАК Представление,
		|	{Вес} КАК Вес
		|//{ПОМЕСТИТЬ} ВТ
		|ИЗ
		|	Справочник.{Имя}.КонтактнаяИнформация КАК {Имя}КонтактнаяИнформация
		|ГДЕ
		|	{Имя}КонтактнаяИнформация.Тип = Значение(Перечисление.ТипыКонтактнойИнформации.Телефон)
		|	И {Имя}КонтактнаяИнформация.Ссылка В (&Объекты)";
 
	ТекстЗапроса = "";
 
	Для Каждого ТипСправочника Из ТипыОбъектов Цикл
 
		ТекИмя = СтрЗаменить(Строка(ТипСправочника), "Ссылка", "");
 
		Если Не ТекстЗапроса = "" Тогда
		  	ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
			врЗапрос = СтрЗаменить(ШаблонЗапроса, "{РАЗРЕШЕННЫЕ}", "");
		Иначе
			врЗапрос = СтрЗаменить(ШаблонЗапроса, "{РАЗРЕШЕННЫЕ}", "РАЗРЕШЕННЫЕ");
			//врЗапрос = СтрЗаменить(врЗапрос, "//{ПОМЕСТИТЬ}", "ПОМЕСТИТЬ");
		КонецЕсли; 
		врЗапрос = СтрЗаменить(врЗапрос, "{Имя}", ТекИмя);
 
		Вес = 0;
		Если ТекИмя = "Партнеры" Тогда
		 	Вес = 5;
		ИначеЕсли ТекИмя = "Контрагенты" Тогда	
		 	Вес = 4;
		ИначеЕсли ТекИмя = "КонтактныеЛица" Тогда	
		 	Вес = 3;
		ИначеЕсли ТекИмя = "ФизическиеЛица" Тогда	
		 	Вес = 2;
		КонецЕсли;
 
		врЗапрос = СтрЗаменить(врЗапрос, "{Вес}", ""+Вес);
		ТекстЗапроса = ТекстЗапроса + Символы.ПС + врЗапрос + Символы.ПС;
	КонецЦикла;
 
	ТекстЗапроса = ТекстЗапроса + Символы.ПС + "УПОРЯДОЧИТЬ ПО Вес УБЫВ";
 
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("Объекты", Объекты);
 
	Результат = Новый СписокЗначений;
 
	ШрифтНазвания = Новый Шрифт(,, Истина);
 
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Результат.Добавить(Выборка.Абонент, Выборка.Наименование + "   " + Выборка.Представление);
	КонецЦикла;
 
	Возврат Результат;
 
КонецФункции // ОпределитьНомераТелефонов()
astpanel/designer/unf/modulesrc.txt · Последние изменения: 2014/11/14 22:32 (внешнее изменение)