С развитием облачных технологий и усилением контроля за лицензионным использованием программных продуктов фирма «1С» перевела свои типовые конфигурации на собственные веб-сервисы для получения актуальной финансовой информации. Ранее используемый сервис РБК (РосБизнесКонсалтинг) был выведен из эксплуатации. В связи с этим у многих системных администраторов и специалистов по сопровождению возникли сложности с настройкой сетевых экранов и прокси-серверов в закрытых или жестко ограниченных корпоративных сетях.
В этой статье мы подробно разберем, по каким адресам теперь обращается программа, как устроены эти запросы изнутри, как правильно настроить доступ в интернет для сервера 1С, а также рассмотрим альтернативные варианты получения курсов валют напрямую от Центробанка РФ.
Если на вашем предприятии сервер 1С:Предприятия работает в изолированном контуре, а доступ в глобальную сеть строго регламентирован, системным администраторам необходимо открыть доступ по протоколу HTTPS (порт 443) к следующим официальным ресурсам фирмы «1С»:
https://currencyrates.1c.ru/exchangerate/v1https://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, тем самым экономя входящий трафик организации.
На этапе внедрения новой системы в 2019 году серверы авторизации «1С» работали в открытом режиме. Это было сделано для того, чтобы не нарушать бизнес-процессы клиентов, использующих устаревшие или сильно кастомизированные конфигурации. Однако сегодня ситуация изменилась.
Для успешного выполнения регламентных заданий по обновлению классификаторов в программе должна быть подключена Интернет-поддержка пользователей. Механизм работает по следующим правилам:
Если у вас возникают регулярные ошибки авторизации при фоновом выполнении регламентного задания, рекомендуем проверить настройки интернет-поддержки через меню: Администрирование — Интернет-поддержка и сервисы — Настройки Интернет-поддержки.
В Библиотеке стандартных подсистем (БСП), на базе которой построены практически все современные конфигурации (Бухгалтерия предприятия, Управление торговлей, ERP), разработчики заложили скрытую возможность переключения источника данных обратно на серверы РБК.
Для этого в системе предусмотрена скрытая константа. Давайте разберем по шагам, как активировать этот функционал:
ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют.После активации этой константы конфигурация перенаправит запросы на адрес 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С» для предотвращения сетевых атак.
Для решения этой проблемы мы рекомендуем два подхода:
dbfs.cfg или непосредственно в коде конфигурации через объект ИнтернетПрокси.В случаях, когда служба безопасности категорически запрещает открывать доступ к внешним адресам из закрытого сегмента сети, единственным выходом остается ручное обновление классификаторов. Для этого администратору необходимо выполнить следующие шаги:
Этот метод гарантирует полную безопасность информационной системы предприятия, хотя и требует регулярных ручных действий со стороны ИТ-отдела.