Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы документов
Редакторы документов
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
ВКС и мессенджер
ВКС и мессенджер
Мобильные редакторы
Мобильные редакторы
Почтовый сервер
Почтовый сервер
Органайзер
Органайзер
Сервер лицензирования
Сервер лицензирования
Файл-Экспресс
Файл-Экспресс
Аналитика
Аналитика
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Курсы обмена валюты

Обновлено: 07.08.26

Инструкция актуальна для версии продукта: 2026.2.2.2683

Этот макрос получает значения курсов валют за последние 7 опубликованных дней и автоматически заполняет ими таблицу. По умолчанию используется курс доллара США (USD). Чтобы получить данные по другой валюте, измените значение переменной sCurrency, например:
var sCurrency = «EUR»;

В качестве значения переменной можно указать код другой валюты (USD, EUR, GBP, CNY и т.д.).

Макрос получает актуальные данные о курсах валют, затем последовательно загружает значения за предыдущие дни. Используются только дни, для которых были опубликованы курсы, поэтому выходные и праздничные дни пропускаются автоматически.

После выполнения макроса в таблицу добавляются дата и значение выбранного курса. Полученные данные можно использовать для построения или обновления графика.

Макрос можно назначить автофигуре. При нажатии на нее выполняется макрос, таблица заполняется актуальными значениями, а связанный с ней график перестраивается.

Макрос:

(function()
{
    var sCurrency = "USD";

    var sUrl = "https://www.cbr-xml-daily.ru/daily_json.js";

    var sheet = Api.GetActiveSheet();

    sheet.GetRangeByNumber(0, 0).SetValue("Дата");
    sheet.GetRangeByNumber(0, 1).SetValue(sCurrency);

    var nRow = 1;
    var nDays = 7;

    for (var i = 0; i < nDays; i++)
    {
        $.ajax({
            url: sUrl,
            async: false,
            dataType: "json",

            success: function(data)
            {
                var oCurrency = data.Valute[sCurrency];

                if (oCurrency)
                {
                    var sDate = data.Date.substring(0, 10);

                    sheet.GetRangeByNumber(nRow, 0)
                        .SetValue(sDate);

                    sheet.GetRangeByNumber(nRow, 1)
                        .SetValue(
                            oCurrency.Value / oCurrency.Nominal
                        );

                    nRow++;
                }

                if (data.PreviousURL)
                {
                    sUrl = "https:" + data.PreviousURL;
                }
            }
        });
    }

})();

В отличие от предыдущего примера, в данном варианте для получения данных используется внешний API с авторизацией по ключу.
Перед использованием необходимо указать собственный API-ключ в переменной apiKey:var apiKey = "API_KEY";

В массиве currencies можно указать список валют, курсы которых необходимо получить. В приведенном примере используются значения для USD, EUR, GBP и SGD относительно базовой валюты RUB.

После выполнения запроса полученные значения автоматически добавляются в таблицу: в первый столбец записывается код валюты, во второй — соответствующий курс.

(function () {
    function fetchAndPopulateData(url, currencies) {
      let xhr = new XMLHttpRequest();
      xhr.open("GET", url, true);

      xhr.onload = function () {
        if (this.status === 200) {
          let data = JSON.parse(this.response).data;
          let sheet = Api.GetActiveSheet();
          
          sheet.GetRange("A1").SetValue("Currency Code");
          sheet.GetRange("B1").SetValue("Exchange Rate");

          currencies.forEach((currency, index) => {
            if (data[currency]) {
              sheet.GetRange(`A${index + 2}`).SetValue(currency);
              sheet.GetRange(`B${index + 2}`).SetValue(data[currency].value);
            }
          });
        }
      };

      xhr.send();
    }

    let currencies = ["USD", "EUR", "GBP", "SGD"];
    let apiKey = "API_KEY"; // Вставьте здесь свой API ключ
    let latestURL = 'https://api.sitename.ru/v3/latest?apikey=' + apiKey 
            + '&currencies=' + currencies.join("%2C") 
            + '&base_currency=RUB';
    fetchAndPopulateData(latestURL, currencies);
})();

Была ли эта статья полезной?

Поделитесь пожалуйста своим мнением

      В статье есть ошибкиРекомендации не помоглиТекст трудно понятьСодержание статьи не соответствует заголовкуДругое