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