Как загрузить и использовать классификатор иностранных банков в 1С?

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

При работе с международными контрагентами и осуществлении валютных платежей стандартного классификатора БИК РФ становится недостаточно. Возникает необходимость автоматизации ввода данных иностранных банков, чтобы избежать ошибок ручного ввода и обеспечить корректность формирования платежных поручений в системе SWIFT. Разберем подробно, где взять актуальные данные и как организовать их загрузку в 1С.

Источники данных: от официальных до бесплатных

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

  1. Глобальный реестр SWIFTRef. Это «золотой стандарт» в мире финансов. Организация SWIFT предоставляет справочники BIC Plus, которые содержат не только BIC-коды, но и адреса, коды филиалов и информацию о банках-корреспондентах. Это платный сервис, но он гарантирует максимальную достоверность. Данные обычно предоставляются в форматах XML или CSV, что идеально подходит для автоматизации.
  2. Открытые данные (Open Data) регуляторов. Если вас интересуют конкретные регионы (например, Европа), рассмотрим сайты центральных банков. Европейский центральный банк (ECB) публикует списки кредитных организаций (MFI). Также полезными будут ресурсы Deutsche Bundesbank (Германия) или национальные реестры стран Балтии и Польши. Часто эти данные доступны для скачивания в машиночитаемом виде.
  3. Справочники крупных банков. Некоторые банки предоставляют своим клиентам доступ к собственным справочникам через личные кабинеты или API. Например, в теме упоминался ресурс от Сбербанка, предоставляющий информацию о международных банках для участников их системы.
  4. Специализированные финансовые API. Существуют сервисы типа IBAN.com или Bank-codes. Они позволяют через HTTP-запросы получать информацию о банке по его коду. Это удобно для валидации «на лету», когда пользователь вводит реквизиты в карточку контрагента.

Технические нюансы: форматы счетов и идентификаторы

При загрузке классификатора важно понимать, что в разных странах используются разные системы идентификации. Проанализируем основные различия:

BIC (Bank Identifier Code) — это основной международный код. Однако внутри национальных систем часто требуются дополнительные реквизиты:

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

Реализация загрузки в 1С: пошаговый разбор

Рассмотрим ситуацию, когда мы получили файл с данными или используем API. Основная сложность часто заключается в объеме данных. Если выгрузка весит десятки гигабайт (как упоминалось в обсуждении), стандартные методы ПрочитатьXML() могут не подойти из-за нехватки памяти.

Для обработки больших объемов данных используем объект ЧтениеXML в последовательном режиме или ТекстовыйДокумент для CSV. Разберем пример логики загрузки через HTTPСоединение для работы с внешним API:


// Пример структуры функции для получения данных о банке по BIC
&НаСервере
Функция ПолучитьДанныеИностранногоБанка(Знач БикКод)
    
    // Настраиваем соединение с API провайдера данных
    Сервер = "api.example-bank-provider.com";
    Соединение = Новый HTTPСоединение(Сервер, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
    
    // Формируем запрос
    АдресЗапроса = "/v1/bank/" + БикКод + "?api_key=ВАШ_КЛЮЧ";
    Запрос = Новый HTTPЗапрос(АдресЗапроса);
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            // Читаем JSON ответ
            ЧтениеJSON = Новый ЧтениеJSON;
            ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
            ДанныеБанка = ПрочитатьJSON(ЧтениеJSON);
            ЧтениеJSON.Закрыть();
            Возврат ДанныеБанка;
        КонецЕсли;
    Исключение
        ЗаписьЖурналаРегистрации("ЗагрузкаБанка", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
    
    Возврат Неопределено;
КонецФункции

Оптимизация хранения данных в 1С

Выясним, как лучше хранить эти данные в системе. Не всегда целесообразно загружать миллионы записей всех банков мира в справочник Банки. Рассмотрим более эффективные стратегии:

  1. Загрузка «по требованию». В справочнике Банки хранятся только те организации, с которыми реально работают ваши контрагенты. При создании нового контрагента программируется кнопка «Найти банк по BIC», которая обращается к внешней базе (файлу или API) и создает элемент в справочнике Банки только при совпадении.
  2. Использование расширений. Если ваша конфигурация находится на поддержке, создайте расширение с отдельным справочником ВнешниеБанки, чтобы не загромождать основной классификатор БИК, предназначенный для РФ.
  3. Кэширование. Если вы используете парсинг сайтов регуляторов, обновляйте данные по расписанию через РегламентныеЗадания. Разберем ситуацию с часовыми поясами и кросс-курсами: при расчетах важно учитывать не только реквизиты, но и время проведения платежа (cut-off time) банка-получателя, что также можно хранить в дополнительных реквизитах справочника.

Важные предостережения

Юридический аспект: Проанализируем вопрос санкционных ограничений. При автоматической загрузке данных из бесплатных источников вы не получаете информацию о том, находится ли банк под санкциями. Профессиональные системы (типа тех, что предоставляет Dow Jones) включают эти сведения. Это критически важно для работы отдела валютного контроля.

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

Подводя итог, скажем: идеальное решение — это комбинация использования проверенного API для разовых запросов и периодическая актуализация ключевых европейских банков через открытые данные регуляторов. Это обеспечит баланс между стоимостью владения системой и актуальностью информации.

← На главную