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

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

Инструкция актуальна для версии: 2026.2.2.2683 (Релиз-кандидат)
Обновлено: 07.08.26

Этот макрос получает значения курсов валют за последние 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);
})();

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

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

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