Почему не загружаются курсы валют в 1С, если сервер находится за рубежом?

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

При работе с базами данных 1С, размещенными на зарубежных серверах, пользователи нередко сталкиваются с ошибкой Internet error: Timeout exceeded при попытке автоматического обновления курсов валют с сайта currencyrates.1c.ru. Это распространенная проблема, связанная с сетевыми ограничениями доступа к инфраструктуре 1С для иностранных IP-адресов. Давайте разберем, как проанализировать ситуацию и какими методами можно решить эту задачу.

Анализ причин возникновения ошибки

Первое, что необходимо выяснить — блокирует ли доступ ваш локальный брандмауэр или инфраструктура на стороне фирмы «1С». Часто запросы из определенных подсетей, особенно если они относятся к публичным дата-центрам, могут автоматически отсекаться в целях безопасности. Если браузер на том же сервере успешно открывает ссылку, но платформа 1С выдает Timeout exceeded, это с высокой долей вероятности означает, что сетевой экран блокирует специфические запросы от процесса платформы.

Решение 1: Организация собственного механизма обмена через промежуточные файлы

Если нет возможности получить прямой доступ к сервисам 1С, самым надежным способом будет создание собственного механизма загрузки. Мы можем реализовать выгрузку данных о курсах валют из базы, расположенной в РФ, в файл и последующую загрузку этого файла в зарубежную базу. Для этого отлично подойдет формат JSON или XML.

Рассмотрим алгоритм выгрузки данных на «российской» стороне. Мы будем использовать СериализаторXDTO для формирования структуры данных:


Функция ЗаписиРегистраВТекстJSON()
    Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют ГДЕ Период >= &ДатаС");
    Запрос.УстановитьПараметр("ДатаС", ДатаС);
    Выборка = Запрос.Выполнить().Выбрать();
    НаборыЗаписей = Новый Соответствие();
    Сч = 0;
    Пока Выборка.Следующий() Цикл
        Сч = Сч + 1;
        Запись = Новый Структура("Период, Валюта, Курс, Кратность, _КурсЕЦБ, _КратностьЕЦБ", 
                                 Выборка.Период, Выборка.Валюта, Выборка.Курс, Выборка.Кратность, 
                                 Выборка._КурсЕЦБ, Выборка._КратностьЕЦБ);
        НаборыЗаписей.Вставить("" + Сч, Запись); 
    КонецЦикла;
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, НаборыЗаписей, НазначениеТипаXML.Явное);
    Возврат ЗаписьJSON.Закрыть();
КонецФункции

Затем, на стороне зарубежного сервера, мы производим обратную процедуру — чтение файла и обновление регистра КурсыВалют:


ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
НаборыЗаписей = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
НЗ = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НЗ.Прочитать();
ТЗ = НЗ.Выгрузить();
Для Каждого Запись Из НаборыЗаписей Цикл
    НайденныеСтроки = ТЗ.НайтиСтроки(Новый Структура("Период, Валюта", Запись.Значение["Период"], Запись.Значение["Валюта"]));
    Если НайденныеСтроки.Количество() = 0 Тогда
        ТекСтрока = ТЗ.Добавить();
    Иначе
        ТекСтрока = НайденныеСтроки[0];
    КонецЕсли;
    ЗаполнитьЗначенияСвойств(ТекСтрока, Запись.Значение);
КонецЦикла;
НЗ.Загрузить(ТЗ);
НЗ.Записать();

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

Решение 2: Использование прокси-сервера или VPN

Если вы хотите сохранить стандартный функционал 1С, можно попытаться «обмануть» систему, обеспечив доступ через российский узел. Рассмотрим возможные шаги:

  1. Настройка прокси-сервера: Если в настройках конфигурации предусмотрено использование прокси для интернет-соединений, укажите там адрес российского прокси-сервера.
  2. VPN-туннелирование: Настройте VPN-соединение на уровне операционной системы сервера. Это позволит всему исходящему трафику от сервера 1С выглядеть так, будто он идет изнутри Российской Федерации.
  3. Использование стороннего ПО: Существуют утилиты, позволяющие принудительно направлять трафик конкретного процесса (в нашем случае — процесса сервера 1С:Предприятия) через прокси-сервер.

Важные рекомендации

При выборе стратегии решения проблемы помните о следующих моментах:

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

← На главную