Как настроить загрузку курсов валют и классификатора банков в 1С после отключения сервиса РБК?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

С развитием облачных технологий и усилением контроля за лицензионным использованием программных продуктов фирма «1С» перевела свои типовые конфигурации на собственные веб-сервисы для получения актуальной финансовой информации. Ранее используемый сервис РБК (РосБизнесКонсалтинг) был выведен из эксплуатации. В связи с этим у многих системных администраторов и специалистов по сопровождению возникли сложности с настройкой сетевых экранов и прокси-серверов в закрытых или жестко ограниченных корпоративных сетях.

В этой статье мы подробно разберем, по каким адресам теперь обращается программа, как устроены эти запросы изнутри, как правильно настроить доступ в интернет для сервера 1С, а также рассмотрим альтернативные варианты получения курсов валют напрямую от Центробанка РФ.

Новые адреса веб-сервисов 1С для настройки сетевых экранов

Если на вашем предприятии сервер 1С:Предприятия работает в изолированном контуре, а доступ в глобальную сеть строго регламентирован, системным администраторам необходимо открыть доступ по протоколу HTTPS (порт 443) к следующим официальным ресурсам фирмы «1С»:

  1. Сервис получения курсов валют: https://currencyrates.1c.ru/exchangerate/v1
  2. Сервис получения классификатора банков (БИК): https://bankregister.1c.ru/bankregister/v1

Давайте проанализируем, как именно происходит обращение к сервису валют. Вместо классических XML-пакетов или тяжелых SOAP-запросов, API «1С» использует более легкий и оптимизированный подход. Запрос на получение курса формируется по шаблону добавления кода валюты в конец адресной строки. Например, для получения истории курса доллара США (код валюты 840) отправляется запрос вида:

https://currencyrates.1c.ru/exchangerate/v1/840.tsv

В ответ сервер возвращает файл в формате TSV (значения, разделенные знаком табуляции). Этот файл содержит всю историю изменений курса начиная с 2000 года. Формат строки выглядит следующим образом:

[ДатаКурса в формате ГГГГММДД] [Кратность] [Значение]

Чтобы избежать ежедневного скачивания полной истории курсов по всем валютам, разработчики внедрили оптимизацию на уровне HTTP-протокола. При повторном обращении платформа отправляет HTTP-заголовок If-Modified-Since, указывая дату последней успешной загрузки. Если данные на стороне сервера не изменились, веб-сервер возвращает быстрый ответ с кодом 304 Not Modified, тем самым экономя входящий трафик организации.

Требования к авторизации и Интернет-поддержке (1С:ИТС)

На этапе внедрения новой системы в 2019 году серверы авторизации «1С» работали в открытом режиме. Это было сделано для того, чтобы не нарушать бизнес-процессы клиентов, использующих устаревшие или сильно кастомизированные конфигурации. Однако сегодня ситуация изменилась.

Для успешного выполнения регламентных заданий по обновлению классификаторов в программе должна быть подключена Интернет-поддержка пользователей. Механизм работает по следующим правилам:

  1. Для базовых версий конфигураций достаточно иметь зарегистрированный программный продукт в личном кабинете на портале поддержки. Сама загрузка будет выполняться бесплатно.
  2. Для версий ПРОФ и КОРП требуется наличие действующего договора информационно-технологического сопровождения (1С:ИТС или 1С:КП). Без активной подписки веб-сервис вернет ошибку авторизации.

Если у вас возникают регулярные ошибки авторизации при фоновом выполнении регламентного задания, рекомендуем проверить настройки интернет-поддержки через меню: Администрирование — Интернет-поддержка и сервисы — Настройки Интернет-поддержки.

Резервный вариант: скрытый откат на сервер РБК

В Библиотеке стандартных подсистем (БСП), на базе которой построены практически все современные конфигурации (Бухгалтерия предприятия, Управление торговлей, ERP), разработчики заложили скрытую возможность переключения источника данных обратно на серверы РБК.

Для этого в системе предусмотрена скрытая константа. Давайте разберем по шагам, как активировать этот функционал:

  1. Перейдите в главное меню программы и выберите раздел Функции для технического специалиста (в старых версиях этот пункт назывался "Все функции"). Если данный пункт не отображается, включите его в параметрах системы (Настройки — Параметры — Отображать команду "Функции для технического специалиста").
  2. В открывшемся дереве объектов найдите раздел Константы.
  3. Найдите константу с именем ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют.
  4. Установите флаг в значение Истина и сохраните настройки.

После активации этой константы конфигурация перенаправит запросы на адрес cbrates.rbc.ru. Однако мы должны предупредить, что данный способ не является надежным. Серверы РБК могут отдавать данные с задержкой, а в периоды высокой нагрузки или изменения протоколов безопасности со стороны РБК пользователи часто сталкиваются с ошибками разбора XML-пакетов или кодами ответа 404.

Прямая загрузка курсов с сайта Центробанка РФ (ЦБ РФ)

Многие компании не хотят зависеть от стабильности сервисов фирмы «1С» или требований подписки ИТС. В таком случае оптимальным решением является написание собственной небольшой обработки или расширения, которое будет забирать данные напрямую с открытого API Центрального Банка Российской Федерации.

Центробанк отдает актуальную информацию по курсам абсолютно бесплатно, без авторизации, логинов и паролей. Запрос выполняется по протоколу HTTPS, а данные возвращаются в структурированном XML-виде.

Рассмотрим пример программного кода на языке 1С, который позволяет получить курс конкретной валюты на выбранную дату напрямую с серверов ЦБ РФ:


&НаСервере
Функция ПолучитьКурсСайтаЦентробанка(КодВалютыЦБ, ЦелеваяДата) Экспорт
    
    // Подготавливаем дату в формате дд/мм/гггг для передачи в параметрах запроса
    СтрокаДаты = Формат(ЦелеваяДата, "ДФ=dd/MM/yyyy");
    
    // Параметр КодВалютыЦБ — это уникальный идентификатор валюты в классификаторе ЦБ (например, для USD это R01235)
    АдресЗапроса = "/scripts/XML_dynamic.asp?date_req1=" + СтрокаДаты + "&date_req2=" + СтрокаДаты + "&VAL_NM_RQ=" + КодВалютыЦБ;
    
    // Создаем защищенное SSL-соединение
    Защита = Новый ЗащищенноеСоединениеOpenSSL();
    Соединение = Новый HTTPСоединение("www.cbr.ru", 443,,,,, Защита);
    
    Запрос = Новый HTTPЗапрос(АдресЗапроса);
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            
            // Начинаем парсинг полученного XML-ответа
            ЧтениеXML = Новый ЧтениеXML;
            ЧтениеXML.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("windows-1251"));
            
            КурсЧислом = 0;
            КратностьЧислом = 1;
            
            Пока ЧтениеXML.Прочитать() Цикл
                Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                    Если ЧтениеXML.Имя = "Nominal" Тогда
                        ЧтениеXML.Прочитать();
                        КратностьЧислом = Число(ЧтениеXML.Значение);
                    ИначеЕсли ЧтениеXML.Имя = "Value" Тогда
                        ЧтениеXML.Прочитать();
                        // Заменяем запятую на точку для корректного преобразования строки в число
                        ОбработаннаяСтрока = СтрЗаменить(ЧтениеXML.Значение, ",", ".");
                        КурсЧислом = Число(ОбработаннаяСтрока);
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            
            Если КурсЧислом > 0 Тогда
                Возврат Новый Структура("Курс, Кратность", КурсЧислом, КратностьЧислом);
            КонецЕсли;
            
        КонецЕсли;
    Исключение
        ЗаписьЖурналаРегистрации("Интеграция.Центробанк", 
            УровеньЖурналаРегистрации.Ошибка,,, 
            ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;
    
    Возврат Неопределено;
КонецФункции

Используя данный метод, вы можете легко автоматизировать заполнение справочника Валюты в вашей конфигурации, настроив регламентное задание, которое будет запускаться каждую ночь и обновлять курсы без обращения к порталу 1С:ИТС.

Решение проблем с гео-блокировками и прокси-серверами

Современные реалии накладывают дополнительные ограничения на работу сетевой инфраструктуры. Если серверы вашей компании или облачные базы данных расположены за пределами Российской Федерации, попытки достучаться до currencyrates.1c.ru могут завершаться ошибкой превышения времени ожидания (Time-out). Это связано с защитными механизмами Cloudflare или внутренней гео-фильтрацией ресурсов фирмы «1С» для предотвращения сетевых атак.

Для решения этой проблемы мы рекомендуем два подхода:

  1. Использование локального прокси-сервера: настройте прокси-сервер, территориально находящийся в РФ. Пропишите его параметры на стороне сервера 1С. Это можно сделать глобально в файле настроек платформы dbfs.cfg или непосредственно в коде конфигурации через объект ИнтернетПрокси.
  2. Маршрутизация трафика: настройте статический маршрут на системном уровне операционной системы (Windows Route или iptables в Linux), чтобы все запросы к подсетям 1С уходили через специализированный VPN-туннель с российским IP-адресом.

Ручное обновление в полностью закрытых системах

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

  1. С компьютера, имеющего доступ в интернет, зайти под своими учетными данными на Портал 1С:ИТС в раздел скачивания обновлений классификаторов.
  2. Скачать архивный файл классификатора банков (БИК) или курсов валют на флеш-накопитель.
  3. Внутри закрытого контура в 1С перейти в раздел: Администрирование — Интернет-поддержка и сервисы — Классификаторы и программы — Обновление классификаторов.
  4. Выбрать пункт Загрузить обновление из файла, указать путь к скачанному архиву и завершить процедуру обновления.

Этот метод гарантирует полную безопасность информационной системы предприятия, хотя и требует регулярных ручных действий со стороны ИТ-отдела.

← На главную