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

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


astpanel:designer:crm2:modulesrc_2_0_12

Общий модуль "МИКО_Софтфон" для CRM 2.0.12.X и CRM 3.0.1.7+

// Выполняет первичную настройку информационной базы
//
Процедура ВыполнитьПервичнуюУстановку(НазваниеПанелиТелефонии) Экспорт
 
	// устанавливаем новый вид контактной информации для хранения местных номеров
	ВидКИ_МестныйТелефон = ОпределитьВидКИ_МестныйТелефон();
 
	Если Не ЗначениеЗаполнено(ВидКИ_МестныйТелефон) Тогда
		ПодготовитьХранилищеМестныхНомеров();
	КонецЕсли;
 
	// добавляем новые параметры в настройки пользователя
	Если Метаданные.Имя = "CRM" 
		 ИЛИ Метаданные.Имя = "УправлениеНебольшойФирмой_CRMСтандарт"
		 ИЛИ Метаданные.Имя = "УправлениеНебольшойФирмой_CRM"
		 ИЛИ Метаданные.Имя = "КомплекснаяАвтоматизация_CRM"
		 ИЛИ Метаданные.Имя = "УправлениеПредприятием_CRM"
		 ИЛИ Метаданные.Имя = "УправлениеПредприятием"
		 ИЛИ Метаданные.Имя = "УправлениеТорговлей_CRM_2" Тогда
		пвхНастройкиПользователей = ?(Метаданные.ПланыВидовХарактеристик.Найти("НастройкиПользователей") <> Неопределено, ПланыВидовХарактеристик.НастройкиПользователей, ПланыВидовХарактеристик.CRM_НастройкиПользователей);
		Отбор = Новый Структура("Наименование", НазваниеПанелиТелефонии);
		Выборка = пвхНастройкиПользователей.Выбрать(пвхНастройкиПользователей.сфпНастройкиСофтФон, Отбор);
		Если ЗначениеПараметраПользователя(НазваниеПанелиТелефонии) = Неопределено Тогда
			НовЭлм = пвхНастройкиПользователей.СоздатьЭлемент();
			НовЭлм.Наименование = НазваниеПанелиТелефонии;
			НовЭлм.ТипЗначения = Новый ОписаниеТипов("Булево");
			НовЭлм.Родитель = пвхНастройкиПользователей.сфпНастройкиСофтФон;
 
			Попытка
				НовЭлм.Записать();
			Исключение
				Сообщить("Не удалось произвести запись в планы видов характеристик ""НастройкиПользователей""", СтатусСообщения.Важное);
			КонецПопытки;
		КонецЕсли;
	КонецЕсли;
 
 
КонецПроцедуры
 
Функция Использовать(НазваниеПанелиТелефонии) Экспорт
 
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
	Запрос.УстановитьПараметр("Настройка"   , ЗначениеПараметраПользователя(НазваниеПанелиТелефонии));
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	Значение
	|ИЗ
	|	&рсНастройкиПользователей
	|
	|ГДЕ
	|	Пользователь = &Пользователь
	| И Настройка    = &Настройка";
 
	Запрос.Текст = СтрЗаменить(Запрос.Текст, "&рсНастройкиПользователей", ?(Метаданные.РегистрыСведений.Найти("НастройкиПользователей") <> Неопределено, "РегистрСведений.НастройкиПользователей", "РегистрСведений.CRM_НастройкиПользователей"));
 
	Выборка = Запрос.Выполнить().Выбрать();
   	Если Выборка.Следующий() Тогда
		Возврат Выборка.Значение;
	КонецЕсли;
	Возврат Ложь;
 
КонецФункции
 
Функция ЗначениеПараметраПользователя(Параметр)
 
	пвхНастройкиПользователей = ?(Метаданные.ПланыВидовХарактеристик.Найти("НастройкиПользователей") <> Неопределено, ПланыВидовХарактеристик.НастройкиПользователей, ПланыВидовХарактеристик.CRM_НастройкиПользователей);
	Отбор = Новый Структура("Наименование", Параметр);
	Выборка = пвхНастройкиПользователей.Выбрать(пвхНастройкиПользователей.сфпНастройкиСофтФон, Отбор);
 
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	КонецЕсли;
	Возврат Неопределено;
 
КонецФункции 
 
// Производит запись в справочник ВидыКонтактнойИнформации нового элеменнта.
// Элемент описывает вид контактной информации - внутренний номер сотрудника.
//
Процедура ПодготовитьХранилищеМестныхНомеров()
 
	НовыйЭлемент = Справочники.ВидыКонтактнойИнформации.СоздатьЭлемент();
	НовыйЭлемент.Наименование = "Внутренний телефон";
	НовыйЭлемент.Родитель = Справочники.ВидыКонтактнойИнформации.СправочникПользователи;
	НовыйЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
 
	Попытка
		НовыйЭлемент.Записать();
	Исключение
		Сообщить("Не удалось произвести запись в справочник ""ВидыКонтактнойИнформации""", СтатусСообщения.Важное);
	КонецПопытки;
 
КонецПроцедуры // ПодготовитьХранилищеМестныхНомеров()
 
// Определяет вид контактной информации отвечающей за хранение внутренних
// номеров сотрудников (элемент справочника ВидыКонтактнойИнформации). Элемент
// должен быть предварительно сформирован обработкой.
//
//  Возвращаемое значение [СправочникСсылка]   Ссылка на элемент справочника
//                                             ВидыКонтактнойИнформации.
//
Функция ОпределитьВидКИ_МестныйТелефон() Экспорт
 
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Родитель", Справочники.ВидыКонтактнойИнформации.СправочникПользователи);
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВидыКонтактнойИнформации.Ссылка
		|ИЗ
		|	Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
		|ГДЕ
		|	ВидыКонтактнойИнформации.Родитель = &Родитель
		|	И ВидыКонтактнойИнформации.Наименование = ""Внутренний телефон""";
 
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	КонецЕсли;
 
КонецФункции
 
// Программное добавление кнопки отправки факса на форму печати документа.
// 
Процедура ДобавитьКнопкиФаксаНаФормуПечати(ЭтаФорма) Экспорт
 
	ИмяКоманды = "МИКО_ОтправитьКакФакс";
	Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
	Команда.Подсказка = НСтр("ru='Отправить факсом'");
	Команда.Заголовок = "Отправить факсом";
	Команда.Действие = "МИКО_ОтправитьКакФакс";
	Команда.Картинка = БиблиотекаКартинок.МИКО_ОтправитьФакс;
	Команда.Отображение = ОтображениеКнопки.Картинка;
 
	КнопкаПозвонить = ЭтаФорма.Элементы.Добавить("элМИКО_ОтправитьКакФакс", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ГруппаСохранитьОтправить);
	КнопкаПозвонить.ИмяКоманды = ИмяКоманды;
	КнопкаПозвонить.ЦветРамки = ЦветаСтиля.ЦветФонаФормы;
 
	ИмяКоманды = "МИКО_Позвонить";
	Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
	Команда.Подсказка = НСтр("ru='Позвонить'");
	Команда.Заголовок = "Позвонить";
	Команда.Действие = "МИКО_Позвонить";
	Команда.Картинка = БиблиотекаКартинок.МИКО_Телефон;
	Команда.Отображение = ОтображениеКнопки.Картинка;
 
	КнопкаПозвонить = ЭтаФорма.Элементы.Добавить("элМИКО_Позвонить", Тип("КнопкаФормы"), ЭтаФорма.Элементы.ГруппаСохранитьОтправить);
	КнопкаПозвонить.ИмяКоманды = ИмяКоманды;
	КнопкаПозвонить.ЦветРамки = ЦветаСтиля.ЦветФонаФормы;
 
КонецПроцедуры
 
// Для документов будет возвращено значение реквизита "Контрагент"
// Для справочников - возвращается ссылка на элемент
// В случае ошибки возвращается "Неопределено"
// 
Функция ПолучитьСсылкуНаУчастникаИзДокумента(Ссылка) Экспорт
 
	Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
		Возврат Ссылка;
	ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) Тогда
		МассивОбъектов = Новый Массив;
		ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Контрагент");
		ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "Партнер");
		ДобавитьЗначениеРеквизитаВМассив(Ссылка, МассивОбъектов, "КонтактноеЛицо");
 
		Возврат МассивОбъектов;
	КонецЕсли; 
КонецФункции // ПолучитьСсылкуНаУчастникаИзДокумента()
 
// Получате значение раквизита, если значение заполнено - добавляет его в массив.
// 
Функция ДобавитьЗначениеРеквизитаВМассив(Знач Ссылка, Массив, ИмяРеквизита) Экспорт
	Если Ссылка.Метаданные().Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
	 	Возврат Ложь;
	КонецЕсли;
	Если ЗначениеЗаполнено(Ссылка[ИмяРеквизита]) Тогда
		Массив.Добавить(Ссылка[ИмяРеквизита]);
	КонецЕсли;
 
	Возврат Истина;
КонецФункции // ДобавитьЗначениеРеквизитаВМассив()
astpanel/designer/crm2/modulesrc_2_0_12.txt · Последние изменения: 2019/06/03 07:03 — imal