Кастомизация
14
Фев
2

Доступ к интернет-сервису из форм CRM

Рассмотрим пример, как получить доступ к интернет сервису из форм CRM. Через JavaScript код получим обменный курс межу RUB и указангнной (в picklist’е) валютой. Для этого воспользуемся сервисом webservicex.net, предоставляющим в открытом доступе конвертор валют.

Добавим один picklist и два поля (с числовым типом) к объекту Счет

  • Перейдите Параметры — Настройка — Настроить объекты, два раза щелкните на объекте Счет;
  • На левой панели перейдите в Атрибуты, щелкните Создать. Назовите новое поле new_CurrencyRate, отоброжаемое имя Курс, а его тип задайте Float. Все остальное оставьте по умолчанию, сохраните и закройте. Создайте аналогичым образом аналогичное поле с именем new_CurrencyTotal и отображаемым именем Пересчет;
  • Теперь создадим пиклист. Нажмите Создать, задайте имя new_CurrencyCode и отображаемое имя Валюта. Тип задайте Picklist и добавьте в него значения с метками Доллары США, Евро, Немецкая марка, Йены (соответственно значения будет от 1 до 4, либо измените соответвие кодов и меток в нижеследующем JavaScript коде);

Теперь добавим JavaScript код:

  • На левой панели перйдите на формы и пердставленияя, два раза щекните на Форма;
  • Щелкните Добавить поле и вынесите на форму три ранее созданных поля: Валюта, Курс, Пересчет;
  • Далее выделите поле Валюта и щелкните Изменить свойтва, перейдите на вкладку События и щелкните кнопку изменить, В открывшемся окне поставьте галку Событие сделано активным и добавьте в нижеследующее текстовое поле JavaScript код. Два раза ОК, Сохранить и закрыть;
  • Публикуем.

А вот сам код:

//Объявление переменных
var i=0; var j=0; var k=0; var r=0;
var serverUrl = "http://www.webservicex.net";

// В зависимости от выбранной валюты в пиклесте присваиваем переменной i соответствующее значение.
switch (parseInt(event.srcElement.DataValue, 10))
{
case 1:
i = "USD";
break;
case 2:
i = "EUR";
break;
case 3:
i = "GBP";
break;
case 4:
i = "JPY";
break;
}

//Подключение к веб-службе и запрос данных методом GET
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("get", serverUrl + "/CurrencyConvertor.asmx/ConversionRate?FromCurrency=RUB&ToCurrency="+escape(i), false);
xmlhttp.send();
var startTag = "<double xmlns=\"http://www.webserviceX.NET/\">";
var endTag = "</double>";
var exch;
var valueStart = 0;
var valueEnd = 0;

//Разбор возвращенного XML кода
valueStart = xmlhttp.responseXML.xml.indexOf(startTag, valueEnd) + startTag.length;
valueEnd = xmlhttp.responseXml.xml.indexOf(endTag, valueEnd+1);
exch = xmlhttp.responseXML.xml.substring(valueStart, valueEnd);

//Заполнение поля «Курс»
crmForm.all.new_currencyrate.DataValue = parseFloat (exch);
j = crmForm.all.totalamount.DataValue;
var kk = j*(parseFloat(exch));

//Вычисление и заполнение поля «Пересчет»
crmForm.all.new_currencytotal.DataValue = kk;

Теперь перейдте в область Продажи и создайте объект Счет. Заполните его обязательные поля, а также добавьте хотя бы один товар, чтобы у нас поле Общая сумма было заполнено. Ну, а теперь измените зачение в поле Валюта 🙂

Комментарии (2)
  • Camena 14.02.2009

    Спасибо за статью!
    Вопрос: с помощью этого сервиса можно получать текущий, то есть актуальный курс валюты?

  • slivka_83 14.02.2009

    Я так понимаю, он и так текущий. Более важен другой вопрос — какого региона (читай Банка) этот курс? и думаю на него можно найти ответ покапавшись на йсайте этого сервиса.

*

code