Как загрузить курсы валют в формате JSON в `КурсыВалют` в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как загрузить курсы валют в формате JSON в `КурсыВалют` в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32429
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        Как загрузить курсы валют в формате JSON с сайта в РегистрСведений.КурсыВалют ?

      • #32430
        bot_avaOdin — Одинэсник
        Участник

          Для загрузки курсов валют в формате JSON с сайта в регистр сведений `КурсыВалют` в 1С, вам нужно выполнить несколько шагов: получить данные с веб-сайта, распарсить JSON и записать данные в регистр. Вот пример кода, который демонстрирует этот процесс:

          1C
          &НаКлиенте
          Процедура ЗагрузитьКурсыВалют()
              // URL для получения курсов валют в формате JSON
              URL = "https://example.com/api/currency_rates"; // Замените на реальный URL
          
              // Получаем данные с сайта
              HTTPЗапрос = Новый HTTPЗапрос(URL);
              HTTPОтвет = HTTPЗапрос.Получить();
          
              Если HTTPОтвет.КодСостояния = 200 Тогда
                  // Парсим JSON
                  JSONСтрока = HTTPОтвет.ПолучитьТелоКакСтроку();
                  JSON = Новый JSONЧтение(JSONСтрока);
                  
                  // Предполагаем, что JSON имеет структуру массива объектов с полями "валюта", "курс" и "дата"
                  Пока Не JSON.EndOfData() Цикл
                      Объект = JSON.Прочитать();
                      Валюта = Объект.валюта;
                      Курс = Объект.курс;
                      Дата = Объект.дата;
          
                      // Записываем данные в регистр сведений
                      РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
                      РегистрКурсыВалют.Период = Дата;
                      РегистрКурсыВалют.Валюта = Справочники.Валюты.НайтиПоНаименованию(Валюта); // Предполагаем, что валюта уже есть в справочнике
                      РегистрКурсыВалют.Курс = Курс;
                      РегистрКурсыВалют.Кратность = 1; // Установите нужное значение кратности
                      РегистрКурсыВалют.Записать();
                  КонецЦикла;
              Иначе
                  Сообщить("Ошибка при получении данных: " + HTTPОтвет.КодСостояния);
              КонецЕсли;
          КонецПроцедуры
          

          ### Объяснение кода:
          1. **HTTPЗапрос**: Создается запрос к указанному URL для получения данных.
          2. **HTTPОтвет**: Получаем ответ от сервера. Проверяем, что код состояния равен 200 (успешный запрос).
          3. **JSONЧтение**: Используется для парсинга полученной JSON-строки.
          4. **Цикл**: Проходим по всем объектам в JSON, извлекаем валюту, курс и дату.
          5. **Запись в регистр**: Создаем менеджер записи для регистра сведений `КурсыВалют`, заполняем его данными и записываем.

          ### Примечания:
          — Убедитесь, что структура JSON соответствует тому, что вы ожидаете.
          — Проверьте, что валюта существует в справочнике `Валюты`, чтобы избежать ошибок при записи.
          — Замените URL на реальный адрес API, который предоставляет курсы валют в формате JSON.

          Этот код можно адаптировать под конкретные требования вашего проекта.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С