Кастомизация
28
Май
11

Делаем из поля ссылку

На стандартной форме Бизнес-партнеры, есть поле Веб-узел, которое предназначено, как следует из названия, для ссылки на сайт бизнес-партнера. Аналогичные поля есть и в других объектах (правда, в большинстве случаев, они не вынесены на форму). При заполнении этого поля и двойном щелчке по нему, откроется новая страница/вкладка браузера с этим сайтом. Тут все понятно… но что если нам нужно создать аналогично по функционалу кастомное поле (т.е. кастомное поле со ссылкой)? В тут нас ждет «засада» 🙂 стандартными средствами этого не добиться, а копировать и вставлять ссылку в строку браузера ручками как-то влом… Но лень человеческая безгранична 🙂 Поэтому сейчас мы сделаем эту самую ссылку кликабельной 🙂

Предположим, в секции Адрес на карточек Бизнес-партнеры нам нужна прямая ссылка на страничку со схемой проезда к этому партнеру:

  • Откройте CRM и перейдите Параметры – Настройка – Настроить объекты – откройте объект Бизнес-партнеры.
  • На правой панели перейдите на Атрибуты – Жмите Создать – задайте все нужные Вам параметры, а качестве тип укажите nvarchar. Сохраните и закройте.
  • Снова на правой панели перейдите на Форы и представления – откройте Форма – добавьте на форму только что созданное поле (на правой панели кнопка Добавить поле).



  • Жмите Свойства формы – откройте событие При загрузке и вставьте туда следующий код:
    //меняем цвет текста в поле ссылки на синий и подчеркиваем. Не забудьте изменить имя поля для Вашей системы.
    crmForm.all.new_sitemap.style.color = "#0000ff";   
    crmForm.all.new_sitemap.style.textDecoration = "underline";
      
    // Функция открытия сайта
    function CreateURL(WebSite) {   
    	return function() {   
    		if (WebSite != null && WebSite.value.length > 0) {   
    			var prefix = WebSite.value.substring(5, 0);   
    			if (prefix == "http:") {   
    				window.open(WebSite.value);   
    			} else {   
    				window.open("http://" + WebSite.value);   
    			}   
    		}   
    	}   
    }
    // При наступлении события "двоной щелчок" вызывается функция открытия сайта и в нее передается содержимой кастомного поля. Только не забудьте изменить имя поля для Вашей системы.
    crmForm.all.new_sitemap.attachEvent('ondblclick', CreateURL(crmForm.all.new_sitemap));
    
  • Закрываем, сохраняем и публикуем. Ну и осталось открыть карточку Бизнес-партнера и протестировать…



Ссылка на почту

Тоже, довольно, необходимое удобство. Щелкаем по почтовому адресу и открывается наш любимый почтовый клиент 🙂 Вы скажите что и из CRM’а можно отправлять почту! Да, это так. Но мало ли… может кому и понадобится 🙂 А делов то… вешаем на онлоад формы нижеследующий скриптик и заменяем название поля на Ваше:

crmForm.all.emailaddress1.style.color = "#0000ff";
crmForm.all.emailaddress1.style.textDecoration = "underline";

if(crmForm.FormType == 1 || crmForm.FormType == 2) {
	crmForm.all.emailaddress1.ondblclick = function() {
		var email = crmForm.all.emailaddress1.DataValue;
		if ((email != null) && (email.length > 0)) {
			window.navigate("mailto:" + email);
		}
	}
}


Ссылка на папку

А теперь представим, что у нас есть некое файловое хранилище в виде расшаренной папки на каком-нибуь сервере. И для каждого клиента, в отдельной папке, хранятся связанные с ним документы. А чтобы упростить поиск, нужно создать на форме бизнес-партнера ссылку для быстрого перехода. Для этого создаем какую-нибудь папку и расшариваем ее. Далее создаем новый атрибут на форме Бизнес-партнера и вешаем на событие OnLoad следующий скрипт. После этого открываем форму. вводим название конечной папки в это поле и все. Только замените название поля и путь к файловому хранилищу (в виде сетевого имени). Да и учтите что при написании пути обратные слээши надо дублировать, т.к. это служебные символы:

crmForm.all.new_docpath.style.color = '#0000FF';
crmForm.all.new_docpath.style.textDecorationUnderline = true;
crmForm.all.new_docpath.style.fontWeight = 'bold';

crmForm.all.new_docpath.ondblclick = function()  {
        var folder = crmForm.all.new_docpath.DataValue;
        window.open("\\\\Crmtest\\documents\\" + folder);
}


Комментарии (11)
  • Олег 28.05.2009

    Пример интересный, но я не понял зачем писать скрипт для URl-поля, если можно выбрать формат nvarchar-а URL и это текстовое поле тоже даст возможность переходить по ссылкам 🙂

  • slivka_83 28.05.2009

    Ну… чего в жизни не бывает 🙂 может кому понадобится сделать из поля А ссылку только в том случаи, если поле Б равно 2 🙂

  • Lester 28.05.2009

    Прошу прощение за назойливость.. Вопрос: а последний скрипт рабочий? Чего то у меня ошибку выдает :(((

  • slivka_83 28.05.2009

    Спрашивайте сколько влезет 🙂

    Ответ:
    Ну, да 🙂 на скриншотах же показано 🙂 а что конкретно у Вас не работает? ошибка какая-то появляется?

  • Lester 28.05.2009

    Ага, вставляю скрипт, запускаю, вылетает ошибка: «Ошибка в изменяемом событии поля. Поле: window Событие: Onload Ошибка:’crmForm.all.new_docpath.style’ is null or not an object..
    Вот такие траблы, буду благодарен за любую инфу)))
    З.Ы.: в начале скрипта буковки не хватает «с».)))

  • slivka_83 28.05.2009

    CRM ругается на то что у Вас нет поля new_docpath? вы создали это поле? вынесли на форму?

    Я специально создал это поле для примера, в стандартной настройке ни на какой форме этого поля нет!

  • Lester 28.05.2009

    Вууаалляя!!!))) Огромное спасибо за ваши труды! Всё работает как швейцарские часы!)))

  • Дмитрий 28.05.2009

    привет!

    скажи пожалуйста, а возможно ли в текстовое поле вставить текст в котором будет ссылка, т.е.

    текст текст текст ссылка текст текст

  • slivka_83 28.05.2009

    В обычное нет. Разве что к большим текстовым областям можно как-нибудь прикрутить WYSIWYG редактор на основе яваскрип.

  • AISt 28.05.2009

    Действительно очень удобно, особенно с почтой.
    Не подскажите как изменить курсор мыши при наведении на поле-ссылку?

*

code