В формах некоторых справочников (например, «Контрагент») присутствует закладка «Контактная информация». Для полей адреса и электронной почты уже разработан механизм добавляющий кнопку с соответствующим действием. Добавим для поля телефон аналогичную кнопку с действием «Позвонить».
Порядок действий следующий.
Функция Действие(Форма, Тип, ИмяРеквизита, ГруппаДействий, КоличествоАдресов, ЕстьКомментарий = Ложь) МожноСоздаватьДействие = Истина; Если Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями"); Если НЕ МодульРаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() Тогда МожноСоздаватьДействие = Ложь; КонецЕсли; Иначе МожноСоздаватьДействие = Ложь; КонецЕсли; КонецЕсли; Если МожноСоздаватьДействие И ((Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница // PT1C / Панель телефонии Asterisk / Начало Или Тип = Перечисления.ТипыКонтактнойИнформации.Телефон // PT1C / Панель телефонии Asterisk / Конец Или Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) Или (Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И КоличествоАдресов > 1)) Тогда // Есть действие ... Если Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда ... ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда ... ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда ... // PT1C / Панель телефонии Asterisk / Начало ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда Элемент.Заголовок = НСтр("ru='Позвонить'"); Команда.Подсказка = НСтр("ru='Позвонить'"); Команда.Картинка = БиблиотекаКартинок.МИКО_Телефон; // PT1C / Панель телефонии Asterisk / Конец КонецЕсли; ... Иначе ... КонецЕсли; Возврат Элемент; КонецФункции
Функция ПодключаемаяКоманда(Форма, Знач ИмяКоманды) Экспорт ... Если КомандаКонтекстногоМеню Тогда ... ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда ... ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда ... ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда ... // PT1C / Панель телефонии Asterisk / Начало ИначеЕсли ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда ПозвонитьПоТелефону(Форма, ИмяРеквизита); // PT1C / Панель телефонии Asterisk / Конец КонецЕсли; Возврат Неопределено; КонецФункции