Приведу пример динамического плагина, который поможет получить курс указанной валюты с сайта ЦБ РФ и пересчитать вашу цену.
Базовая информация о работе с ценой в поле есть в этом материале.
Вот код плагина:
using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Xml;
using DynamicPluginData;
namespace DatacolDynamicPluginNS
{
public class DynamicPluginClass
{
public static string processDataFieldValue(string s, ItemInfo itemInfo, GlobalInfo globalInfo)
{
double usd = GetUsdRate();
double inusd;
inusd = Math.Round(Convert.ToDouble(s) / usd, 2);
return inusd.ToString();
}
private static double GetUsdRate()
{
string url = "https://www.cbr.ru/scripts/XML_daily.asp";
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.GetEncoding("windows-1251");
string xmlContent = client.DownloadString(url);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlContent);
XmlNodeList valuteNodes = xmlDoc.GetElementsByTagName("Valute");
foreach (XmlNode node in valuteNodes)
{
XmlNode charCodeNode = node.SelectSingleNode("CharCode");
if (charCodeNode != null && charCodeNode.InnerText == "USD")
{
XmlNode valueNode = node.SelectSingleNode("Value");
if (valueNode != null)
{
string value = valueNode.InnerText;
return Convert.ToDouble(value.Replace('.', ','));
}
}
}
}
throw new Exception("Rate not found");
}
}
}
Важные моменты, если вы получаете цену с десятыми, сотыми ... то разделитель должен быть ",". Если у вас точка, то делайте замену. Также в цене не должно быть посторонних знаков и символов, например пробелы. Это должно быть число или число с разделителем ",". Например, 999,99.
Если Вам нужно другая валюта, в примере USD, тогда открывайте страницу https://www.cbr.ru/scripts/XML_daily.asp и смотрите код нужной вам. Например, Вам нужен китайский юань, тогда меняйте USD на CNY в строке
if (charCodeNode != null && charCodeNode.InnerText == "USD")
Также если нужно округлить до десятых, или округлить до целого, тогда меняйте 2 на 1 или 0 (до целого) в строке
inusd = Math.Round(Convert.ToDouble(s) / usd, 2);
После добавления динамического плагина, нужно будет подключить 2 библиотеки:
- System.Net;
- System.Xml;
Это делается на вкладке Библиотеки в редакторе динамических плагинов