При работе с международными контрагентами и осуществлении валютных платежей стандартного классификатора БИК РФ становится недостаточно. Возникает необходимость автоматизации ввода данных иностранных банков, чтобы избежать ошибок ручного ввода и обеспечить корректность формирования платежных поручений в системе SWIFT. Разберем подробно, где взять актуальные данные и как организовать их загрузку в 1С.
Для начала проанализируем, откуда можно получить информацию о банках мира. Выбор источника зависит от бюджета проекта и требований к точности данных.
XML или CSV, что идеально подходит для автоматизации.IBAN.com или Bank-codes. Они позволяют через HTTP-запросы получать информацию о банке по его коду. Это удобно для валидации «на лету», когда пользователь вводит реквизиты в карточку контрагента.При загрузке классификатора важно понимать, что в разных странах используются разные системы идентификации. Проанализируем основные различия:
BIC (Bank Identifier Code) — это основной международный код. Однако внутри национальных систем часто требуются дополнительные реквизиты:
Также следует учитывать формат IBAN. Это международный номер банковского счета, который уже содержит в себе информацию о банке. Программная логика в 1С может быть построена таким образом, чтобы при вводе IBAN система автоматически определяла банк, используя таблицу соответствия первых символов номера счета и кодов банков.
Рассмотрим ситуацию, когда мы получили файл с данными или используем 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.Закрыть();
Возврат ДанныеБанка;
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации("ЗагрузкаБанка", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
Возврат Неопределено;
КонецФункции
Выясним, как лучше хранить эти данные в системе. Не всегда целесообразно загружать миллионы записей всех банков мира в справочник Банки. Рассмотрим более эффективные стратегии:
Банки хранятся только те организации, с которыми реально работают ваши контрагенты. При создании нового контрагента программируется кнопка «Найти банк по BIC», которая обращается к внешней базе (файлу или API) и создает элемент в справочнике Банки только при совпадении.ВнешниеБанки, чтобы не загромождать основной классификатор БИК, предназначенный для РФ.РегламентныеЗадания. Разберем ситуацию с часовыми поясами и кросс-курсами: при расчетах важно учитывать не только реквизиты, но и время проведения платежа (cut-off time) банка-получателя, что также можно хранить в дополнительных реквизитах справочника.Юридический аспект: Проанализируем вопрос санкционных ограничений. При автоматической загрузке данных из бесплатных источников вы не получаете информацию о том, находится ли банк под санкциями. Профессиональные системы (типа тех, что предоставляет Dow Jones) включают эти сведения. Это критически важно для работы отдела валютного контроля.
Технические ограничения: Как показала практика участников обсуждения, файлы на 38 Гб могут «повесить» систему. Если вы решите парсить сайты центральных банков самостоятельно, используйте ЗаписьJSON и ЧтениеJSON с потоковой обработкой, чтобы минимизировать нагрузку на оперативную память сервера 1С.
Подводя итог, скажем: идеальное решение — это комбинация использования проверенного API для разовых запросов и периодическая актуализация ключевых европейских банков через открытые данные регуляторов. Это обеспечит баланс между стоимостью владения системой и актуальностью информации.