Перевод номера банковского счета в стандарт IBAN для Украины

09.08.19

Учетные задачи - Банковские операции

Перевод номера банковского счета в стандарт IBAN (только для Украины). Функции для повторного использования и демо-обработка для платформы 1С 8.х. Тестировалась на платформе 1С 8.3.12.1529

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Перевод номера банковского счета в стандарт IBAN для Украины
.epf 7,07Kb
3 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Формат кода IBAN включает

  • 1—2 символы — код страны, где находится банк получателя (в соответствии со стандартом ISO 3166-1 alpha-2)
  • 3—4 символы — контрольное уникальное число IBAN, рассчитываемое по стандарту (ISO 7064)
  • 5—34 символы — Basic Bank Account Number (BBAN), базовый номер банковского счёта, включающий, как минимум, сам номер счёта, так и признак банка получателя (в том числе код филиала банка). Длина и содержание этой части IBAN зависят от выбора конкретной страны, но ограничиваются максимум 30 знаками.

Источник: https://ru.wikipedia.org/wiki/IBAN

Для Украины длина номера IBAN 29 символов

Предпочтительный алгоритм:
   1. Проверить, что общая длина IBAN является правильной согласно стране. Если нет, IBAN является недействительным.
   2. Замените две контрольные цифры на 00 (например, UA00 для Украины).
   3. Переместить четыре начальных символа в конец строки.
   4. Заменить буквы в строке цифрами, расширив строку при необходимости, чтобы A или a = 10, B или b = 11 и Z или z = 35. Таким образом, каждый алфавитный символ заменяется 2 цифрами
   5. Преобразовать строку в целое число (то есть игнорировать начальные нули).
   6. Вычислить mod-97 из нового числа, в результате чего получится остаток.
   7. Вычислить остаток от 97; полученный результат отнять от 98 и использовать результат для двух контрольных цифр. Если результатом является однозначное число, добавьте к нему начальный 0, чтобы сделать двузначное число.

Поэтапный расчет D mod 97 может быть выполнен разными способами. Один из таких способов заключается в следующем:

   1. Начиная с самой левой цифры D, составьте число, используя первые 9 цифр, и назовите его N.
   2. Рассчитать N мод 97.
   3. Создайте новый 9-значный N путем объединения вышеуказанного результата (шаг 2) со следующими 7 цифрами D. Если в D осталось менее 7 цифр, но хотя бы один, то создайте новый N, который будет иметь менее 9 цифры из вышеприведенного результата (шаг 2), за которыми следуют оставшиеся цифры D
    4. Повторяйте шаги 2–3, пока все цифры D не будут обработаны

Результатом окончательного расчета на шаге 2 будет D mod 97 = N mod 97.

 

пример алгоритма mod 97

В этом примере вышеупомянутый алгоритм для D mod 97 будет применен к D = 3214282912345698765432161182. (Цифры имеют цветовую кодировку, чтобы помочь описанию ниже.) Если результат равен единице, IBAN, соответствующий D, проходит проверку контрольной цифры.

    Построить N из первых 9 цифр D

        N = 321428291

    Рассчитать N мод 97 = 70
    Создайте новый 9-значный N из вышеуказанного результата (шаг 2), а затем следующие 7 цифр D.

        N = 702345698

    Рассчитать N мод 97 = 29
    Создайте новый 9-значный N из приведенного выше результата (шаг 4), а затем следующие 7 цифр D.

        N = 297654321

    Рассчитать N мод 97 = 24
    Создайте новый N из приведенного выше результата (шаг 6), а затем оставшиеся 5 цифр D.

        N = 2461182

    Рассчитать N мод 97 = 1

Начиная с шага 8, конечный результат - D mod 97 = 1

Для проверки генерации IBAN можно использовать ряд сайтов, например, https://bank.codes/iban/generate/ukraine/

Программный код обработки:

Функция ПеревестиБуквыВЦифрыДляМсчета(знак)
	Если найти("0123456789", "" + знак)>0 тогда 
		//это изначально цифра
		возврат "" + знак;
	Иначе
		//буква
		возврат "" + (10 + (кодсимвола(нрег(знак),1)-кодсимвола("a",1)));
	КонецЕсли;	
КонецФункции	

Функция КонтрольнаяСумма(кс)
	Если стрдлина(кс)<>29 Тогда
		Сообщить ("номер счета не для Украины");
		Возврат	"00";
	КонецЕсли;	
	//переставляем UA00 в конец
	кс = сред(кс, 5, 25) + сред(кс,1,4);
	кс2 = "";
	для сч = 1 по 29 цикл
		кс2 = кс2 + ПеревестиБуквыВЦифрыДляМсчета(сред(кс,сч, 1));
	конеццикла;	
	//алгоритм mod 97
	для сч = 0 по 10 цикл
		кс2 = ("" + (число(сред(кс2,1,9)) % 97) + сред(кс2, 10));
	конеццикла;
	возврат прав("00"+(98-число(кс2)),2);
КонецФункции	

Функция СчетВМеждународномФормате(счет, мфо)
	счет_ = сокрлп(счет);
	мфо_ = сокрлп(мфо);
	длина_счет = стрдлина(счет_);
	длина_мфо = стрдлина(мфо_);
	длинанулей = 29 - 2 - 2 - длина_мфо -длина_счет;
	кс = КонтрольнаяСумма("UA00" + мфо_ + прав("00000000000000000000000000000", длинанулей) + счет_);
	возврат "UA" + кс + мфо_ + прав("00000000000000000000000000000", длинанулей) + счет_;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
	IBAN = СчетВМеждународномФормате(СтарыйСчет,мфо);
КонецПроцедуры

 

Вступайте в нашу телеграмм-группу Инфостарт

IBAN контрольная сумма

См. также

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

19520 руб.

21.03.2023    21401    151    27    

118

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Мастера заполнения Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки, и оно автоматически применится при загрузке выписки, экономя ваше время (Можно настроить отбор по любому реквизиту или по регулярному выражению). Решение позволяет автоматически заполнять расшифровку платежа, исключать загрузку ненужных документов (дублей) из банка, заполнять комиссию за эквайринг и многое другое. Вам не нужно доплачивать за алгоритмы, они уже включены в решение. Автоматическая обработка применяется при загрузке данных как из файлов клиент банка, так и через DirectBank. Доступен AI чат бот который умеет консультировать по функционалу решения.

15250 руб.

20.12.2024    14176    61    27    

57

Банковские операции Обмен с интернет-банком Бухгалтер 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Беларусь Россия Бухгалтерский учет Платные (руб)

Типовая обработка "Клиент-банк" из конфигурации 1С "Бухгалтерия для Беларуси, редакция 2.1" корректно работает с выписками только банка "Дабрабыт", до 28.01.2019 "Москва-Минск". А бухгалтеру нужно работать и с другими банками и с другими конфигурациями. Для этого было разработано расширение, которое позволит решить данную проблему!

12200 руб.

10.10.2017    41927    95    49    

80

Банковские операции Обмен с ГосИС Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Обработка для выгрузки платежных поручений из конфигураций 1С:БП 3.0 и ERP/КА в банк Департамента финансов г. Москвы. Поддерживается выгрузка в текстовом и XML-форматах.

19520 руб.

15.06.2020    26007    85    42    

61

Обмен с интернет-банком Банковские операции Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Модуль представляет собой комплексную автоматизацию обмена данными 1С с банком для БП 3.0, ERP 2.4, ERP 2.5. Выписка клиент-банка загружается и обрабатывается по Вашим правилам. Заполнение реквизитов документов, анализ назначения платежа. Работа с клиент банком не отличается от типового варианта, а документы автоматически заполняются так, как нужно вам. Дополнительная обработка, работающая совместно с основным расширением позволяет подключать собственные произвольные алгоритмы.

20740 руб.

03.04.2013    131776    266    378    

170

Банковские операции Взаиморасчеты Оборотно-сальдовая ведомость, Анализ счета Анализ продаж Бухгалтер Пользователь 1С 8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

«Умные отчеты в один клик» – инструмент, от которого невозможно отказаться! Получайте отчеты «ОСВ по счету» и «Анализ субконто» мгновенно, прямо из документа – все параметры подставляются автоматически. Незаменимо в ежедневной работе бухгалтера: благодаря простоте получения отчетов вы будете чаще проверять учет "оборотками", снижая риск ошибок. Экономьте время каждый день – используйте «Умные отчеты»!

8930 руб.

25.06.2025    2072    6    0    

8

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    2819    8    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. eact 20.08.19 10:39 Сейчас в теме
Автор, есть проверка генерации для 1С? (Проверка счета на корректность IBAN)
4. alur 22 10.09.19 16:38 Сейчас в теме
(1)условие проверки: число счета (с перекодированными символами) % 97 = 1
2. alexpot 6 20.08.19 19:37 Сейчас в теме
Номер можно проверить на сайте, например, https://bank.codes/iban/generate/ukraine/. В обработке только перевод старого номера счета в IBAN
3. alur 22 10.09.19 16:34 Сейчас в теме
Всё гораздо проще:
Функция ПолучитьНомерСчетаIBAN(Страна, МФО, РСчет)
	
	сРезультат = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(МФО, 6, "0", "Слева")
	+ СтроковыеФункцииКлиентСервер.ДополнитьСтроку(РСчет, 19, "0", "Слева");
	
	СтрокаСтраны = Формат(КодСимвола(Сред(Страна, 1, 1)) - 55, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=")
	+ Формат(КодСимвола(Сред(Страна, 2, 1)) - 55, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=");
	
	Если Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(сРезультат + СтрокаСтраны, Истина, Ложь) Тогда
		Возврат РСчет;
	КонецЕсли;
	
	ЧислоРасчета = Число(сРезультат + СтрокаСтраны);
	КонтрольнаяСумма = 98 - ЧислоРасчета * 100 % 97;
	СтрокаКС = Формат(КонтрольнаяСумма, "ЧЦ=2; ЧДЦ=0; ЧН=; ЧВН=; ЧГ=");
	
	сРезультат = Страна + СтрокаКС + сРезультат;
	
	Если УправлениеДенежнымиСредствами.НомерБанковскогоСчетаСоответствуетСтандартуIBAN(сРезультат) Тогда
		Возврат сРезультат;
	Иначе
		Возврат РСчет;
	КонецЕсли;
	
КонецФункции
Показать
5. eact 16.09.19 12:25 Сейчас в теме
Может есть у кого функция на проверку корректности номера счета стандарту IBAN по контрольной!!! сумме (не просто на количество символов и присутствие символов "UA")?
6. alur 22 16.09.19 13:35 Сейчас в теме
(5) как-то так:
Функция НомерБанковскогоСчетаСоответствуетСтандартуIBAN(сIBAN)
	
	сIBANРаскодированный = Сред(сIBAN, 5)
	+ Формат(КодСимвола(Сред(сIBAN, 1, 1)) - 55, "ЧЦ=2; ЧН=; ЧВН=")
	+ Формат(КодСимвола(Сред(сIBAN, 2, 1)) - 55, "ЧЦ=2; ЧН=; ЧВН=")
	+ Сред(сIBAN, 3, 2);
	
	Если СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(сIBANРаскодированный) Тогда
		Возврат сIBANРаскодированный % 97 = 1;
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
КонецФункции
Показать
Для отправки сообщения требуется регистрация/авторизация